From c7bb955eb05b45a89c1d409ec292efa7de7e1173 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 1 Feb 2025 21:18:01 -0800 Subject: [PATCH 001/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@d4a95784 Experimental annotation changes (#12028) PaperMC/Paper@5bcfb12a Fix activation range config and water animal status (#12047) PaperMC/Paper@e0711af5 Deprecate UnsafeValues#getSpawnEggLayerColor (#12041) --- .editorconfig | 22 +++++++++++----------- CONTRIBUTING.md | 3 ++- gradle.properties | 2 +- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/.editorconfig b/.editorconfig index 98a181da1..500d22627 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,32 +1,32 @@ [*] -charset=utf-8 -end_of_line=lf -insert_final_newline=true -indent_style=space -indent_size=4 +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 ij_any_block_comment_add_space = false ij_any_block_comment_at_first_column = false ij_any_line_comment_at_first_column = false ij_any_line_comment_add_space = true [*.tiny] -indent_style=tab +indent_style = tab [*.bat] -end_of_line=crlf +end_of_line = crlf [*.yml] -indent_size=2 +indent_size = 2 [*.patch] -trim_trailing_whitespace=false +trim_trailing_whitespace = false [*.java] ij_continuation_indent_size = 4 ij_java_class_count_to_use_import_on_demand = 999999 ij_java_insert_inner_class_imports = false ij_java_names_count_to_use_import_on_demand = 999999 -ij_java_imports_layout = *,|,$* +ij_java_imports_layout = *, |, $* ij_java_generate_final_locals = true ij_java_generate_final_parameters = true ij_java_method_parameters_new_line_after_left_paren = true @@ -40,5 +40,5 @@ ij_java_use_fq_class_names = true [purpur-server/src/minecraft/resources/data/**/*.json] indent_size = 2 -[paper-api/src/generated/**/*.java] +[paper-api/src/generated/java/**/*.java] ij_java_imports_layout = $*,|,* diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2d4c58015..a64260d7b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -243,7 +243,8 @@ required. with `// Purpur end - `. - One-line changes should have `// Purpur - ` at the end of the line. -> [!NOTE] These comments are incredibly important to be able to keep track of changes +> [!NOTE] +> These comments are incredibly important to be able to keep track of changes > across files and to remember what they are for, even a decade into the future. Here's an example of how to mark changes by Purpur: diff --git a/gradle.properties b/gradle.properties index c9076a35f..117ceb738 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 54b2e9d9738ce32e2f415c321f20e3fc07063c14 +paperCommit = e0711af5d5b485ff507f5168c8c146689941421d org.gradle.configuration-cache = true org.gradle.caching = true From 2fe4cf18f5f23fa4b78b8a493ef5e287460c4f1d Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 2 Feb 2025 00:32:50 -0800 Subject: [PATCH 002/289] [ci skip] fix indentation --- .../server/network/ServerGamePacketListenerImpl.java.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index 8d25c5e92..56abf45e6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -210,7 +210,7 @@ boolean cancelled; if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) { -+ if (this.player.gameMode.shiftClickMended(itemInHand)) return; // Purpur - Shift right click to use exp for mending ++ if (this.player.gameMode.shiftClickMended(itemInHand)) return; // Purpur - Shift right click to use exp for mending org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { From 65637fa648b0966dcdee5e968c1d3fd83a000310 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 2 Feb 2025 18:13:42 -0800 Subject: [PATCH 003/289] fix(mobs/bee): Set `takes-damage-from-water` back to false by default, closes #1639 Also migrates the value to false for old configs. Users who previously set this to true will need to re-enable it. --- .../src/main/java/org/purpurmc/purpur/PurpurConfig.java | 4 ++-- .../src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java index 959641751..643da58e5 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -74,8 +74,8 @@ public class PurpurConfig { commands = new HashMap<>(); commands.put("purpur", new PurpurCommand("purpur")); - version = getInt("config-version", 39); - set("config-version", 39); + version = getInt("config-version", 40); + set("config-version", 40); readConfig(PurpurConfig.class, null); diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 529474df7..f77556b6d 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1229,7 +1229,7 @@ public class PurpurWorldConfig { public double beeMaxHealth = 10.0D; public double beeScale = 1.0D; public int beeBreedingTicks = 6000; - public boolean beeTakeDamageFromWater = true; + public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -1247,6 +1247,9 @@ public class PurpurWorldConfig { beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); + if (PurpurConfig.version < 40) { + set("mobs.bee.takes-damage-from-water", false); + } 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); From 16cfd04b6c85b49686d021b2e5f9e26a0576a9b5 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 2 Feb 2025 18:22:29 -0800 Subject: [PATCH 004/289] feat(mobs/bee): Add `can-instantly-start-drowning` option, defaults to `true` If enabled, this will stop bees from instantly taking damage the moment they begin touching water. Bees can still "drown" with this option disabled when they run out of air. Relevant: #1639 --- ...oggle-for-water-sensitive-mob-damage.patch | 28 ++++++++++--------- .../0021-Mobs-always-drop-experience.patch | 28 +++++++++---------- .../world/entity/animal/Bee.java.patch | 18 ++++++++++++ .../purpurmc/purpur/PurpurWorldConfig.java | 2 ++ 4 files changed, 49 insertions(+), 27 deletions(-) diff --git a/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch b/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch index 070dfd2e2..d470623fe 100644 --- a/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch +++ b/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch @@ -41,26 +41,28 @@ index ecbec552e5cd1935f57872d2fb502d3e9743e3d8..4fa526496265a85b637136f0fd0692ef public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index 6f0b927101f9b5a07a0b6749557f6b0ebf35ae64..d4025093d82cca0c5923058dc0e35c91ae7b40e3 100644 +index 31854506641874bed3306b9688d71e5c47fd9e35..950988bf89f36e8555605d370bb039fe89c66fc7 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -177,7 +177,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { // Paper end - Fix MC-167279 this.lookControl = new Bee.BeeLookControl(this); this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F); -- this.setPathfindingMalus(PathType.WATER, -1.0F); -+ if (isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - Toggle for water sensitive mob damage +- if (this.level().purpurConfig.beeCanInstantlyStartDrowning) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - bee can instantly start drowning in water option ++ if (this.level().purpurConfig.beeCanInstantlyStartDrowning || isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - bee can instantly start drowning in water option // Purpur - Toggle for water sensitive mob damage this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F); this.setPathfindingMalus(PathType.COCOA, -1.0F); this.setPathfindingMalus(PathType.FENCE, -1.0F); -@@ -487,6 +487,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -487,6 +487,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } // Purpur end - Make entity breeding times configurable ++ // Purpur start - Toggle for water sensitive mob damage + @Override + public boolean isSensitiveToWater() { + return this.level().purpurConfig.beeTakeDamageFromWater; + } ++ // Purpur end - Toggle for water sensitive mob damage + @Override public int getRemainingPersistentAngerTime() { @@ -210,7 +212,7 @@ index a64b609bf5ce38a252bfa1bcff869f88e14389b5..5e9795f447e88a42909730d383eaa36a public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index c76dff55f28f63be407c438f0c6ed634185d7b6b..4a95ec11da4399282f69630ac933b7e22b4ca550 100644 +index b06697fd64a8962133f0324b2c03b9e9b4f32086..91677415ba66c8de448a26ac4e6afe6bbbad4fa8 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java @@ -94,6 +94,13 @@ public class Ocelot extends Animal { @@ -385,7 +387,7 @@ index 6ee73b798ab306f7c828c9f06ca5b1a96bd96139..dbf3e4db27477afada86e02063a486f7 @Override diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index 739b9df3c1c39a3207caa42d6aed7f4ff1741d42..a43cf8ba7a4d5afb23401ccd07d451b35ed80d58 100644 +index 0391ff403391bfe13b907a8b1aae9057474f695b..e9ba9d84177e9c27b9c7c5e6274dfb031f6643c7 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java @@ -99,6 +99,13 @@ public class Squid extends AgeableWaterCreature { @@ -439,7 +441,7 @@ index edbccb7ca27aa8a1917eb8b35b3ba8600c91111a..cf297f766340b4ff8ecaf80a9a13b289 this.entityData.set(HOME_POS, homePos); } diff --git a/net/minecraft/world/entity/animal/Wolf.java b/net/minecraft/world/entity/animal/Wolf.java -index 136f2c43272e5a45e473b66656818ed88de1cff3..f2e2cee3fd4a8bdec0c8922170930f81c14dfb32 100644 +index 9d79946497cfc92ff11160b86d5064d86916af36..8b5eaabe77dcf8851b874b82a2d7f64180ac613b 100644 --- a/net/minecraft/world/entity/animal/Wolf.java +++ b/net/minecraft/world/entity/animal/Wolf.java @@ -217,6 +217,13 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index 98732a5014a1c8a91dbe79d070ce0b58daf1ba1c..5d12bc139c81ca342074c7c745635669020d0300 100644 +index 63446c874e7153dcfb99133145c8b5311d7d86cd..bb8c37c8348172947efe14d48ed9ae203409affa 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -139,6 +139,13 @@ public class Zombie extends Monster { @@ -1297,7 +1299,7 @@ index eb82252cd87797927e153974b9280b5eaa251080..2237681f298113bda0556699e19e880f return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index c301a89f032746487a4e993d920060450433f238..af6ae76248a9894efbecf9e94160f8d215f6ad85 100644 +index 017b54e0b8dec8996c90a3c6651867277dd516df..97e5bb0cc335b23211e78044919282bfabad26a5 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -278,6 +278,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1315,7 +1317,7 @@ index c301a89f032746487a4e993d920060450433f238..af6ae76248a9894efbecf9e94160f8d2 public Brain getBrain() { return (Brain)super.getBrain(); diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index f9755f36f7863b9742fe5b840a8130891ddff7c7..5a87c3c7aca38f3fe4a003b2075f43b0ae1cddea 100644 +index 4ba2921dd99f674344fe3371332c9b23365d3aa2..8046a2d640e7c4d59cb5b9c6dff3bf5f026c7153 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java @@ -107,6 +107,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch index 19c768b12..19907a4c1 100644 --- a/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch +++ b/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch @@ -41,12 +41,12 @@ index 4fa526496265a85b637136f0fd0692ef4f570ad6..4ac052a78841939a53dac2afb575cb11 public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index d4025093d82cca0c5923058dc0e35c91ae7b40e3..38c95287da10247b0627ce16ad4914232b5a6f06 100644 +index 950988bf89f36e8555605d370bb039fe89c66fc7..d5727999eb67ff30dbf47865d59452483338e170 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -487,6 +487,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -494,6 +494,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } - // Purpur end - Make entity breeding times configurable + // Purpur end - Toggle for water sensitive mob damage + // Purpur start - Mobs always drop experience + @Override @@ -56,8 +56,8 @@ index d4025093d82cca0c5923058dc0e35c91ae7b40e3..38c95287da10247b0627ce16ad491423 + // Purpur end - Mobs always drop experience + @Override - public boolean isSensitiveToWater() { - return this.level().purpurConfig.beeTakeDamageFromWater; + public int getRemainingPersistentAngerTime() { + return this.entityData.get(DATA_REMAINING_ANGER_TIME); diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java index b41ca04043e65f107edaebc49d398650898e35fb..edd796fd34e43d66a48104201d885756fdd968c3 100644 --- a/net/minecraft/world/entity/animal/Cat.java @@ -203,7 +203,7 @@ index 5e9795f447e88a42909730d383eaa36acfaf18f5..3bcd119757dfc579df790fcc8919a363 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index 4a95ec11da4399282f69630ac933b7e22b4ca550..797b2311d432b1f06f55956d1cc22283090c1e4f 100644 +index 91677415ba66c8de448a26ac4e6afe6bbbad4fa8..681f1256d8bbedc7731fd2906a7f439da4333552 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java @@ -101,6 +101,13 @@ public class Ocelot extends Animal { @@ -383,7 +383,7 @@ index dbf3e4db27477afada86e02063a486f7cec573b5..1b9d4562b73ecdf783ecdaf4f4eff903 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index a43cf8ba7a4d5afb23401ccd07d451b35ed80d58..b384e4973e4986480a41dfe128b944d5b70e71c4 100644 +index e9ba9d84177e9c27b9c7c5e6274dfb031f6643c7..0a103e6f3f6b0ec05c5d22b1258eb6e2f776e7dd 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java @@ -106,6 +106,13 @@ public class Squid extends AgeableWaterCreature { @@ -437,7 +437,7 @@ index cf297f766340b4ff8ecaf80a9a13b2899a9870e6..bc6acbc801e5b371859e731b84197363 this.entityData.set(HOME_POS, homePos); } diff --git a/net/minecraft/world/entity/animal/Wolf.java b/net/minecraft/world/entity/animal/Wolf.java -index f2e2cee3fd4a8bdec0c8922170930f81c14dfb32..59ffa6c246cc7f74b79b69bab4d5581f2f42448f 100644 +index 8b5eaabe77dcf8851b874b82a2d7f64180ac613b..ef6c0bf20ad18c050cdeb02ddd6c007dfcf1d6b3 100644 --- a/net/minecraft/world/entity/animal/Wolf.java +++ b/net/minecraft/world/entity/animal/Wolf.java @@ -224,6 +224,13 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index f8d41ce860c5f48ab9b5e4b79a554dab85d2ba9b..26b57ffdc08a851e4e5cbdeebcc19d62517ba9fa 100644 +index b1da45df27f02395d793e7eafe576f5f92aa3a7b..7af71c777dca26cd94b1807a2a77ea0d30e92976 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -147,6 +147,13 @@ public class Zombie extends Monster { @@ -1265,7 +1265,7 @@ index 2237681f298113bda0556699e19e880f4b04a853..4984b9864b63f92bc939b530253e871c return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index af6ae76248a9894efbecf9e94160f8d215f6ad85..92261f502de7b832845b6e6a12a091801096dc4d 100644 +index 97e5bb0cc335b23211e78044919282bfabad26a5..16fbe4e6521cd4f6baa8f5dd590da0fc749f6585 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -285,6 +285,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1283,7 +1283,7 @@ index af6ae76248a9894efbecf9e94160f8d215f6ad85..92261f502de7b832845b6e6a12a09180 public Brain getBrain() { return (Brain)super.getBrain(); diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 5a87c3c7aca38f3fe4a003b2075f43b0ae1cddea..63a83fb3b103b81dad26c353babfde2e35636f53 100644 +index 8046a2d640e7c4d59cb5b9c6dff3bf5f026c7153..c3fbcc7956a64d49466874776f257ba27f55f2a4 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java @@ -114,6 +114,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch index b25618ac3..5ee311366 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch @@ -1,5 +1,14 @@ --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java +@@ -163,7 +_,7 @@ + // Paper end - Fix MC-167279 + this.lookControl = new Bee.BeeLookControl(this); + this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F); +- this.setPathfindingMalus(PathType.WATER, -1.0F); ++ if (this.level().purpurConfig.beeCanInstantlyStartDrowning) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - bee can instantly start drowning in water option + this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F); + this.setPathfindingMalus(PathType.COCOA, -1.0F); + this.setPathfindingMalus(PathType.FENCE, -1.0F); @@ -365,7 +_,7 @@ } @@ -9,6 +18,15 @@ } public void setStayOutOfHiveCountdown(int stayOutOfHiveCountdown) { +@@ -388,7 +_,7 @@ + @Override + protected void customServerAiStep(ServerLevel level) { + boolean hasStung = this.hasStung(); +- if (this.isInWaterOrBubble()) { ++ if (this.level().purpurConfig.beeCanInstantlyStartDrowning && this.isInWaterOrBubble()) { // Purpur - bee can instantly start drowning in water option + this.underWaterTicks++; + } else { + this.underWaterTicks = 0; @@ -398,6 +_,7 @@ this.hurtServer(level, this.damageSources().drown(), 1.0F); } diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index f77556b6d..13d8dce80 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1230,6 +1230,7 @@ public class PurpurWorldConfig { public double beeScale = 1.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = false; + public boolean beeCanInstantlyStartDrowning = true; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -1253,6 +1254,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); + beeCanInstantlyStartDrowning = getBoolean("mobs.bee.can-instantly-start-drowning", beeCanInstantlyStartDrowning); beeAlwaysDropExp = getBoolean("mobs.bee.always-drop-exp", beeAlwaysDropExp); beeDiesAfterSting = getBoolean("mobs.bee.dies-after-sting", beeDiesAfterSting); } From 4f481858a32b9636fcd19f539f13fb03e1bbf443 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 2 Feb 2025 21:19:31 -0800 Subject: [PATCH 005/289] fix: correctly call force when sending particles --- .../sources/net/minecraft/world/item/BucketItem.java.patch | 2 +- .../java/org/purpurmc/purpur/entity/projectile/DolphinSpit.java | 2 +- .../org/purpurmc/purpur/entity/projectile/PhantomFlames.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch index 15d7ab056..a784ee1c9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch @@ -14,7 +14,7 @@ for (int i = 0; i < 8; i++) { - level.addParticle(ParticleTypes.LARGE_SMOKE, x + Math.random(), y + Math.random(), z + Math.random(), 0.0, 0.0, 0.0); -+ ((net.minecraft.server.level.ServerLevel) level).sendParticlesSource(null, ParticleTypes.LARGE_SMOKE, false, true, x + Math.random(), y + Math.random(), z + Math.random(), 1, 0.0D, 0.0D, 0.0D, 0.0D); // Purpur - Add allow water in end world option ++ ((net.minecraft.server.level.ServerLevel) level).sendParticlesSource(null, ParticleTypes.LARGE_SMOKE, true, false, x + Math.random(), y + Math.random(), z + Math.random(), 1, 0.0D, 0.0D, 0.0D, 0.0D); // Purpur - Add allow water in end world option } return true; diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/entity/projectile/DolphinSpit.java b/purpur-server/src/main/java/org/purpurmc/purpur/entity/projectile/DolphinSpit.java index 8ffacde04..e489b1698 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/entity/projectile/DolphinSpit.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/entity/projectile/DolphinSpit.java @@ -57,7 +57,7 @@ public class DolphinSpit extends LlamaSpit { Vec3 motDouble = mot.scale(2.0); for (int i = 0; i < 5; i++) { ((ServerLevel) level()).sendParticlesSource(null, ParticleTypes.BUBBLE, - false, true, + true, false, getX() + random.nextFloat() / 2 - 0.25F, getY() + random.nextFloat() / 2 - 0.25F, getZ() + random.nextFloat() / 2 - 0.25F, diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/entity/projectile/PhantomFlames.java b/purpur-server/src/main/java/org/purpurmc/purpur/entity/projectile/PhantomFlames.java index 580d8dc55..bac5eee2d 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/entity/projectile/PhantomFlames.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/entity/projectile/PhantomFlames.java @@ -59,7 +59,7 @@ public class PhantomFlames extends LlamaSpit { Vec3 motDouble = mot.scale(2.0); for (int i = 0; i < 5; i++) { ((ServerLevel) level()).sendParticlesSource(null, ParticleTypes.FLAME, - false, true, + true, false, getX() + random.nextFloat() / 2 - 0.25F, getY() + random.nextFloat() / 2 - 0.25F, getZ() + random.nextFloat() / 2 - 0.25F, From 36a18d54a767e121bf2dbf56086c7179fa8a1aea Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 3 Feb 2025 00:06:47 -0800 Subject: [PATCH 006/289] fix(mobs/ravager): add missing blocks to griefable list --- .../org/purpurmc/purpur/PurpurConfig.java | 4 +- .../purpurmc/purpur/PurpurWorldConfig.java | 47 ++++++++++++++----- 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java index 643da58e5..c4cce5eb0 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -74,8 +74,8 @@ public class PurpurConfig { commands = new HashMap<>(); commands.put("purpur", new PurpurCommand("purpur")); - version = getInt("config-version", 40); - set("config-version", 40); + version = getInt("config-version", 41); + set("config-version", 41); readConfig(PurpurConfig.class, null); diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 13d8dce80..1dd74216e 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2,6 +2,8 @@ package org.purpurmc.purpur; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; import java.util.function.Predicate; import java.util.logging.Level; import net.minecraft.core.registries.BuiltInRegistries; @@ -2513,18 +2515,39 @@ public class PurpurWorldConfig { ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater); - getList("mobs.ravager.griefable-blocks", new ArrayList(){{ - add("minecraft:oak_leaves"); - add("minecraft:spruce_leaves"); - add("minecraft:birch_leaves"); - add("minecraft:jungle_leaves"); - add("minecraft:acacia_leaves"); - add("minecraft:dark_oak_leaves"); - add("minecraft:beetroots"); - add("minecraft:carrots"); - add("minecraft:potatoes"); - add("minecraft:wheat"); - }}).forEach(key -> { + List defaultRavagerGriefableBlocks = List.of( + "minecraft:oak_leaves", + "minecraft:spruce_leaves", + "minecraft:birch_leaves", + "minecraft:jungle_leaves", + "minecraft:acacia_leaves", + "minecraft:cherry_leaves", + "minecraft:dark_oak_leaves", + "minecraft:pale_oak_leaves", + "minecraft:mangrove_leaves", + "minecraft:azalea_leaves", + "minecraft:flowering_azalea_leaves", + "minecraft:wheat", + "minecraft:carrots", + "minecraft:potatoes", + "minecraft:torchflower_crop", + "minecraft:pitcher_crop", + "minecraft:beetroots" + ); + if (PurpurConfig.version < 41) { + Set set = new HashSet<>(); + getList("mobs.ravager.griefable-blocks", defaultRavagerGriefableBlocks) + .forEach(key -> set.add(key.toString())); + set.add("minecraft:cherry_leaves"); + set.add("minecraft:pale_oak_leaves"); + set.add("minecraft:mangrove_leaves"); + set.add("minecraft:azalea_leaves"); + set.add("minecraft:flowering_azalea_leaves"); + set.add("minecraft:torchflower_crop"); + set.add("minecraft:pitcher_crop"); + set("mobs.ravager.griefable-blocks", new ArrayList<>(set)); + } + getList("mobs.ravager.griefable-blocks", defaultRavagerGriefableBlocks).forEach(key -> { Block block = BuiltInRegistries.BLOCK.getValue(ResourceLocation.parse(key.toString())); if (!block.defaultBlockState().isAir()) { ravagerGriefableBlocks.add(block); From fdc28eed6b44bbd91cf255ef87ef323240b83f02 Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 4 Feb 2025 16:42:14 -0800 Subject: [PATCH 007/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@8927091a Do not record movement for vehicles/players unaffected by blocks PaperMC/Paper@5395ae37 Fix composter block setting bukkit owner twice (#12058) PaperMC/Paper@742968e0 [ci/skip] Increase outdated build delay to two weeks (#12063) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 117ceb738..546df429f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = e0711af5d5b485ff507f5168c8c146689941421d +paperCommit = 742968e078744a9d9fea35dc601cb6fecf05d889 org.gradle.configuration-cache = true org.gradle.caching = true From d8aadde1f82e96842287fc3cf4c67032bdea1519 Mon Sep 17 00:00:00 2001 From: z5tm <25470123+z5tm@users.noreply.github.com> Date: Thu, 6 Feb 2025 14:07:02 -0600 Subject: [PATCH 008/289] [ci skip] Update README.md (#1642) Co-authored-by: granny --- README.md | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index f8cce85a3..75cf3f07f 100644 --- a/README.md +++ b/README.md @@ -94,28 +94,23 @@ First, clone this repository. Do not download it. Then run the following command in the root directory: ``` -./gradlew applyPatches +./gradlew applyAllPatches ``` The project is now ready for use in your IDE. #### Creating a patch -Patches are effectively just commits in either `Purpur-API` or `Purpur-Server`. -To create one, just add a commit to either repo and run `./gradlew rebuildPatches`, and a -patch will be placed in the patches folder. Modifying commits will also modify its -corresponding patch file. - -See [CONTRIBUTING.md](CONTRIBUTING.md) for more detailed information. +See [CONTRIBUTING.md](CONTRIBUTING.md). #### Compiling 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`. +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 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`. +To install the `purpur-api` and `purpur` dependencies to your local Maven repo, run `./gradlew publishToMavenLocal`. The compiled purpurclip jar will be in `purpur-server/build/libs`. Special Thanks To: ------------- From 9680ad8e578abc81fd92f1bb2b30357eab103057 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 6 Feb 2025 14:07:50 -0800 Subject: [PATCH 009/289] [ci skip] clean up unsafe enchants diff --- .../world/inventory/AnvilMenu.java.patch | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch index 71cd41ca4..f97d7fb8e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch @@ -64,7 +64,7 @@ ItemStack itemStack = item.copy(); ItemStack item1 = this.inputSlots.getItem(1); ItemEnchantments.Mutable mutable = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(itemStack)); -@@ -191,23 +_,36 @@ +@@ -191,23 +_,34 @@ int intValue = entry.getIntValue(); intValue = level == intValue ? intValue + 1 : Math.max(intValue, level); Enchantment enchantment = holder.value(); @@ -77,25 +77,21 @@ canEnchant = true; } -- for (Holder holder1 : mutable.keySet()) { -+ // Purpur start - Config to allow unsafe enchants -+ java.util.Iterator> mutableIterator = mutable.keySet().iterator(); -+ while (mutableIterator.hasNext()) { -+ Holder holder1 = mutableIterator.next(); -+ // Purpur end - Config to allow unsafe enchants ++ java.util.Set> removedEnchantments = new java.util.HashSet<>(); // Purpur - Config to allow unsafe enchants + for (Holder holder1 : mutable.keySet()) { if (!holder1.equals(holder) && !Enchantment.areCompatible(holder, holder1)) { - canEnchant = false; -- i++; -+ canEnchant1 = this.canDoUnsafeEnchants || org.purpurmc.purpur.PurpurConfig.allowIncompatibleEnchants; // Purpur - Anvil API // Purpur - flag3 -> canEnchant1 - Config to allow unsafe enchants ++ canEnchant1 = this.canDoUnsafeEnchants || org.purpurmc.purpur.PurpurConfig.allowIncompatibleEnchants; // Purpur - Anvil API // Purpur - canEnchant -> canEnchant1 - Config to allow unsafe enchants + // Purpur start - Config to allow unsafe enchants + if (!canEnchant1 && org.purpurmc.purpur.PurpurConfig.replaceIncompatibleEnchants) { -+ mutableIterator.remove(); // replace current enchant with the incompatible one trying to be applied // TODO: is this needed? ++ removedEnchantments.add(holder1); + canEnchant1 = true; + } + // Purpur end - Config to allow unsafe enchants -+ ++i; + i++; } } ++ mutable.removeIf(removedEnchantments::contains); // Purpur - Config to allow unsafe enchants - if (!canEnchant) { + if (!canEnchant || !canEnchant1) { // Purpur - Config to allow unsafe enchants From 71f219d84d5787e5e2944f639ecea2da808aa7fe Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 6 Feb 2025 14:25:42 -0800 Subject: [PATCH 010/289] missing diff in daylight api patch --- ...019-API-for-any-mob-to-burn-daylight.patch | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch index 82e4c0a82..f3d28d545 100644 --- a/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0019-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/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 62a38ecedbd579b32a8fd9cff5a433bfe635fc62..8473a7d9af9d83e97387ddf4cc50f6ad22730def 100644 +index 4037d6445216bd16c778e4080e8c836400a35d96..95178c3a1de870709ea9d15a7d00c870d2edebff 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -530,6 +530,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -213,7 +213,7 @@ index 31eef2869945d9de565d627cac3fc1a5db380a2a..e618e716cb5ff3a3c5d284e985455694 @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 32b7c34d3c68dcfa936b628b2d038524204129a3..0ee817699fffbb929011465029182cc56befc30c 100644 +index 32b7c34d3c68dcfa936b628b2d038524204129a3..41ae39349c6f7e6c5d0187257a72782c5dc4c8eb 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -60,6 +60,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -241,15 +241,24 @@ index 32b7c34d3c68dcfa936b628b2d038524204129a3..0ee817699fffbb929011465029182cc5 @Override public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; -@@ -261,6 +272,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -261,15 +272,7 @@ public class Phantom extends FlyingMob implements Enemy { @Override public void aiStep() { +- // Purpur start - Phantoms burn in light +- 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 +- // Purpur end - Phantoms burn in light +- if (getRider() == null || !this.isControllable()) // Purpur - Ridables +- this.igniteForSeconds(8.0F); +- } +- + // Purpur - implemented in LivingEntity; moved down to shouldBurnInDay() - API for any mob to burn daylight - // Purpur start - Phantoms burn in light - 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; -@@ -299,7 +311,7 @@ public class Phantom extends FlyingMob implements Enemy { + super.aiStep(); + } + +@@ -299,7 +302,7 @@ public class Phantom extends FlyingMob implements Enemy { if (compound.hasUUID("Paper.SpawningEntity")) { this.spawningEntity = compound.getUUID("Paper.SpawningEntity"); } @@ -258,7 +267,7 @@ index 32b7c34d3c68dcfa936b628b2d038524204129a3..0ee817699fffbb929011465029182cc5 this.shouldBurnInDay = compound.getBoolean("Paper.ShouldBurnInDay"); } // Paper end -@@ -316,7 +328,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -316,7 +319,7 @@ public class Phantom extends FlyingMob implements Enemy { if (this.spawningEntity != null) { compound.putUUID("Paper.SpawningEntity", this.spawningEntity); } From c038d785dc09559ae9629a4e7bc4a2c09ff2d0ec Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 8 Feb 2025 18:18:30 -0800 Subject: [PATCH 011/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@597dcfff Add support for lz4 (#12053) PaperMC/Paper@53ae5c95 Make Sittable interface extend Entity (#12016) PaperMC/Paper@786ddf53 Default piston block entity direction to DOWN (#12039) PaperMC/Paper@cb6c57e0 Fix Squid and Dolphin spawn height (#12045) PaperMC/Paper@51acc802 Prevent duplicate raider in RaidSpawnWaveEvent list (#12040) PaperMC/Paper@61312fdb Switch to jspecify annotations for Player (#12042) PaperMC/Paper@1a04e96a Fix EntityBreedEvent cancellation (#12046) PaperMC/Paper@eff617b8 [ci/skip] Deprecate Server#setSpawnRadius (#12024) --- gradle.properties | 2 +- .../features/0002-Purpur-config-files.patch | 4 +- .../main/java/org/bukkit/Bukkit.java.patch | 2 +- .../java/org/bukkit/OfflinePlayer.java.patch | 30 +++++++------- .../main/java/org/bukkit/Server.java.patch | 2 +- .../java/org/bukkit/entity/Player.java.patch | 22 +++++------ ...e-entity-breeding-times-configurable.patch | 39 ++++++++++--------- ...oggle-for-water-sensitive-mob-damage.patch | 14 +++---- .../0021-Mobs-always-drop-experience.patch | 16 ++++---- .../bukkit/craftbukkit/CraftServer.java.patch | 6 +-- 10 files changed, 68 insertions(+), 69 deletions(-) diff --git a/gradle.properties b/gradle.properties index 546df429f..5bfe0d38e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 742968e078744a9d9fea35dc601cb6fecf05d889 +paperCommit = eff617b8f886d81b91d74b9b0ee9951375e73425 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch b/purpur-api/paper-patches/features/0002-Purpur-config-files.patch index e3535a398..464b19132 100644 --- a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch +++ b/purpur-api/paper-patches/features/0002-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 365368983a25f7ccbd3c8b7b572a5173a4c868a0..594bcedd823acc87ed429ad8ef17b66e9dc15beb 100644 +index 7d5a3f8fe257000b559d64bc045b1e4a14bb295d..78637a4f9650c1dd7ccc94bbfeb1fac048aa7f69 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2330,6 +2330,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2334,6 +2334,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch index 7bdf2cf76..b00a8e9a2 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2980,4 +_,133 @@ +@@ -2984,4 +_,133 @@ public static Server.Spigot spigot() { return server.spigot(); } diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch index 5048818d2..4abee8d53 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch @@ -1,8 +1,8 @@ --- a/src/main/java/org/bukkit/OfflinePlayer.java +++ b/src/main/java/org/bukkit/OfflinePlayer.java -@@ -573,4 +_,106 @@ +@@ -567,4 +_,104 @@ @Override - io.papermc.paper.persistence.@NotNull PersistentDataContainerView getPersistentDataContainer(); + io.papermc.paper.persistence.PersistentDataContainerView getPersistentDataContainer(); // Paper end - add pdc to offline player + + // Purpur start - OfflinePlayer API @@ -12,7 +12,7 @@ + * + * @return True if the player is allowed to fly. + */ -+ public boolean getAllowFlight(); ++ boolean getAllowFlight(); + + /** + * Sets if the OfflinePlayer is allowed to fly via jump key double-tap like in @@ -20,21 +20,21 @@ + * + * @param flight If flight should be allowed. + */ -+ public void setAllowFlight(boolean flight); ++ void setAllowFlight(boolean flight); + + /** + * Checks to see if this player is currently flying or not. + * + * @return True if the player is flying, else false. + */ -+ public boolean isFlying(); ++ boolean isFlying(); + + /** + * Makes this player start or stop flying. + * + * @param value True to fly. + */ -+ public void setFlying(boolean value); ++ void setFlying(boolean value); + + /** + * Sets the speed at which a client will fly. Negative values indicate @@ -44,7 +44,7 @@ + * @throws IllegalArgumentException If new speed is less than -1 or + * greater than 1 + */ -+ public void setFlySpeed(float value) throws IllegalArgumentException; ++ void setFlySpeed(float value) throws IllegalArgumentException; + + /** + * Sets the speed at which a client will walk. Negative values indicate @@ -54,21 +54,21 @@ + * @throws IllegalArgumentException If new speed is less than -1 or + * greater than 1 + */ -+ public void setWalkSpeed(float value) throws IllegalArgumentException; ++ void setWalkSpeed(float value) throws IllegalArgumentException; + + /** + * Gets the current allowed speed that a client can fly. + * + * @return The current allowed speed, from -1 to 1 + */ -+ public float getFlySpeed(); ++ float getFlySpeed(); + + /** + * Gets the current allowed speed that a client can walk. + * + * @return The current allowed speed, from -1 to 1 + */ -+ public float getWalkSpeed(); ++ float getWalkSpeed(); + + /** + * Sets OfflinePlayer's location. If player is online, it falls back to the Player#teleport implementation. @@ -76,7 +76,7 @@ + * @param destination + * @return true if teleportation was successful + */ -+ public boolean teleportOffline(@NotNull org.bukkit.Location destination); ++ boolean teleportOffline(org.bukkit.Location destination); + + /** + * Sets OfflinePlayer's location. If player is online, it falls back to the Player#teleport implementation. @@ -85,7 +85,7 @@ + * @param cause Teleport cause used if player is online + * @return true if teleportation was successful + */ -+ public boolean teleportOffline(@NotNull org.bukkit.Location destination, @NotNull org.bukkit.event.player.PlayerTeleportEvent.TeleportCause cause); ++ boolean teleportOffline(org.bukkit.Location destination, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause cause); + + /** + * Sets OfflinePlayer's location. If player is online, it falls back to the Player#teleportAsync implementation. @@ -93,8 +93,7 @@ + * @param destination + * @return true if teleportation successful + */ -+ @NotNull -+ public java.util.concurrent.CompletableFuture teleportOfflineAsync(@NotNull Location destination); ++ java.util.concurrent.CompletableFuture teleportOfflineAsync(Location destination); + + /** + * Sets OfflinePlayer's location. If player is online, it falls back to the Player#teleportAsync implementation. @@ -103,7 +102,6 @@ + * @param cause Teleport cause used if player is online + * @return true if teleportation successful + */ -+ @NotNull -+ public java.util.concurrent.CompletableFuture teleportOfflineAsync(@NotNull Location destination, @NotNull org.bukkit.event.player.PlayerTeleportEvent.TeleportCause cause); ++ java.util.concurrent.CompletableFuture teleportOfflineAsync(Location destination, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause cause); + // Purpur end - OfflinePlayer API } diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch index b149d0c27..79f8d8411 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2654,4 +_,111 @@ +@@ -2658,4 +_,111 @@ */ void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value); // Paper end - API to check if the server is sleeping diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch index efdb19897..ed10b708d 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch @@ -1,9 +1,9 @@ --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3928,4 +_,123 @@ +@@ -3902,4 +_,123 @@ * @return the result of this method, holding leftovers and spawned items. */ - @NotNull PlayerGiveResult give(@NotNull Collection<@NotNull ItemStack> items, boolean dropIfFull); + PlayerGiveResult give(Collection items, boolean dropIfFull); + + // Purpur start + /** @@ -11,7 +11,7 @@ + * + * @return true if player uses PurpurClient + */ -+ public boolean usesPurpurClient(); ++ boolean usesPurpurClient(); + + /** + * Check if player is AFK @@ -40,7 +40,7 @@ + * @param location Location to highlight + * @param duration Duration for highlight to show in milliseconds + */ -+ void sendBlockHighlight(@NotNull Location location, int duration); ++ void sendBlockHighlight(Location location, int duration); + + /** + * Creates debug block highlight on specified block location and show it to this player. @@ -50,7 +50,7 @@ + * @param duration Duration for highlight to show in milliseconds + * @param argb Color of the highlight. ARGB int. Will be ignored on some versions of vanilla client + */ -+ void sendBlockHighlight(@NotNull Location location, int duration, int argb); ++ void sendBlockHighlight(Location location, int duration, int argb); + + /** + * Creates debug block highlight on specified block location and show it to this player. @@ -60,7 +60,7 @@ + * @param duration Duration for highlight to show in milliseconds + * @param text Text to show above the highlight + */ -+ void sendBlockHighlight(@NotNull Location location, int duration, @NotNull String text); ++ void sendBlockHighlight(Location location, int duration, String text); + + /** + * Creates debug block highlight on specified block location and show it to this player. @@ -71,7 +71,7 @@ + * @param text Text to show above the highlight + * @param argb Color of the highlight. ARGB int. Will be ignored on some versions of vanilla client + */ -+ void sendBlockHighlight(@NotNull Location location, int duration, @NotNull String text, int argb); ++ void sendBlockHighlight(Location location, int duration, String text, int argb); + + /** + * Creates debug block highlight on specified block location and show it to this player. @@ -83,7 +83,7 @@ + * @param transparency Transparency of the highlight + * @throws IllegalArgumentException If transparency is outside 0-255 range + */ -+ void sendBlockHighlight(@NotNull Location location, int duration, @NotNull org.bukkit.Color color, int transparency); ++ void sendBlockHighlight(Location location, int duration, org.bukkit.Color color, int transparency); + + /** + * Creates debug block highlight on specified block location and show it to this player. @@ -96,7 +96,7 @@ + * @param transparency Transparency of the highlight + * @throws IllegalArgumentException If transparency is outside 0-255 range + */ -+ void sendBlockHighlight(@NotNull Location location, int duration, @NotNull String text, @NotNull org.bukkit.Color color, int transparency); ++ void sendBlockHighlight(Location location, int duration, String text, org.bukkit.Color color, int transparency); + + /** + * Clears all debug block highlights @@ -108,7 +108,7 @@ + * + * @param message The death message to show the player + */ -+ void sendDeathScreen(@NotNull net.kyori.adventure.text.Component message); ++ void sendDeathScreen(net.kyori.adventure.text.Component message); + + /** + * Sends a player the death screen with a specified death message, @@ -119,7 +119,7 @@ + * @deprecated Use {@link #sendDeathScreen(net.kyori.adventure.text.Component)} instead, as 1.20 removed the killer ID from the packet. + */ + @Deprecated(since = "1.20") -+ default void sendDeathScreen(@NotNull net.kyori.adventure.text.Component message, @Nullable Entity killer) { ++ default void sendDeathScreen(net.kyori.adventure.text.Component message, @Nullable Entity killer) { + sendDeathScreen(message); + } + // Purpur end diff --git a/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch b/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch index be0ec1071..24adce9ed 100644 --- a/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch +++ b/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make entity breeding times configurable diff --git a/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java b/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java -index 4fb63e58eac5d67fcd31c3233dca1dae72b98bc4..dd8d315eba203db121e24e3402f2117fc0f3043f 100644 +index 8fe5bd54b5a4848da1f08ea65fe2bc3514bed8c8..54eeb72b638127b180470887a3b59d55773f3bc9 100644 --- a/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java +++ b/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java @@ -118,8 +118,10 @@ public class VillagerMakeLove extends Behavior { @@ -19,10 +19,10 @@ index 4fb63e58eac5d67fcd31c3233dca1dae72b98bc4..dd8d315eba203db121e24e3402f2117f + partner.setAge(level.purpurConfig.villagerBreedingTicks); + // Purpur end - Make entity breeding times configurable level.addFreshEntityWithPassengers(breedOffspring, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); - // CraftBukkit end + // CraftBukkit end - call EntityBreedEvent level.broadcastEntityEvent(breedOffspring, (byte)12); diff --git a/net/minecraft/world/entity/animal/Animal.java b/net/minecraft/world/entity/animal/Animal.java -index 33c3752be451508343cad83766da7c3be1822d02..fa34e7f1c20dfd569b52a9c8e0a8d4d5e659ce20 100644 +index da1f5dcc213b9a5f8d26a546e7575b063fb0473c..452270f7f1c54ca98c34dcf9a9d29acae77737c8 100644 --- a/net/minecraft/world/entity/animal/Animal.java +++ b/net/minecraft/world/entity/animal/Animal.java @@ -40,6 +40,7 @@ public abstract class Animal extends AgeableMob { @@ -33,10 +33,10 @@ index 33c3752be451508343cad83766da7c3be1822d02..fa34e7f1c20dfd569b52a9c8e0a8d4d5 protected Animal(EntityType entityType, Level level) { super(entityType, level); -@@ -279,8 +280,10 @@ public abstract class Animal extends AgeableMob { +@@ -282,8 +283,10 @@ public abstract class Animal extends AgeableMob { player.awardStat(Stats.ANIMALS_BRED); CriteriaTriggers.BRED_ANIMALS.trigger(player, this, animal, baby); - } // Paper + } // Paper - call EntityBreedEvent - this.setAge(6000); - animal.setAge(6000); + // Purpur start - Make entity breeding times configurable @@ -47,7 +47,7 @@ index 33c3752be451508343cad83766da7c3be1822d02..fa34e7f1c20dfd569b52a9c8e0a8d4d5 animal.resetLove(); level.broadcastEntityEvent(this, (byte)18); diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index c150ba5f706b3dd51925533300c0432ccf5e2b81..6f0b927101f9b5a07a0b6749557f6b0ebf35ae64 100644 +index a6dfd2013312d7542cb597a6e3976c68e9971148..31854506641874bed3306b9688d71e5c47fd9e35 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -480,6 +480,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -119,7 +119,7 @@ index d2a4bfa5334f7361067e4adac36ba5a4a4fa6ad8..e4965300eb41512d03a0b111422c9862 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 8bf893837586ae2a9b4ef7564d242e16e4863b5d..1acf9b8c9e6a5915b3f095e83d3f209708947093 100644 +index 9b8f5049b7a73b6b51ea76ed92228ff0d53b1cfb..7bc31391b0bd696ce73223d639a96278994010ca 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -175,6 +175,13 @@ public class Fox extends Animal implements VariantHolder { @@ -136,7 +136,7 @@ index 8bf893837586ae2a9b4ef7564d242e16e4863b5d..1acf9b8c9e6a5915b3f095e83d3f2097 @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); -@@ -969,8 +976,10 @@ public class Fox extends Animal implements VariantHolder { +@@ -973,8 +980,10 @@ public class Fox extends Animal implements VariantHolder { CriteriaTriggers.BRED_ANIMALS.trigger(serverPlayer, this.animal, this.partner, fox); } @@ -168,7 +168,7 @@ index 990723c31aa1040a4e45b9857a18d86287ef91b4..a64b609bf5ce38a252bfa1bcff869f88 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index 1346556aa3a704930f1d278b65c6a2a904e41488..c76dff55f28f63be407c438f0c6ed634185d7b6b 100644 +index 41c42ecbf6aa233bd82000a4bbba3b186cca6a9d..b06697fd64a8962133f0324b2c03b9e9b4f32086 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java @@ -87,6 +87,13 @@ public class Ocelot extends Animal { @@ -312,7 +312,7 @@ index 4f0fbbb2caeda6d1477d3297fd68f802e4f3a9ca..edbccb7ca27aa8a1917eb8b35b3ba860 this.entityData.set(HOME_POS, homePos); } diff --git a/net/minecraft/world/entity/animal/Wolf.java b/net/minecraft/world/entity/animal/Wolf.java -index 93a0fda3a2f3598c9f5606e4f379b60a2129a07b..136f2c43272e5a45e473b66656818ed88de1cff3 100644 +index afc12968313a408e8a71a20c2c0defde52605c4e..9d79946497cfc92ff11160b86d5064d86916af36 100644 --- a/net/minecraft/world/entity/animal/Wolf.java +++ b/net/minecraft/world/entity/animal/Wolf.java @@ -210,6 +210,13 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder> { +@@ -165,6 +165,13 @@ public class Frog extends Animal implements VariantHolder> { } // Purpur end - Ridables @@ -397,11 +397,12 @@ index 9a400c8bf2b54aa5fbcbe65b61670cac5fbebf05..c4ea9485294b7dec2582c638802f003a + return this.level().purpurConfig.frogBreedingTicks; + } + // Purpur end - Make entity breeding times configurable ++ @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index 9924a39953fb49954d02c771ae1a51411226ceac..16fe9367466372eb7cd0ecf24ba5b7cbc64a820c 100644 +index 302208b566038a3a352ca867dd70a61887bac104..0a018dbfe3750cf91892d8cfb5c0eac18e83d587 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java @@ -128,6 +128,13 @@ public class Goat extends Animal { @@ -581,12 +582,12 @@ index be0dc92bf5ae3da1368a649e9c4e7ff5dbb1c67c..f36e94437b4e21961532ac9ab9176761 EntityType entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 54924cd7c84cbcd22ffc0bd37fc24f24e73c18bc..266d1838e6602ef6322c15732f2693a865911f2e 100644 +index 54924cd7c84cbcd22ffc0bd37fc24f24e73c18bc..5af04c4d58d59b795c3f43eeb30232ab07a4e8c7 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -122,6 +122,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { - this.timeInOverworld = timeInOverworld; +@@ -117,6 +117,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } + // Purpur end - Configurable entity base attributes + // Purpur start - Make entity breeding times configurable + @Override @@ -595,6 +596,6 @@ index 54924cd7c84cbcd22ffc0bd37fc24f24e73c18bc..266d1838e6602ef6322c15732f2693a8 + } + // Purpur end - Make entity breeding times configurable + - @Override - public boolean canBeLeashed() { - return true; + @VisibleForTesting + public void setTimeInOverworld(int timeInOverworld) { + this.timeInOverworld = timeInOverworld; diff --git a/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch b/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch index d470623fe..426f0ac07 100644 --- a/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch +++ b/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch @@ -158,7 +158,7 @@ index 5b764c686e8759a7b04a7b50708c69629be02c04..e104058b3c01bea4cc8a77de2ad43784 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 3d94d5c9ecab0fe7332daf4cdac879385159eaa1..22a70c6af965114e272bb56cb217f975a3cd1bd4 100644 +index 950bf1c834111e00a3f3eda1390da7ede177ae15..59695ebc6758cbbc444f23ffdf2f7d66cff54430 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -182,6 +182,13 @@ public class Fox extends Animal implements VariantHolder { @@ -1101,7 +1101,7 @@ index f36e94437b4e21961532ac9ab91767617f9c3c32..d01bc46d77340b10b23d0c0d50bddc37 @Override diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index 8356906b2c0707e21021bb05f9ca01a95682880a..ffdb200d9716104f8df91dbeef590b2264e587b8 100644 +index f0fe810d4ee2387b6b37c391e0c2feaa52b05c05..20f78e3a37f4c7257b32f2279a6404415aa00e2c 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -110,6 +110,13 @@ public class Vex extends Monster implements TraceableEntity { @@ -1245,10 +1245,10 @@ index 9603589e0501feee900cd21b04eb84b02bb45de2..09c991d8e344f11bc84dea453042ee35 public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 266d1838e6602ef6322c15732f2693a865911f2e..896bd531a5333d6dc8996bbdfc5c878b1a7d2da0 100644 +index 5af04c4d58d59b795c3f43eeb30232ab07a4e8c7..9b82be9ec52fd4bc3b85e8289e7e8f9b79b74b9a 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -129,6 +129,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -124,6 +124,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Make entity breeding times configurable @@ -1259,9 +1259,9 @@ index 266d1838e6602ef6322c15732f2693a865911f2e..896bd531a5333d6dc8996bbdfc5c878b + } + // Purpur end - Toggle for water sensitive mob damage + - @Override - public boolean canBeLeashed() { - return true; + @VisibleForTesting + public void setTimeInOverworld(int timeInOverworld) { + this.timeInOverworld = timeInOverworld; diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java index d923a424e2b33b7d4e9e4ecdce8e0a8c825038de..55ebfa5df06a59203248514d10dced9660ebf215 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java diff --git a/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch index 19907a4c1..e9f4d0ddd 100644 --- a/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch +++ b/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch @@ -149,7 +149,7 @@ index e104058b3c01bea4cc8a77de2ad4378465903b34..7003b532182737a745491e397a967b72 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 22a70c6af965114e272bb56cb217f975a3cd1bd4..aa610af9db105081fcabc1f299e5f2dd1f4d907e 100644 +index 59695ebc6758cbbc444f23ffdf2f7d66cff54430..90452f0945e761077608692877677f522d38bccd 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -189,6 +189,13 @@ public class Fox extends Animal implements VariantHolder { @@ -887,7 +887,7 @@ index bf26f5f6017c60d5991d5f6c87da2acbd95ef5bb..312d4a3d312b5c326d6ca13ccfc48171 return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 0ee817699fffbb929011465029182cc56befc30c..39f94cee78e8fc14d892cb64fb5234bf88d964ad 100644 +index 41ae39349c6f7e6c5d0187257a72782c5dc4c8eb..3c105d164acd9e45de2335ef28ddecf3fa48d267 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -157,6 +157,13 @@ public class Phantom extends FlyingMob implements Enemy { @@ -1067,7 +1067,7 @@ index d01bc46d77340b10b23d0c0d50bddc37657028c8..241526239bdbd5d9276f85e7fca46a70 EntityType entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index ffdb200d9716104f8df91dbeef590b2264e587b8..0ce9eb1f4108b6afab6df84d5e709be0882e515a 100644 +index 20f78e3a37f4c7257b32f2279a6404415aa00e2c..0d9dd9919b2b9902137df861bcac8057e4b741de 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -117,6 +117,13 @@ public class Vex extends Monster implements TraceableEntity { @@ -1211,10 +1211,10 @@ index 09c991d8e344f11bc84dea453042ee35c39e580e..fddbbffafea275dad187b7908386cf4c public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 896bd531a5333d6dc8996bbdfc5c878b1a7d2da0..cf0a15ff4a49bcc17dc6dd58e91eadec0c519455 100644 +index 9b82be9ec52fd4bc3b85e8289e7e8f9b79b74b9a..28f3bc31b4c093e426ae141edeee61a12a444ba1 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -136,6 +136,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -131,6 +131,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Toggle for water sensitive mob damage @@ -1225,9 +1225,9 @@ index 896bd531a5333d6dc8996bbdfc5c878b1a7d2da0..cf0a15ff4a49bcc17dc6dd58e91eadec + } + // Purpur end - Mobs always drop experience + - @Override - public boolean canBeLeashed() { - return true; + @VisibleForTesting + public void setTimeInOverworld(int timeInOverworld) { + this.timeInOverworld = timeInOverworld; diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java index 55ebfa5df06a59203248514d10dced9660ebf215..f0d78cf5fe2c39add9a673471103c352cce72a45 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index 7a5ade3e0..3d6674d0b 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -106,7 +106,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -3055,6 +_,18 @@ +@@ -3045,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +125,7 @@ @Override public void restart() { org.spigotmc.RestartCommand.restart(); -@@ -3084,6 +_,7 @@ +@@ -3074,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -133,7 +133,7 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3294,4 +_,18 @@ +@@ -3284,4 +_,18 @@ this.console.addPluginAllowingSleep(plugin.getName(), value); } // Paper end - API to check if the server is sleeping From 708a2fd9ec2ba3878121352d5e6949b0cfd68623 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 8 Feb 2025 19:30:14 -0800 Subject: [PATCH 012/289] fix: properly apply breeding-delay-ticks option for turtles --- ...-Make-entity-breeding-times-configurable.patch | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch b/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch index 24adce9ed..415f95334 100644 --- a/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch +++ b/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch @@ -294,7 +294,7 @@ index b66440f5cfbd714c6d2f5b7f66b4e755602b4521..882c799cb66a2acada33ff24f3adb7eb protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java -index 4f0fbbb2caeda6d1477d3297fd68f802e4f3a9ca..edbccb7ca27aa8a1917eb8b35b3ba8600c91111a 100644 +index 4f0fbbb2caeda6d1477d3297fd68f802e4f3a9ca..030414049c6af6f6a6324d56aa7b2f1cf7afdc61 100644 --- a/net/minecraft/world/entity/animal/Turtle.java +++ b/net/minecraft/world/entity/animal/Turtle.java @@ -109,6 +109,13 @@ public class Turtle extends Animal { @@ -311,6 +311,19 @@ index 4f0fbbb2caeda6d1477d3297fd68f802e4f3a9ca..edbccb7ca27aa8a1917eb8b35b3ba860 public void setHomePos(BlockPos homePos) { this.entityData.set(HOME_POS, homePos); } +@@ -394,8 +401,10 @@ public class Turtle extends Animal { + } + + this.turtle.setHasEgg(true); +- this.animal.setAge(6000); +- this.partner.setAge(6000); ++ // Purpur start - Make entity breeding times configurable ++ this.animal.setAge(this.animal.getPurpurBreedTime()); ++ this.partner.setAge(this.partner.getPurpurBreedTime()); ++ // Purpur end - Make entity breeding times configurable + this.animal.resetLove(); + this.partner.resetLove(); + RandomSource random = this.animal.getRandom(); diff --git a/net/minecraft/world/entity/animal/Wolf.java b/net/minecraft/world/entity/animal/Wolf.java index afc12968313a408e8a71a20c2c0defde52605c4e..9d79946497cfc92ff11160b86d5064d86916af36 100644 --- a/net/minecraft/world/entity/animal/Wolf.java From e6a1ebd3f6e4cfe93f96dd82ecb3234f0482768a Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 9 Feb 2025 11:44:23 -0800 Subject: [PATCH 013/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@edacfdf4 Do not queue player info packets (#12080) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 5bfe0d38e..521271731 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = eff617b8f886d81b91d74b9b0ee9951375e73425 +paperCommit = edacfdf4624735d093413e64b4efd192f72d844e org.gradle.configuration-cache = true org.gradle.caching = true From 9b046f36c21fd5befa56c6b0283b9988fd066ce4 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 13 Feb 2025 15:15:48 -0800 Subject: [PATCH 014/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@cafef9ce [ci/skip] Move EntityUtil to correct directory (#12092) PaperMC/Paper@fa5824e4 Add skipTripwireHookPlacementValidation (#12091) PaperMC/Paper@3bd69f2e [ci/skip] Enhance javadoc for World#setAutoSave method (#12088) PaperMC/Paper@13c80a5e [ci/skip] Fix PlayerShearBlockEvent javadoc typos (#12101) PaperMC/Paper@db2aa180 [ci/skip] Fix incomplete example in javadocs for PreFlattenTagRegistrar (#12102) PaperMC/Paper@cf7c6c74 [ci/skip] Fix incomplete example in javadocs for PostFlattenTagRegistrar (#12103) PaperMC/Paper@072a8317 Add proper attached blocks API to AbstractArrow (#12099) PaperMC/Paper@1be2e5f3 Fix vanilla map decorations sending when not dirty (#12098) PaperMC/Paper@a06179a0 Update entity effect (#12104) PaperMC/Paper@e616498e Add Vault block API (#12068) PaperMC/Paper@0a04c3fe Fix some NPEs (#12105) PaperMC/Paper@06804850 Expand TrialSpawner API (#12025) PaperMC/Paper@46f4fdaa Add support for rotation argument handling (#12090) --- gradle.properties | 2 +- .../src/main/java/org/bukkit/World.java.patch | 2 +- .../paper-patches/features/0002-Ridables.patch | 6 +++--- .../0005-Add-EntityTeleportHinderedEvent.patch | 8 ++++---- .../bukkit/craftbukkit/CraftServer.java.patch | 16 ++++++++-------- .../craftbukkit/entity/CraftPlayer.java.patch | 6 +++--- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/gradle.properties b/gradle.properties index 521271731..324b92848 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = edacfdf4624735d093413e64b4efd192f72d844e +paperCommit = 46f4fdaae3661941ac86f2157e625d907fdd8e81 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch index eaa0ae079..ff5b269c8 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4253,6 +_,86 @@ +@@ -4255,6 +_,86 @@ @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index 39fb5ad6b..d0b5a33b7 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index b0be1ef065986c7e8aa94dde814a303d1dec5529..c843d28de6cdd7fa25cfbfe7cf071de063df05f8 100644 +index 6394e0a4bfd2c8a0e137e60eefe9585befdeda49..22edc6faa929d8110fb0c08154eb47155db8fd1f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1345,4 +1345,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1344,4 +1344,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } } // Paper end - broadcast hurt animation @@ -37,7 +37,7 @@ index b0be1ef065986c7e8aa94dde814a303d1dec5529..c843d28de6cdd7fa25cfbfe7cf071de0 + // Purpur end - Ridables } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 1bb9a0bb4b1b898c9359d0095d9413a46b5e7630..1b7fdbecf9c28732d5196236980e87fa737a0769 100644 +index 4ca09a593283935f7a58a31a903a6c0d990296b5..0131eaade61bc30a094a3166e8cd58cd7cfd7921 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -602,6 +602,15 @@ public class CraftEventFactory { diff --git a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch index 49b17a617..caf81962c 100644 --- a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0005-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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index c843d28de6cdd7fa25cfbfe7cf071de063df05f8..3bb597cbce650e408273c07a7c120845c99b053b 100644 +index 22edc6faa929d8110fb0c08154eb47155db8fd1f..dba6bacd7bd559d76182db5ff3b749cde326b545 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -261,6 +261,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -29,10 +29,10 @@ index c843d28de6cdd7fa25cfbfe7cf071de063df05f8..3bb597cbce650e408273c07a7c120845 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index fa850e952a01fbdc0c51ebe4055c82a6c3086fbb..f4d45ef506172c7c8ca65beeee7536f09c0c0284 100644 +index a435aed8eba00dcc8775634c8e10695197977080..c7c02af6402200201250350dd04ec8de3ad43d2b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1438,6 +1438,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1439,6 +1439,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper start - Teleport passenger API // Don't allow teleporting between worlds while keeping passengers if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -40,7 +40,7 @@ index fa850e952a01fbdc0c51ebe4055c82a6c3086fbb..f4d45ef506172c7c8ca65beeee7536f0 return false; } -@@ -1459,6 +1460,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1460,6 +1461,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index 3d6674d0b..7ff0374bb 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -427,6 +_,20 @@ +@@ -428,6 +_,20 @@ this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager); this.pluginManager.paperPluginManager = this.paperPluginManager; // Paper end @@ -21,7 +21,7 @@ CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1087,6 +_,7 @@ +@@ -1088,6 +_,7 @@ org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -29,7 +29,7 @@ for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1102,6 +_,7 @@ +@@ -1103,6 +_,7 @@ } } world.spigotConfig.init(); // Spigot @@ -37,7 +37,7 @@ } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1119,6 +_,7 @@ +@@ -1120,6 +_,7 @@ org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -45,7 +45,7 @@ this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1646,6 +_,60 @@ +@@ -1647,6 +_,60 @@ return true; } @@ -106,7 +106,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -3045,6 +_,18 @@ +@@ -3051,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +125,7 @@ @Override public void restart() { org.spigotmc.RestartCommand.restart(); -@@ -3074,6 +_,7 @@ +@@ -3080,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -133,7 +133,7 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3284,4 +_,18 @@ +@@ -3290,4 +_,18 @@ this.console.addPluginAllowingSleep(plugin.getName(), value); } // Paper end - API to check if the server is sleeping diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 42b6bb715..46c73979b 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -591,10 +_,15 @@ +@@ -592,10 +_,15 @@ @Override public void setPlayerListName(String name) { @@ -17,7 +17,7 @@ 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)) { -@@ -2752,6 +_,28 @@ +@@ -2753,6 +_,28 @@ return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -46,7 +46,7 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3581,4 +_,76 @@ +@@ -3583,4 +_,76 @@ handle.containerMenu.broadcastChanges(); return new PaperPlayerGiveResult(leftovers.build(), drops.build()); } From 22bd4186ca92f21a01714ba8e6b4823ccc576c81 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 14 Feb 2025 22:15:22 -0800 Subject: [PATCH 015/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@6cfa2f7f [ci/skip] Add missing nullability annotation to sendEquipmentChange method (#12112) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 324b92848..3ad5410e8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 46f4fdaae3661941ac86f2157e625d907fdd8e81 +paperCommit = 6cfa2f7f315cbad23d7b12984b751f2721b496b6 org.gradle.configuration-cache = true org.gradle.caching = true From b0d36caedad6cc88a6528cf5126df8d1788e8ac4 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 17 Feb 2025 17:19:02 -0800 Subject: [PATCH 016/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@9b9de827 Update Alternate Current patch to v1.9.1 (#12115) PaperMC/Paper@c62252e1 Add lore content guard (#12116) PaperMC/Paper@40416784 [ci/skip] Mention missing World#regenerateChunk implementation in jd (#12109) PaperMC/Paper@a6e82d90 [ci/skip] Clarify getChunkAtAsyncUrgently javadocs (#12125) PaperMC/Paper@cb25c0cf [ci/skip] Fix annotation fields used in NMS getBukkitEntity (#12120) PaperMC/Paper@00701267 [ci/skip] improvement example in javadoc for DatapackRegistrar (#12122) PaperMC/Paper@608f004a add method on ItemStack to edit pdc (#12022) PaperMC/Paper@7bee9971 Cleanup damage source a bit (#12106) PaperMC/Paper@b9023b5d Add EntityAttemptSmashAttackEvent (#12113) PaperMC/Paper@a3781ff3 Separate tick count to ensure vanilla parity (#12077) PaperMC/Paper@2a4a1154 Add EntityEquipmentChangedEvent (#12011) PaperMC/Paper@06f96dd6 Improvement in /plugins command (#12121) PaperMC/Paper@28d07dc5 use correct spigot plugin count PaperMC/Paper@60394c5b Fix PlayerReadyArrowEvent cancellation desync (#12111) PaperMC/Paper@b27e11cc Fix bad world to chunk coordinate example in javadocs (#12131) PaperMC/Paper@88cdd220 Fixup luck and random implementation in CB loot-tables (#11926) PaperMC/Paper@84609dc0 Don't auto-create any brig redirects (#11954) PaperMC/Paper@8eb8e44a Allow For Default Titles in InventoryView Builders (#12013) --- gradle.properties | 2 +- .../src/main/java/org/bukkit/World.java.patch | 2 +- .../org/bukkit/inventory/ItemStack.java.patch | 4 +- .../features/0001-Ridables.patch | 32 +++---- .../0009-Implement-elytra-settings.patch | 4 +- ...iefing-bypass-to-everything-affected.patch | 8 +- ...019-API-for-any-mob-to-burn-daylight.patch | 8 +- .../minecraft/commands/Commands.java.patch | 4 +- .../server/level/ServerLevel.java.patch | 2 +- .../damagesource/DamageSource.java.patch | 32 +++---- .../damagesource/DamageSources.java.patch | 29 ++++--- .../world/effect/PoisonMobEffect.java.patch | 4 +- .../minecraft/world/entity/Entity.java.patch | 26 +++--- .../world/entity/LivingEntity.java.patch | 2 +- .../world/entity/player/Player.java.patch | 8 +- .../projectile/ThrownEnderpearl.java.patch | 4 +- .../world/level/ServerExplosion.java.patch | 2 +- .../world/level/block/BedBlock.java.patch | 4 +- .../world/level/block/MagmaBlock.java.patch | 2 +- .../level/block/RespawnAnchorBlock.java.patch | 4 +- .../level/block/StonecutterBlock.java.patch | 2 +- .../entity/ConduitBlockEntity.java.patch | 4 +- .../features/0002-Ridables.patch | 8 +- .../command/PaperPluginsCommand.java.patch | 85 +++++++++---------- .../bukkit/craftbukkit/CraftWorld.java.patch | 2 +- .../event/CraftEventFactory.java.patch | 11 --- .../inventory/CraftItemStack.java.patch | 2 +- 27 files changed, 144 insertions(+), 153 deletions(-) delete mode 100644 purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java.patch diff --git a/gradle.properties b/gradle.properties index 3ad5410e8..d42512284 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 6cfa2f7f315cbad23d7b12984b751f2721b496b6 +paperCommit = 8eb8e44ac32a99f53da7af50e800ac8831030580 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch index ff5b269c8..b970083ba 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4255,6 +_,86 @@ +@@ -4278,6 +_,86 @@ @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch index 02c8dfc89..131717ddc 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch @@ -1,7 +1,7 @@ --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java @@ -21,6 +_,13 @@ - import org.bukkit.material.MaterialData; + import org.bukkit.persistence.PersistentDataContainer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +// Purpur start - ItemStack convenience methods @@ -14,7 +14,7 @@ /** * Represents a stack of items. -@@ -1329,4 +_,482 @@ +@@ -1345,4 +_,482 @@ return this.craftDelegate.matchesWithoutData(item, excludeTypes, ignoreCount); } // Paper end - data component API diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index f6921b145..11376e208 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -30,7 +30,7 @@ index 121b57c7f5345f5d8884eaa1d36dac79fb7d42ef..9afbfe9bf493e09ca1963e8956ab7573 /* Drop global time updates if (this.tickCount % 20 == 0) { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 5cf2c7f8fb05a91ed17f1d9c07f7d3e748738058..3770dc90d9412c6378c0bd57a651b9c3e62b9a72 100644 +index 412472b3f6d27ca65759f8422e17b536912e3a99..59d03ddc42d53e2b825abe0cf2ab24e85d586a19 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -217,6 +217,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -62,7 +62,7 @@ index a6f771cbee878eb383b67c61fa2469f2916413b5..d77381237f8a7d1b2f280a5032f5e1c8 private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index d681e14d33a8de6ca2c7f0a2e1ff9bb9d55adbbb..ee002c2cef9d4810fdacac71de77e948f5b0e89d 100644 +index e5ffb15ac5faa0e863af624091dcd35ffa4ffe94..b45b37fcdfe0d3877b368444f8f6a376d6373f59 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2835,6 +2835,8 @@ public class ServerGamePacketListenerImpl @@ -75,10 +75,10 @@ index d681e14d33a8de6ca2c7f0a2e1ff9bb9d55adbbb..ee002c2cef9d4810fdacac71de77e948 if ((target instanceof Bucketable && target instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 43a4427a8f327fbb224cb25e63a5c6b244eb9b09..62a38ecedbd579b32a8fd9cff5a433bfe635fc62 100644 +index ff2e8a40035c8e268733f87c17566b28d5baa22a..f02723a017d2c21c425fb11d2814052185960b97 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -3151,6 +3151,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3152,6 +3152,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -92,7 +92,7 @@ index 43a4427a8f327fbb224cb25e63a5c6b244eb9b09..62a38ecedbd579b32a8fd9cff5a433bf this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3192,6 +3199,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3193,6 +3200,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -107,7 +107,7 @@ index 43a4427a8f327fbb224cb25e63a5c6b244eb9b09..62a38ecedbd579b32a8fd9cff5a433bf if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5115,4 +5130,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5116,4 +5131,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -177,7 +177,7 @@ index 95d78dcdb6777df73898694367ee17b1cb76d7a2..d0313fd5368baa53ec511c8c07fc78a1 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index f41d5ffe83e3cfb4c30d150f8b66f8f2568ae20c..8c2bdb1775f7c4110c5f967b1052eba6a8fcbbfa 100644 +index c370bc7fa01e13bcd4a0be83dc5387367d2bf28d..98abba1edeb43f026795db6da10517f9561137db 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -250,9 +250,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -210,7 +210,7 @@ index f41d5ffe83e3cfb4c30d150f8b66f8f2568ae20c..8c2bdb1775f7c4110c5f967b1052eba6 @Override protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) { -@@ -3537,8 +3538,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3555,8 +3556,10 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); profilerFiller.pop(); // Paper start - Add EntityMoveEvent @@ -223,7 +223,7 @@ index f41d5ffe83e3cfb4c30d150f8b66f8f2568ae20c..8c2bdb1775f7c4110c5f967b1052eba6 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()); -@@ -3548,6 +3551,21 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3566,6 +3569,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()); } } @@ -568,7 +568,7 @@ index c0997c8c0f8ee4474d3acdd5938b1879c4e589a2..28ae152125ed83d8917674b6068f227f double d = this.wantedX - this.fish.getX(); double d1 = this.wantedY - this.fish.getY(); diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index 3793570827eb6ca21c6b990d76c679c00ad100f4..af0cf64b4c74d290dec8032f8a6127867e301130 100644 +index 646bdd1c5d5a8b6459ee8b94e887d3d19442ea05..1c27e44ca6744150e8a107a00bb00fb4784acf3b 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -145,6 +145,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -966,7 +966,7 @@ index 8be0dd148d88dfdfb9efab91124c829e60b5dea5..35bce598bb5857356823594d2a001006 this.setAirSupply(this.getMaxAirSupply()); } else { diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index ddc252c76cedec0a0e9e268d8a874015a5ad52fe..8b0a813f9dd001c6dd108ba7aac04d134a20fbc1 100644 +index 2455324b49e28c57e1b154fd6d9a4d82ee289234..d31ffaba61098568c3134d0a10e1513b10dc8728 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -129,6 +129,44 @@ public class Fox extends Animal implements VariantHolder { @@ -1701,7 +1701,7 @@ index e686c500e4b5f3e7b0e808af8b2e43ddbd163bef..c27bb9e8a4a5e8fdc8ae28dae8203859 this.goalSelector.addGoal(2, new BreedGoal(this, 1.0)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.1, stack -> stack.is(ItemTags.SHEEP_FOOD), false)); diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index 29427515b648b84248f486c156c5cd7a0995ba14..52de92b118b613217b8f92ff672c01ddf798a1fc 100644 +index a26d57a16d06adb7fbf7abf1baeda2ab1824853d..6a4a43b86d4b3812bba7b7d8bdb95eb06d234355 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java @@ -61,12 +61,31 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -1861,7 +1861,7 @@ index fa5f7f7d54083f9ea2095dd44362069d00e0b9a5..1e31a39b276e1c5ae767da7af0b53600 return "entity.minecraft.tropical_fish.predefined." + variantId; } diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java -index 354ec2b987882d8f40ef4ac5257183d2fda73bb8..98cb91574c8d2bdb6d180256f657ecc67987a6fe 100644 +index 0e2d2dd3f2ef2783f3773a9a05c4f718991f7784..cf8daa9897b978ffb89e01d63257a9ea35dcc8a4 100644 --- a/net/minecraft/world/entity/animal/Turtle.java +++ b/net/minecraft/world/entity/animal/Turtle.java @@ -84,6 +84,23 @@ public class Turtle extends Animal { @@ -4377,7 +4377,7 @@ index ce690b564ea8ee055823928169fe605893498f3d..78671f02ef28f4a3b796b357d21fb4c9 if (isFood && !this.isSilent()) { this.level() diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index 7f1cdea810db24182f8f87076c42a19b1b43e98a..26528bc9a9cffb68f82917a3e70900cfb65304d7 100644 +index af3fef70998cff4e4832adfa2071832324ebd91c..f5d3b8e3a84ffb2fe1c0620edd8857362cf696f5 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -58,6 +58,50 @@ public class Vex extends Monster implements TraceableEntity { @@ -5047,7 +5047,7 @@ index fab309dc34eb88f2b9c844078f167885121675c1..0f8ec3abead11c46205cd21290c65ec2 if (this.level().purpurConfig.wanderingTraderAllowTrading) { // Purpur - Add config for villager trading this.setTradingPlayer(player); diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index 3ca4dd7fdb3b8205d72593c13a0fe76e86f76095..ca998a8a480af63d4a5f58a1f4490528a7b33c69 100644 +index 87aabf903e64a9ab241917967616cf78938658f4..d972774332836c91a2cc31bfd89a21889cb9954b 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -220,6 +220,19 @@ public abstract class Player extends LivingEntity { @@ -5088,7 +5088,7 @@ index 4880db97135d54fa72f64c108b2bd4ded096438b..bc102b049047d6e2a1d29e10f92cdf5a protected double getDefaultGravity() { return 0.06; diff --git a/net/minecraft/world/entity/projectile/WitherSkull.java b/net/minecraft/world/entity/projectile/WitherSkull.java -index c7a76d45b5749cf054607808610eb710493f80ea..9af37bd40649f602d700fc7b683c646ae9189eb9 100644 +index 70a6f4f8aaebf4e3fc40676480a9e8cbb115c107..a0b909c745ea60cae73def06f9d947345911c5e4 100644 --- a/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/net/minecraft/world/entity/projectile/WitherSkull.java @@ -110,6 +110,14 @@ public class WitherSkull extends AbstractHurtingProjectile { diff --git a/purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch b/purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch index c3e530309..6fbe64545 100644 --- a/purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch +++ b/purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index d1f7da0f4adc4609247c349d7ccdb0e6bba9b8f8..6de5f527c018201d874e06a45c9509fa12125766 100644 +index 893a1448bca5e06a7ebb42eed20899dbe0732006..4388a1e3d409a55cffd66fc32cae8753c39dd064 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -3595,7 +3595,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3613,7 +3613,18 @@ public abstract class LivingEntity extends Entity implements Attackable { if (i1 % 2 == 0) { List list = EquipmentSlot.VALUES.stream().filter(slot -> canGlideUsing(this.getItemBySlot(slot), slot)).toList(); EquipmentSlot equipmentSlot = Util.getRandom(list, this.random); diff --git a/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch b/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch index 4e21dcf5d..f2c255a34 100644 --- a/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 6de5f527c018201d874e06a45c9509fa12125766..2dc588e2d503c16ccd2589ce18abd2ecebbc8e74 100644 +index 4388a1e3d409a55cffd66fc32cae8753c39dd064..611732d56e5bb71973cb33a41507f61195c4cd2d 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -1818,7 +1818,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -92,7 +92,7 @@ index 579ca031d461ed4327fe4fb45c5289565322e64e..95fa516910a3834bbd4db6d11279e13a } else if (this.nextStartTick > 0) { this.nextStartTick--; diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 1acf9b8c9e6a5915b3f095e83d3f209708947093..3d94d5c9ecab0fe7332daf4cdac879385159eaa1 100644 +index 7bc31391b0bd696ce73223d639a96278994010ca..950bf1c834111e00a3f3eda1390da7ede177ae15 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -1038,7 +1038,7 @@ public class Fox extends Animal implements VariantHolder { @@ -118,11 +118,11 @@ index bbdd06002b07699fffebdf6ed8148abdb69c24cc..7379def14f3f700fb8a746dc89d89e24 } diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index d97a297db3bec0c86c6a82ef1c353015df2115f7..6ee73b798ab306f7c828c9f06ca5b1a96bd96139 100644 +index 495284016f0141d34fcda3c1a1799233a5f708cf..0faa2d786a1162f125c531d93a5d1f215f310dfe 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java @@ -136,7 +136,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM - this.hurtServer(serverLevel, this.damageSources().melting(), 1.0F); // CraftBukkit - DamageSources.ON_FIRE -> CraftEventFactory.MELTING + this.hurtServer(serverLevel, this.damageSources().onFire().knownCause(org.bukkit.event.entity.EntityDamageEvent.DamageCause.MELTING), 1.0F); // CraftBukkit } - if (!serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { diff --git a/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch index f3d28d545..6b85f9b83 100644 --- a/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0019-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/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 4037d6445216bd16c778e4080e8c836400a35d96..95178c3a1de870709ea9d15a7d00c870d2edebff 100644 +index f02723a017d2c21c425fb11d2814052185960b97..80f2d38449f1db1d9b6926e4552d3061cb88b4af 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -530,6 +530,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -531,6 +531,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Purpur end - Add canSaveToDisk to Entity @@ -35,7 +35,7 @@ index 4037d6445216bd16c778e4080e8c836400a35d96..95178c3a1de870709ea9d15a7d00c870 this.type = entityType; this.level = level; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 2dc588e2d503c16ccd2589ce18abd2ecebbc8e74..db5a2227009bc4d655fc781d5850221f36f2d112 100644 +index 611732d56e5bb71973cb33a41507f61195c4cd2d..b38bd29e9c3c1565abb3452ffbbaa54cd924961d 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -301,6 +301,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -67,7 +67,7 @@ index 2dc588e2d503c16ccd2589ce18abd2ecebbc8e74..db5a2227009bc4d655fc781d5850221f } // CraftBukkit start -@@ -3574,6 +3582,32 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3592,6 +3600,32 @@ public abstract class LivingEntity extends Entity implements Attackable { if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { this.hurtServer(serverLevel, this.damageSources().drown(), 1.0F); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch index f6226f550..8b17ee0d1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch @@ -26,7 +26,7 @@ } if (selection.includeIntegrated) { -@@ -488,6 +_,7 @@ +@@ -482,6 +_,7 @@ private void runSync(ServerPlayer player, java.util.Collection bukkit, RootCommandNode rootCommandNode) { // Paper end - Perf: Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootCommandNode, true).callEvent(); // Paper - Brigadier API @@ -34,7 +34,7 @@ org.bukkit.event.player.PlayerCommandSendEvent event = new org.bukkit.event.player.PlayerCommandSendEvent(player.getBukkitEntity(), new java.util.LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -498,6 +_,7 @@ +@@ -492,6 +_,7 @@ } } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch index a4cf79160..817399592 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch @@ -161,7 +161,7 @@ this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. -@@ -2676,7 +_,7 @@ +@@ -2678,7 +_,7 @@ // 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/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch index 4fe0b6a16..3bc063f82 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch @@ -1,16 +1,16 @@ --- a/net/minecraft/world/damagesource/DamageSource.java +++ b/net/minecraft/world/damagesource/DamageSource.java -@@ -28,6 +_,8 @@ - private boolean sweep = false; - private boolean melting = false; - private boolean poison = false; +@@ -30,6 +_,8 @@ + @Nullable + private org.bukkit.block.BlockState fromBlockSnapshot; // Captured block snapshot when the eventBlockDamager is not relevant (e.g. for bad respawn point explosions the block is already removed) + private boolean critical; // Supports arrows and sweeping damage + private boolean scissors = false; // Purpur - Dont run with scissors! + private boolean stonecutter = false; // Purpur - Stonecutter damage - @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 +_,27 @@ - return this.poison; + public DamageSource knownCause(final org.bukkit.event.entity.EntityDamageEvent.DamageCause cause) { + final DamageSource damageSource = this.copy(); +@@ -42,6 +_,29 @@ + return this.knownCause; } + // Purpur start - Dont run with scissors! @@ -23,8 +23,10 @@ + return this.scissors; + } + // Purpur end - Dont run with scissors! ++ + // Purpur start - - Stonecutter damage + public DamageSource stonecutter() { ++ this.knownCause(org.bukkit.event.entity.EntityDamageEvent.DamageCause.CONTACT); + this.stonecutter = true; + return this; + } @@ -34,19 +36,19 @@ + } + // Purpur end - Stonecutter damage + - // Paper start - fix DamageSource API @Nullable - public Entity getCustomEventDamager() { -@@ -118,6 +_,8 @@ - damageSource.sweep = this.isSweep(); - damageSource.poison = this.isPoison(); - damageSource.melting = this.isMelting(); + public Entity eventEntityDamager() { + return this.eventEntityDamager; +@@ -103,6 +_,8 @@ + damageSource.eventBlockDamager = this.eventBlockDamager; + damageSource.fromBlockSnapshot = this.fromBlockSnapshot; + damageSource.critical = this.critical; + damageSource.scissors = this.isScissors(); // Purpur - Dont run with scissors! + damageSource.stonecutter = this.isStonecutter(); // Purpur - Stonecutter damage return damageSource; } // CraftBukkit end -@@ -184,11 +_,20 @@ +@@ -169,11 +_,20 @@ } else { Component component = this.causingEntity == null ? this.directEntity.getDisplayName() : this.causingEntity.getDisplayName(); ItemStack itemStack = this.causingEntity instanceof LivingEntity livingEntity1 ? livingEntity1.getMainHandItem() : ItemStack.EMPTY; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch index 9e3c63dab..29006dbaf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch @@ -1,26 +1,29 @@ --- a/net/minecraft/world/damagesource/DamageSources.java +++ b/net/minecraft/world/damagesource/DamageSources.java -@@ -45,11 +_,15 @@ - // CraftBukkit start - private final DamageSource melting; - private final DamageSource poison; +@@ -42,6 +_,8 @@ + private final DamageSource stalagmite; + private final DamageSource outsideBorder; + private final DamageSource genericKill; + private final DamageSource scissors; // Purpur - Dont run with scissors! + private final DamageSource stonecutter; // Purpur - Stonecutter damage public DamageSources(RegistryAccess registry) { this.damageTypes = registry.lookupOrThrow(Registries.DAMAGE_TYPE); - this.melting = this.source(DamageTypes.ON_FIRE).melting(); - this.poison = this.source(DamageTypes.MAGIC).poison(); +@@ -70,6 +_,8 @@ + this.stalagmite = this.source(DamageTypes.STALAGMITE); + this.outsideBorder = this.source(DamageTypes.OUTSIDE_BORDER); + this.genericKill = this.source(DamageTypes.GENERIC_KILL); + this.scissors = this.source(DamageTypes.MAGIC).scissors(); // Purpur - Dont run with scissors! + this.stonecutter = this.source(DamageTypes.MAGIC).stonecutter(); // Purpur - Stonecutter damage - // CraftBukkit end - this.inFire = this.source(DamageTypes.IN_FIRE); - this.campfire = this.source(DamageTypes.CAMPFIRE); -@@ -100,6 +_,17 @@ } - // CraftBukkit end -+ // Purpur start - Dont run with scissors! + private DamageSource source(ResourceKey damageTypeKey) { +@@ -83,6 +_,18 @@ + private DamageSource source(ResourceKey damageTypeKey, @Nullable Entity causingEntity, @Nullable Entity directEntity) { + return new DamageSource(this.damageTypes.getOrThrow(damageTypeKey), causingEntity, directEntity); + } ++ ++ // Purpur start - Dont run with scissor + public DamageSource scissors() { + return this.scissors; + } @@ -31,6 +34,6 @@ + return this.stonecutter; + } + // Purpur end - Stonecutter damage + public DamageSource inFire() { return this.inFire; - } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch index 48b0053a0..0e8d7e3f7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch @@ -5,9 +5,9 @@ @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { - if (entity.getHealth() > 1.0F) { -- entity.hurtServer(level, entity.damageSources().poison(), 1.0F); // CraftBukkit - DamageSource.MAGIC -> CraftEventFactory.POISON +- entity.hurtServer(level, entity.damageSources().magic().knownCause(org.bukkit.event.entity.EntityDamageEvent.DamageCause.POISON), 1.0F); // CraftBukkit + if (entity.getHealth() > entity.level().purpurConfig.entityMinimalHealthPoison) { // Purpur -+ entity.hurtServer(level, entity.damageSources().poison(), entity.level().purpurConfig.entityPoisonDegenerationAmount); // CraftBukkit - DamageSource.MAGIC -> CraftEventFactory.POISON // Purpur - Config MobEffect by world ++ entity.hurtServer(level, entity.damageSources().magic().knownCause(org.bukkit.event.entity.EntityDamageEvent.DamageCause.POISON), entity.level().purpurConfig.entityPoisonDegenerationAmount); // CraftBukkit // Purpur - Config MobEffect by world } return true; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 31b781a7f..e6c4d0019 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -32,7 +32,7 @@ private boolean hasGlowingTag; private final Set tags = new io.papermc.paper.util.SizeLimitedSet<>(new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(), MAX_ENTITY_TAG_COUNT); // Paper - fully limit tag size - replace set impl private final double[] pistonDeltas = new double[]{0.0, 0.0, 0.0}; -@@ -342,6 +_,7 @@ +@@ -343,6 +_,7 @@ public long activatedTick = Integer.MIN_VALUE; public boolean isTemporarilyActive; public long activatedImmunityTick = Integer.MIN_VALUE; @@ -40,7 +40,7 @@ public void inactiveTick() { } -@@ -522,10 +_,21 @@ +@@ -523,10 +_,21 @@ } // Paper end - optimise entity tracker @@ -62,7 +62,7 @@ this.position = Vec3.ZERO; this.blockPosition = BlockPos.ZERO; this.chunkPosition = ChunkPos.ZERO; -@@ -904,6 +_,7 @@ +@@ -905,6 +_,7 @@ && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage @@ -70,7 +70,7 @@ this.onBelowWorld(); } } -@@ -1826,7 +_,7 @@ +@@ -1827,7 +_,7 @@ } public boolean fireImmune() { @@ -79,7 +79,7 @@ } public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource source) { -@@ -1895,7 +_,7 @@ +@@ -1896,7 +_,7 @@ return this.isInWater() || flag; } @@ -88,7 +88,7 @@ if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { this.wasTouchingWater = false; } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) { -@@ -2521,6 +_,13 @@ +@@ -2522,6 +_,13 @@ compound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -102,7 +102,7 @@ return compound; } catch (Throwable var9) { CrashReport crashReport = CrashReport.forThrowable(var9, "Saving entity NBT"); -@@ -2670,6 +_,13 @@ +@@ -2671,6 +_,13 @@ freezeLocked = compound.getBoolean("Paper.FreezeLock"); } // Paper end @@ -116,7 +116,7 @@ } catch (Throwable var17) { CrashReport crashReport = CrashReport.forThrowable(var17, "Loading entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); -@@ -2916,6 +_,7 @@ +@@ -2917,6 +_,7 @@ if (this.isAlive() && this instanceof Leashable leashable) { if (leashable.getLeashHolder() == player) { if (!this.level().isClientSide()) { @@ -124,7 +124,7 @@ // CraftBukkit start - fire PlayerUnleashEntityEvent // Paper start - Expand EntityUnleashEvent org.bukkit.event.player.PlayerUnleashEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials()); -@@ -3241,15 +_,18 @@ +@@ -3242,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } @@ -144,7 +144,7 @@ } } } -@@ -3454,7 +_,7 @@ +@@ -3455,7 +_,7 @@ } public int getMaxAirSupply() { @@ -153,7 +153,7 @@ } public int getAirSupply() { -@@ -3949,7 +_,7 @@ +@@ -3950,7 +_,7 @@ // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -162,7 +162,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4481,6 +_,12 @@ +@@ -4482,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -175,7 +175,7 @@ // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { -@@ -4879,7 +_,7 @@ +@@ -4880,7 +_,7 @@ } public float maxUpStep() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch index bf89dba4b..9dff01efd 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch @@ -162,7 +162,7 @@ this.hurt(this.damageSources().flyIntoWall(), f); } } -@@ -4398,6 +_,12 @@ +@@ -4416,6 +_,12 @@ ? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND) : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType()); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch index 9cd3b72ab..d2d014c50 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch @@ -64,13 +64,13 @@ @@ -1269,7 +_,7 @@ flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - Toggleable player crits if (flag2) { - damageSource = damageSource.critical(true); // Paper start - critical damage API + damageSource = damageSource.critical(); // Paper - critical damage API - f *= 1.5F; -+ f *= this.level().purpurConfig.playerCriticalDamageMultiplier; // Purpur - Add config change multiplier critical damage value ++ f *= (float) this.level().purpurConfig.playerCriticalDamageMultiplier; // Purpur - Add config change multiplier critical damage value } float f2 = f + f1; -@@ -1882,7 +_,23 @@ +@@ -1884,7 +_,23 @@ @Override protected int getBaseExperienceReward(ServerLevel level) { @@ -95,7 +95,7 @@ } @Override -@@ -1965,6 +_,13 @@ +@@ -1967,6 +_,13 @@ public boolean canUseSlot(EquipmentSlot slot) { return slot != EquipmentSlot.BODY; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch index f0ac6ccbf..b2937f297 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch @@ -16,8 +16,8 @@ if (serverPlayer1 != null) { serverPlayer1.resetFallDistance(); serverPlayer1.resetCurrentImpulseContext(); -- serverPlayer1.hurtServer(serverPlayer.serverLevel(), this.damageSources().enderPearl().customEventDamager(this), 5.0F); // CraftBukkit // Paper - fix DamageSource API -+ serverPlayer1.hurtServer(serverPlayer.serverLevel(), this.damageSources().enderPearl().customEventDamager(this), this.level().purpurConfig.enderPearlDamage); // CraftBukkit // Paper - fix DamageSource API // Purpur - Configurable Ender Pearl damage +- serverPlayer1.hurtServer(serverPlayer.serverLevel(), this.damageSources().enderPearl().eventEntityDamager(this), 5.0F); // CraftBukkit // Paper - fix DamageSource API ++ serverPlayer1.hurtServer(serverPlayer.serverLevel(), this.damageSources().enderPearl().eventEntityDamager(this), this.level().purpurConfig.enderPearlDamage); // CraftBukkit // Paper - fix DamageSource API // Purpur - Configurable Ender Pearl damage } this.playSound(serverLevel, vec3); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch index 102f56ead..6cda2a29e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch @@ -28,7 +28,7 @@ + } else { + Location location = new Location(this.level.getWorld(), this.center.x, this.center.y, this.center.z); + org.bukkit.block.Block block = location.getBlock(); -+ org.bukkit.block.BlockState blockState = (this.damageSource.getDirectBlockState() != null) ? this.damageSource.getDirectBlockState() : block.getState(); ++ org.bukkit.block.BlockState blockState = (this.damageSource.causingBlockSnapshot() != null) ? this.damageSource.causingBlockSnapshot() : 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, org.bukkit.craftbukkit.CraftExplosionResult.toBukkit(getBlockInteraction())).callEvent()) { + this.wasCanceled = true; + return; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch index 69cb91158..fdd4594ec 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch @@ -13,8 +13,8 @@ } Vec3 center = pos.getCenter(); -- level.explode(null, level.damageSources().badRespawnPointExplosion(center, blockState), null, center, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state -+ if (level.purpurConfig.bedExplode) level.explode(null, level.damageSources().badRespawnPointExplosion(center, blockState), null, center, (float) level.purpurConfig.bedExplosionPower, level.purpurConfig.bedExplosionFire, level.purpurConfig.bedExplosionEffect); // CraftBukkit - add state // Purpur - Implement bed explosion options +- level.explode(null, level.damageSources().badRespawnPointExplosion(center).causingBlockSnapshot(blockState), null, center, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state ++ if (level.purpurConfig.bedExplode) level.explode(null, level.damageSources().badRespawnPointExplosion(center).causingBlockSnapshot(blockState), null, center, (float) level.purpurConfig.bedExplosionPower, level.purpurConfig.bedExplosionFire, level.purpurConfig.bedExplosionEffect); // CraftBukkit - add state // Purpur - Implement bed explosion options return InteractionResult.SUCCESS_SERVER; } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch index 52ccc7277..f9d8ca928 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch @@ -6,6 +6,6 @@ public void stepOn(Level level, BlockPos pos, BlockState state, Entity entity) { - if (!entity.isSteppingCarefully() && entity instanceof LivingEntity) { + if ((!entity.isSteppingCarefully() || level.purpurConfig.magmaBlockDamageWhenSneaking) && entity instanceof LivingEntity) { // Purpur - Configurable damage settings for magma blocks - entity.hurt(level.damageSources().hotFloor().directBlock(level, pos), 1.0F); // CraftBukkit + entity.hurt(level.damageSources().hotFloor().eventBlockDamager(level, pos), 1.0F); // CraftBukkit } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch index d8a78eb77..661923a83 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch @@ -4,8 +4,8 @@ }; Vec3 center = pos2.getCenter(); level.explode( -- null, level.damageSources().badRespawnPointExplosion(center, blockState), explosionDamageCalculator, center, 5.0F, true, Level.ExplosionInteraction.BLOCK // CraftBukkit - add state -+ null, level.damageSources().badRespawnPointExplosion(center, blockState), explosionDamageCalculator, center, (float) level.purpurConfig.respawnAnchorExplosionPower, level.purpurConfig.respawnAnchorExplosionFire, level.purpurConfig.respawnAnchorExplosionEffect // CraftBukkit - add state // Purpur - Implement respawn anchor explosion options +- null, level.damageSources().badRespawnPointExplosion(center).causingBlockSnapshot(blockState), explosionDamageCalculator, center, 5.0F, true, Level.ExplosionInteraction.BLOCK // CraftBukkit - add state ++ null, level.damageSources().badRespawnPointExplosion(center).causingBlockSnapshot(blockState), explosionDamageCalculator, center, (float) level.purpurConfig.respawnAnchorExplosionPower, level.purpurConfig.respawnAnchorExplosionFire, level.purpurConfig.respawnAnchorExplosionEffect // CraftBukkit - add state // Purpur - Implement respawn anchor explosion options ); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch index df3ab7800..8cfd145db 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch @@ -9,7 +9,7 @@ + @Override + public void stepOn(Level level, BlockPos pos, BlockState state, net.minecraft.world.entity.Entity entity) { + if (level.purpurConfig.stonecutterDamage > 0.0F && entity instanceof net.minecraft.world.entity.LivingEntity) { -+ entity.hurtServer((net.minecraft.server.level.ServerLevel) level, entity.damageSources().stonecutter().directBlock(level, pos), level.purpurConfig.stonecutterDamage); ++ entity.hurtServer((net.minecraft.server.level.ServerLevel) level, entity.damageSources().stonecutter().eventBlockDamager(level, pos), level.purpurConfig.stonecutterDamage); + } + super.stepOn(level, pos, state, entity); + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch index f9491387f..fde6e3fb4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch @@ -42,8 +42,8 @@ } if (damageTarget && blockEntity.destroyTarget != null) { // CraftBukkit -- if (blockEntity.destroyTarget.hurtServer((net.minecraft.server.level.ServerLevel) level, level.damageSources().magic().directBlock(level, pos), 4.0F)) // CraftBukkit -+ if (blockEntity.destroyTarget.hurtServer((net.minecraft.server.level.ServerLevel) level, level.damageSources().magic().directBlock(level, pos), level.purpurConfig.conduitDamageAmount)) // CraftBukkit // Purpur - Conduit behavior configuration +- if (blockEntity.destroyTarget.hurtServer((net.minecraft.server.level.ServerLevel) level, level.damageSources().magic().eventBlockDamager(level, pos), 4.0F)) // CraftBukkit ++ if (blockEntity.destroyTarget.hurtServer((net.minecraft.server.level.ServerLevel) level, level.damageSources().magic().eventBlockDamager(level, pos), level.purpurConfig.conduitDamageAmount)) // CraftBukkit // Purpur - Conduit behavior configuration level.playSound( null, blockEntity.destroyTarget.getX(), diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index d0b5a33b7..7ad33ac8c 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 6394e0a4bfd2c8a0e137e60eefe9585befdeda49..22edc6faa929d8110fb0c08154eb47155db8fd1f 100644 +index d7cf58309b3f455a18de7672fe6ee913f86bac5b..71cc3b64ee27118badcdd6214cb1c6a120202f44 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1344,4 +1344,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1345,4 +1345,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } } // Paper end - broadcast hurt animation @@ -37,7 +37,7 @@ index 6394e0a4bfd2c8a0e137e60eefe9585befdeda49..22edc6faa929d8110fb0c08154eb4715 + // Purpur end - Ridables } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 4ca09a593283935f7a58a31a903a6c0d990296b5..0131eaade61bc30a094a3166e8cd58cd7cfd7921 100644 +index 57c3f8531bf85b53af3a4aad6e9e369d5cff0ce3..56afb317cef0e049aacdd36a1be5f9b7af4d0c77 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -602,6 +602,15 @@ public class CraftEventFactory { @@ -56,7 +56,7 @@ index 4ca09a593283935f7a58a31a903a6c0d990296b5..0131eaade61bc30a094a3166e8cd58cd return event; } -@@ -1191,6 +1200,7 @@ public class CraftEventFactory { +@@ -1193,6 +1202,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); diff --git a/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch index eaeff69ee..8992c7e12 100644 --- a/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch @@ -1,33 +1,34 @@ --- a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java +++ b/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java -@@ -78,10 +_,10 @@ - this.setAliases(Arrays.asList("pl")); +@@ -70,10 +_,10 @@ + this.setAliases(List.of("pl")); } -- private static List formatProviders(TreeMap> plugins) { -+ private static List formatProviders(TreeMap> plugins, @NotNull CommandSender sender) { // Purpur - Improve output of plugins command - List components = new ArrayList<>(plugins.size()); - for (PluginProvider entry : plugins.values()) { +- private static List formatProviders(final TreeMap> plugins) { ++ private static List formatProviders(final TreeMap> plugins, CommandSender sender) { // Purpur - Improve output of plugins command + final List components = new ArrayList<>(plugins.size()); + for (final PluginProvider entry : plugins.values()) { - components.add(formatProvider(entry)); + components.add(formatProvider(entry, sender)); // Purpur - Improve output of plugins command } boolean isFirst = true; -@@ -109,7 +_,7 @@ - return formattedSublists; +@@ -100,15 +_,49 @@ + return formattedSubLists; } -- private static Component formatProvider(PluginProvider provider) { -+ private static Component formatProvider(PluginProvider provider, @NotNull CommandSender sender) { // Purpur - Improve output of plugins command - TextComponent.Builder builder = Component.text(); - if (provider instanceof SpigotPluginProvider spigotPluginProvider && CraftMagicNumbers.isLegacy(spigotPluginProvider.getMeta())) { +- private static Component formatProvider(final PluginProvider provider) { ++ private static Component formatProvider(final PluginProvider provider, CommandSender sender) { // Purpur - Improve output of plugins command + final TextComponent.Builder builder = Component.text(); + if (provider instanceof final SpigotPluginProvider spigotPluginProvider && CraftMagicNumbers.isLegacy(spigotPluginProvider.getMeta())) { builder.append(LEGACY_PLUGIN_STAR); -@@ -117,13 +_,65 @@ + } - String name = provider.getMeta().getName(); - Component pluginName = Component.text(name, fromStatus(provider)) + final String name = provider.getMeta().getName(); +- final Component pluginName = Component.text(name, fromStatus(provider)) - .clickEvent(ClickEvent.runCommand("/version " + name)); + // Purpur start - Improve output of plugins command ++ Component pluginName = Component.text(name, fromStatus(provider)) + .clickEvent(ClickEvent.suggestCommand("/version " + name)); + + if (sender instanceof org.bukkit.entity.Player && sender.hasPermission("bukkit.command.version")) { @@ -65,12 +66,12 @@ builder.append(pluginName); - return builder.build(); +@@ -126,6 +_,23 @@ + return componentHeader.append(Component.text(":")).build(); } + // Purpur start - Improve output of plugins command -+ @NotNull -+ private static TextComponent getAuthors(@NotNull final PluginMeta pluginMeta) { ++ private static TextComponent getAuthors(final PluginMeta pluginMeta) { + TextComponent.Builder builder = Component.text(); + List authors = pluginMeta.getAuthors(); + @@ -86,43 +87,39 @@ + } + // Purpur end - Improve output of plugins command + - private static Component asPlainComponents(String strings) { - net.kyori.adventure.text.TextComponent.Builder builder = Component.text(); - for (String string : strings.split("\n")) { -@@ -182,24 +_,24 @@ - } - } + private static Component asPlainComponents(final String strings) { + final net.kyori.adventure.text.TextComponent.Builder builder = Component.text(); + for (final String string : strings.split("\n")) { +@@ -186,25 +_,25 @@ + final int sizePaperPlugins = paperPlugins.size(); + final int sizeSpigotPlugins = spigotPlugins.size(); + final int sizePlugins = sizePaperPlugins + sizeSpigotPlugins; +- final boolean hasAllPluginTypes = (sizePaperPlugins > 0 && sizeSpigotPlugins > 0); ++ final boolean hasAllPluginTypes = true; // Purpur - Improve output of plugins command -- Component infoMessage = Component.text("Server Plugins (%s):".formatted(paperPlugins.size() + spigotPlugins.size()), NamedTextColor.WHITE); -+ //Component infoMessage = Component.text("Server Plugins (%s):".formatted(paperPlugins.size() + spigotPlugins.size()), NamedTextColor.WHITE); // Purpur - Improve output of plugins command - //.append(INFO_ICON_START.hoverEvent(SERVER_PLUGIN_INFO)); TODO: Add docs + final Component infoMessage = Component.text().append(INFO_ICON_SERVER_PLUGIN).append(Component.text("Server Plugins (%s):".formatted(sizePlugins), NamedTextColor.WHITE)).build(); + + sender.sendMessage(infoMessage); -- sender.sendMessage(infoMessage); -- - if (!paperPlugins.isEmpty()) { -- sender.sendMessage(PAPER_HEADER); -- } -- -- for (Component component : formatProviders(paperPlugins)) { -+ //sender.sendMessage(infoMessage); // Purpur - Improve output of plugins command -+ + //if (!paperPlugins.isEmpty()) { // Purpur - Improve output of plugins command -+ sender.sendMessage(PAPER_HEADER.append(Component.text(" (%s):".formatted(paperPlugins.size())))); // Purpur - Improve output of plugins command + sender.sendMessage(header("Paper Plugins", 0x0288D1, sizePaperPlugins, hasAllPluginTypes)); +- } + //} // Purpur - Improve output of plugins command -+ -+ for (Component component : formatProviders(paperPlugins, sender)) { // Purpur - Improve output of plugins command + +- for (final Component component : formatProviders(paperPlugins)) { ++ for (final Component component : formatProviders(paperPlugins, sender)) { // Purpur - Improve output of plugins command sender.sendMessage(component); } - if (!spigotPlugins.isEmpty()) { -- sender.sendMessage(BUKKIT_HEADER); -- } + //if (!spigotPlugins.isEmpty()) { // Purpur - Improve output of plugins command -+ sender.sendMessage(BUKKIT_HEADER.append(Component.text(" (%s):".formatted(spigotPlugins.size())))); // Purpur - Improve output of plugins command + sender.sendMessage(header("Bukkit Plugins", 0xED8106, sizeSpigotPlugins, hasAllPluginTypes)); +- } + //} // Purpur - Improve output of plugins command - -- for (Component component : formatProviders(spigotPlugins)) { -+ for (Component component : formatProviders(spigotPlugins, sender)) { // Purpur - Improve output of plugins command + +- for (final Component component : formatProviders(spigotPlugins)) { ++ for (final Component component : formatProviders(spigotPlugins, sender)) { // Purpur - Improve output of plugins command sender.sendMessage(component); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch index 8c351edf0..35b519694 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2373,6 +_,50 @@ +@@ -2346,6 +_,50 @@ return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java.patch deleted file mode 100644 index ce3a906ab..000000000 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1131,7 +_,7 @@ - return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), source.getDirectBlockState(), 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 - Stonecutter damage - cause = DamageCause.CONTACT; - } else if (source.is(DamageTypes.HOT_FLOOR)) { - cause = DamageCause.HOT_FLOOR; diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch index 458f702dd..6c51193da 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -@@ -666,4 +_,285 @@ +@@ -693,4 +_,285 @@ } // Paper end - data component API From 97dcff409bf0bd043c6d9a9b5c134eefbf28dd93 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 17 Feb 2025 17:21:28 -0800 Subject: [PATCH 017/289] set DamageCause to `SUICIDE` for scissor's DamageSource --- .../net/minecraft/world/damagesource/DamageSource.java.patch | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch index 3bc063f82..581f8d027 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch @@ -9,12 +9,13 @@ public DamageSource knownCause(final org.bukkit.event.entity.EntityDamageEvent.DamageCause cause) { final DamageSource damageSource = this.copy(); -@@ -42,6 +_,29 @@ +@@ -42,6 +_,30 @@ return this.knownCause; } + // Purpur start - Dont run with scissors! + public DamageSource scissors() { ++ this.knownCause(org.bukkit.event.entity.EntityDamageEvent.DamageCause.SUICIDE); + this.scissors = true; + return this; + } From a9862d7ec77a2b7690e73e635a5829f1596be84e Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 17 Feb 2025 17:57:00 -0800 Subject: [PATCH 018/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@fd69140d Fix `disable-tripwire-updates` option not cancelling tripwire hook updates (#12129) PaperMC/Paper@3b9106c7 Readd dead redirect recovery (#12136) PaperMC/Paper@d26a9e90 Fix plugin commands (#12144) PaperMC/Paper@142695eb Default minecraft alias to redirect (#12146) PaperMC/Paper@e494f289 Correctly call BlockFadeEvents (#12141) PaperMC/Paper@b386a8f5 Add simpler JavaPlugin command registration (#12142) PaperMC/Paper@f0700818 Remove Experimental from TypedKey (#12134) PaperMC/Paper@09f1f88f Fix getForwards/SidewaysMovement for players (#12140) --- gradle.properties | 2 +- .../main/java/org/bukkit/entity/LivingEntity.java.patch | 2 +- .../sources/net/minecraft/commands/Commands.java.patch | 8 ++++---- .../net/minecraft/world/level/block/FarmBlock.java.patch | 2 +- .../org/bukkit/craftbukkit/entity/CraftPlayer.java.patch | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/gradle.properties b/gradle.properties index d42512284..173edb580 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 8eb8e44ac32a99f53da7af50e800ac8831030580 +paperCommit = 09f1f88f58a03f61092f8636ad780d42db87d8d9 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch index 2ec452396..cb9f337fe 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1468,4 +_,20 @@ +@@ -1476,4 +_,20 @@ */ boolean canUseEquipmentSlot(org.bukkit.inventory.@NotNull EquipmentSlot slot); // Paper end - Expose canUseSlot diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch index 8b17ee0d1..911afeeed 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java -@@ -216,8 +_,8 @@ +@@ -221,8 +_,8 @@ JfrCommand.register(this.dispatcher); } @@ -11,7 +11,7 @@ RaidCommand.register(this.dispatcher, context); DebugPathCommand.register(this.dispatcher); DebugMobSpawningCommand.register(this.dispatcher); -@@ -245,6 +_,14 @@ +@@ -250,6 +_,14 @@ StopCommand.register(this.dispatcher); TransferCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); @@ -26,7 +26,7 @@ } if (selection.includeIntegrated) { -@@ -482,6 +_,7 @@ +@@ -503,6 +_,7 @@ private void runSync(ServerPlayer player, java.util.Collection bukkit, RootCommandNode rootCommandNode) { // Paper end - Perf: Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootCommandNode, true).callEvent(); // Paper - Brigadier API @@ -34,7 +34,7 @@ org.bukkit.event.player.PlayerCommandSendEvent event = new org.bukkit.event.player.PlayerCommandSendEvent(player.getBukkitEntity(), new java.util.LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -492,6 +_,7 @@ +@@ -513,6 +_,7 @@ } } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch index 7f0aa19b6..960c0f50f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch @@ -37,7 +37,7 @@ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; } -@@ -174,7 +_,7 @@ +@@ -177,7 +_,7 @@ } } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 46c73979b..3400f22bf 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -46,9 +46,9 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3583,4 +_,76 @@ - handle.containerMenu.broadcastChanges(); - return new PaperPlayerGiveResult(leftovers.build(), drops.build()); +@@ -3599,4 +_,76 @@ + + return forwardMovement == backwardMovement ? 0 : forwardMovement ? 1 : -1; } + + // Purpur start - Purpur client support From 196c1768e1cfa467b82acf260156892784c84578 Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 19 Feb 2025 06:28:52 +0000 Subject: [PATCH 019/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@edda0db1 Fix server crash when no enchantments are present (#12149) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 173edb580..418aced90 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 09f1f88f58a03f61092f8636ad780d42db87d8d9 +paperCommit = edda0db18b0c9b0304e06fb167b218d1e1cf8d55 org.gradle.configuration-cache = true org.gradle.caching = true From 62cbd47ac150737ffa98e6d691cd79e62a5f3302 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 24 Feb 2025 08:09:56 -0800 Subject: [PATCH 020/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@5e2a3bc0 Call EntityChangeBlockEvent with correct block when waxing (#12154) PaperMC/Paper@ab984a07 Always pass event block to damage source (#12158) PaperMC/Paper@7b4d44f5 Revert "Always pass event block to damage source (#12158)" PaperMC/Paper@e5a8ee84 Hide soul speed particles for vanished players (#12152) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 418aced90..e671d2abc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = edda0db18b0c9b0304e06fb167b218d1e1cf8d55 +paperCommit = e5a8ee849f6ed92f0593bf082bc84e158ee7c5f2 org.gradle.configuration-cache = true org.gradle.caching = true From d41aaca10645bd51e1230e1edaa36c766fa1bcef Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 26 Feb 2025 00:13:19 +0000 Subject: [PATCH 021/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@fcb2e815 Clear lastSection on game event listener removal PaperMC/Paper@636ae0cd Add missing Paper comments to player movement patch PaperMC/Paper@9be4e07a Pin snapshot dependencies (#12185) PaperMC/Paper@f12d33f0 Track codec writing PaperMC/Paper@1d9b3994 Add config option for failed beehive release cooldowns (#12186) PaperMC/Paper@5f2ee83e Fix first execution of async delayed/repeating tasks being sync (#12166) PaperMC/Paper@b00875f8 Add a method on Registry to get the size (#12182) PaperMC/Paper@ca261090 Don't process empty rcon commands (#12188) PaperMC/Paper@a501c459 Deprecate server config getters (#12189) PaperMC/Paper@7f3d3591 Use MiniMessage#deserialize(String, Pointered) in sendRichMessage for send messages (#12177) PaperMC/Paper@9b9f046f Remove broken code (#12171) PaperMC/Paper@fc56c728 Add methods for Creaking (#12094) PaperMC/Paper@f63dbeaf Fix cancelled HangingPlaceEvent inventory desync (#12161) --- gradle.properties | 2 +- .../paper-patches/features/0002-Purpur-config-files.patch | 4 ++-- .../files/src/main/java/org/bukkit/Bukkit.java.patch | 6 +++--- .../files/src/main/java/org/bukkit/Server.java.patch | 2 +- purpur-server/build.gradle.kts.patch | 4 ++-- .../0004-Configurable-void-damage-height-and-damage.patch | 6 +++--- .../main/java/org/bukkit/craftbukkit/CraftServer.java.patch | 6 +++--- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/gradle.properties b/gradle.properties index e671d2abc..85bf0440f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = e5a8ee849f6ed92f0593bf082bc84e158ee7c5f2 +paperCommit = f63dbeafde535ae10bc5879e841b943df6731cfd org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch b/purpur-api/paper-patches/features/0002-Purpur-config-files.patch index 464b19132..fa472591e 100644 --- a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch +++ b/purpur-api/paper-patches/features/0002-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 7d5a3f8fe257000b559d64bc045b1e4a14bb295d..78637a4f9650c1dd7ccc94bbfeb1fac048aa7f69 100644 +index 4d821f25903ff800cc21a4eb35332677a5992635..51f22c887ef610b339953115f69bbf1316b667aa 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2334,6 +2334,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2362,6 +2362,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch index b00a8e9a2..795880bef 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch @@ -1,8 +1,8 @@ --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2984,4 +_,133 @@ - public static Server.Spigot spigot() { - return server.spigot(); +@@ -2995,4 +_,133 @@ + public static void restart() { + server.restart(); } + + // Purpur start - Bring back server name diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch index 79f8d8411..2a232cab8 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2658,4 +_,111 @@ +@@ -2698,4 +_,111 @@ */ void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value); // Paper end - API to check if the server is sleeping diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index 59cc82d61..b28abf111 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -48,7 +48,7 @@ implementation("ca.spottedleaf:concurrentutil:0.0.3") implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+ implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21 -@@ -149,6 +_,10 @@ +@@ -150,6 +_,10 @@ runtimeOnly("com.mysql:mysql-connector-j:9.1.0") runtimeOnly("com.lmax:disruptor:3.4.4") @@ -59,7 +59,7 @@ runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.6") runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") -@@ -188,14 +_,14 @@ +@@ -189,14 +_,14 @@ val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim() attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", diff --git a/purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch b/purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch index 700ad9f28..47c0419c8 100644 --- a/purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch +++ b/purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch @@ -19,10 +19,10 @@ index e48fa405d92fab221fa8331b65c8f324e801d439..e319d6337811051de478d584a37015c4 final ConfigurationTransformation.VersionedBuilder versionedBuilder = Transformations.versionedBuilder(); diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java -index d7c9acaffdcff5e35e026ae90a3e521bab13b074..a426ba82af695426952bb5e04fa721e6ccff2f89 100644 +index d193330bfd97767705c878e359969378d43b99d0..4bc6a6572f18b333a3c48b2a96f3079998e7d77f 100644 --- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java -@@ -398,6 +398,7 @@ public class WorldConfiguration extends ConfigurationPart { +@@ -401,6 +401,7 @@ public class WorldConfiguration extends ConfigurationPart { public boolean useVanillaWorldScoreboardNameColoring = false; } @@ -30,7 +30,7 @@ index d7c9acaffdcff5e35e026ae90a3e521bab13b074..a426ba82af695426952bb5e04fa721e6 public Environment environment; public class Environment extends ConfigurationPart { -@@ -407,7 +408,9 @@ public class WorldConfiguration extends ConfigurationPart { +@@ -410,7 +411,9 @@ public class WorldConfiguration extends ConfigurationPart { public boolean disableExplosionKnockback = false; public boolean generateFlatBedrock = false; public FrostedIce frostedIce; diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index 7ff0374bb..4b47394a7 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -124,8 +124,8 @@ + @Override public void restart() { - org.spigotmc.RestartCommand.restart(); -@@ -3080,6 +_,7 @@ + CraftServer.this.restart(); +@@ -3085,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -133,7 +133,7 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3290,4 +_,18 @@ +@@ -3295,4 +_,18 @@ this.console.addPluginAllowingSleep(plugin.getName(), value); } // Paper end - API to check if the server is sleeping From 3f8e6134d0328958b31efeeea9a3df2b1985f403 Mon Sep 17 00:00:00 2001 From: Krakenied <46192742+Krakenied@users.noreply.github.com> Date: Thu, 27 Feb 2025 04:32:30 +0100 Subject: [PATCH 022/289] Fix EntityTameEvent not being called when `always-tame-in-creative` option is enabled (#1645) --- .../world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch | 2 +- .../sources/net/minecraft/world/entity/animal/Cat.java.patch | 2 +- .../sources/net/minecraft/world/entity/animal/Parrot.java.patch | 2 +- .../sources/net/minecraft/world/entity/animal/Wolf.java.patch | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch index f321637d7..cb39bb4e0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch @@ -5,7 +5,7 @@ int temper = this.horse.getTemper(); int maxTemper = this.horse.getMaxTemper(); - if (maxTemper > 0 && this.horse.getRandom().nextInt(maxTemper) < temper && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this.horse, ((org.bukkit.craftbukkit.entity.CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled()) { // CraftBukkit - fire EntityTameEvent -+ if (this.horse.level().purpurConfig.alwaysTameInCreative && player.hasInfiniteMaterials() || maxTemper > 0 && this.horse.getRandom().nextInt(maxTemper) < temper && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this.horse, ((org.bukkit.craftbukkit.entity.CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled()) { // CraftBukkit - fire EntityTameEvent // Purpur - Config to always tame in Creative ++ if (((this.horse.level().purpurConfig.alwaysTameInCreative && player.hasInfiniteMaterials()) || (maxTemper > 0 && this.horse.getRandom().nextInt(maxTemper) < temper)) && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this.horse, ((org.bukkit.craftbukkit.entity.CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled()) { // CraftBukkit - fire EntityTameEvent // Purpur - Config to always tame in Creative this.horse.tameWithName(player); return; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch index e2dcf1d10..0a8781328 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch @@ -20,7 +20,7 @@ private void tryToTame(Player player) { - if (this.random.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit -+ if (this.level().purpurConfig.alwaysTameInCreative && player.hasInfiniteMaterials() || this.random.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit // Purpur - Config to always tame in Creative ++ if (((this.level().purpurConfig.alwaysTameInCreative && player.hasInfiniteMaterials()) || this.random.nextInt(3) == 0) && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit // Purpur - Config to always tame in Creative this.tame(player); this.setOrderedToSit(true); this.level().broadcastEntityEvent(this, (byte)7); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch index 04548f96b..78e2b15e5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch @@ -13,7 +13,7 @@ if (!this.level().isClientSide) { - if (this.random.nextInt(10) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit -+ if (this.level().purpurConfig.alwaysTameInCreative && player.hasInfiniteMaterials() || (this.random.nextInt(10) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled())) { // CraftBukkit // Purpur - Config to always tame in Creative ++ if (((this.level().purpurConfig.alwaysTameInCreative && player.hasInfiniteMaterials()) || this.random.nextInt(10) == 0) && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit // Purpur - Config to always tame in Creative this.tame(player); this.level().broadcastEntityEvent(this, (byte)7); } else { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Wolf.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Wolf.java.patch index 4c48e990c..224a6bae3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Wolf.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Wolf.java.patch @@ -162,7 +162,7 @@ private void tryToTame(Player player) { - if (this.random.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit - added event call and isCancelled check. -+ if (this.level().purpurConfig.alwaysTameInCreative && player.hasInfiniteMaterials() || this.random.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit - added event call and isCancelled check. // Purpur - Config to always tame in Creative ++ if (((this.level().purpurConfig.alwaysTameInCreative && player.hasInfiniteMaterials()) || this.random.nextInt(3) == 0) && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit - added event call and isCancelled check. // Purpur - Config to always tame in Creative this.tame(player); this.navigation.stop(); this.setTarget(null); From b34d675fef91bae2df723705f2568c7afd552d2d Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 26 Feb 2025 20:35:36 -0800 Subject: [PATCH 023/289] fix `zombie_horse.spawn-chance` option not working --- .../minecraft/server/level/ServerLevel.java.patch | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch index 817399592..40252d7fa 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch @@ -89,20 +89,20 @@ public void tickCustomSpawners(boolean spawnEnemies, boolean spawnFriendlies) { for (CustomSpawner customSpawner : this.customSpawners) { -@@ -934,9 +_,18 @@ +@@ -934,9 +_,17 @@ && this.random.nextDouble() < currentDifficultyAt.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01) // Paper - Configurable spawn chances for skeleton horses && !this.getBlockState(blockPos.below()).is(Blocks.LIGHTNING_ROD); if (flag) { +- SkeletonHorse skeletonHorse = EntityType.SKELETON_HORSE.create(this, EntitySpawnReason.EVENT); + // Purpur start - Special mobs naturally spawn -+ net.minecraft.world.entity.animal.horse.AbstractHorse entityhorseskeleton; ++ net.minecraft.world.entity.animal.horse.AbstractHorse skeletonHorse; + if (purpurConfig.zombieHorseSpawnChance > 0D && random.nextDouble() <= purpurConfig.zombieHorseSpawnChance) { -+ entityhorseskeleton = EntityType.ZOMBIE_HORSE.create(this, EntitySpawnReason.EVENT); ++ skeletonHorse = EntityType.ZOMBIE_HORSE.create(this, EntitySpawnReason.EVENT); + } else { -+ entityhorseskeleton = EntityType.SKELETON_HORSE.create(this, EntitySpawnReason.EVENT); -+ if (entityhorseskeleton != null) ((SkeletonHorse) entityhorseskeleton).setTrap(true); ++ skeletonHorse = EntityType.SKELETON_HORSE.create(this, EntitySpawnReason.EVENT); ++ if (skeletonHorse != null) ((SkeletonHorse) skeletonHorse).setTrap(true); + } + // Purpur end - Special mobs naturally spawn - SkeletonHorse skeletonHorse = EntityType.SKELETON_HORSE.create(this, EntitySpawnReason.EVENT); if (skeletonHorse != null) { - skeletonHorse.setTrap(true); + //skeletonHorse.setTrap(true); // Purpur - Special mobs naturally spawn - moved up From 135e2c41dd06765ff078fca97b9d12ecfc236106 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 28 Feb 2025 17:38:47 -0800 Subject: [PATCH 024/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@9421f223 Make CustomArgumentType use parse(reader,source) (#12191) PaperMC/Paper@0a6e7435 Fix invulnerability damage and armour (#12190) PaperMC/Paper@b5066268 Remove unused light queue size option (#12201) PaperMC/Paper@1d5e5a57 Document replacement for Skull owner profile methods (#12195) --- gradle.properties | 2 +- .../features/0001-Ridables.patch | 16 ++++++++-------- .../0009-Implement-elytra-settings.patch | 4 ++-- .../0019-API-for-any-mob-to-burn-daylight.patch | 4 ++-- .../world/entity/LivingEntity.java.patch | 4 ++-- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/gradle.properties b/gradle.properties index 85bf0440f..0727fdaf4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = f63dbeafde535ae10bc5879e841b943df6731cfd +paperCommit = 1d5e5a57e919d7d7b79cdd36e5194f63fc55cdce org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 11376e208..96a2367de 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -30,7 +30,7 @@ index 121b57c7f5345f5d8884eaa1d36dac79fb7d42ef..9afbfe9bf493e09ca1963e8956ab7573 /* Drop global time updates if (this.tickCount % 20 == 0) { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 412472b3f6d27ca65759f8422e17b536912e3a99..59d03ddc42d53e2b825abe0cf2ab24e85d586a19 100644 +index c9eef7221254f3661959a4898485c97b87ec1b8d..b801e2d595383e12120abe3b1b95cbc364515be9 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -217,6 +217,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -62,7 +62,7 @@ index a6f771cbee878eb383b67c61fa2469f2916413b5..d77381237f8a7d1b2f280a5032f5e1c8 private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index e5ffb15ac5faa0e863af624091dcd35ffa4ffe94..b45b37fcdfe0d3877b368444f8f6a376d6373f59 100644 +index 77e7665b56810762f58096e2482f019bbc3918cb..aa982f27e80f6023cadb2d2e5d0f84e472ee863c 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2835,6 +2835,8 @@ public class ServerGamePacketListenerImpl @@ -177,7 +177,7 @@ index 95d78dcdb6777df73898694367ee17b1cb76d7a2..d0313fd5368baa53ec511c8c07fc78a1 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index c370bc7fa01e13bcd4a0be83dc5387367d2bf28d..98abba1edeb43f026795db6da10517f9561137db 100644 +index 73e4cfc0c92ab47dd299ca98c03c69d11f75d36a..5f5f031c9d5b738a29cbabf5bed9452907c97df1 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -250,9 +250,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -210,7 +210,7 @@ index c370bc7fa01e13bcd4a0be83dc5387367d2bf28d..98abba1edeb43f026795db6da10517f9 @Override protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) { -@@ -3555,8 +3556,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3562,8 +3563,10 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); profilerFiller.pop(); // Paper start - Add EntityMoveEvent @@ -223,7 +223,7 @@ index c370bc7fa01e13bcd4a0be83dc5387367d2bf28d..98abba1edeb43f026795db6da10517f9 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()); -@@ -3566,6 +3569,21 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3573,6 +3576,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()); } } @@ -681,7 +681,7 @@ index 646bdd1c5d5a8b6459ee8b94e887d3d19442ea05..1c27e44ca6744150e8a107a00bb00fb4 } diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index 618f184ce9fed4d9b01f2df4d9a4476d20a55546..f066b0acfa0e954f6d71e62962c76afa1f05a4a5 100644 +index de97fb5a70a3a966db3f1136ac60fbb5fe63e2e1..2723f04de1156f8e396f5bee2afdc044626f4dcb 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java @@ -93,10 +93,36 @@ public class Cat extends TamableAnimal implements VariantHolder list = EquipmentSlot.VALUES.stream().filter(slot -> canGlideUsing(this.getItemBySlot(slot), slot)).toList(); EquipmentSlot equipmentSlot = Util.getRandom(list, this.random); diff --git a/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch index 6b85f9b83..1b8b472f3 100644 --- a/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch @@ -35,7 +35,7 @@ index f02723a017d2c21c425fb11d2814052185960b97..80f2d38449f1db1d9b6926e4552d3061 this.type = entityType; this.level = level; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 611732d56e5bb71973cb33a41507f61195c4cd2d..b38bd29e9c3c1565abb3452ffbbaa54cd924961d 100644 +index cef0c2bd5c010e9ca6a8f42f2def832c244eae31..c5a5bd367478c32672fbf5ec237bef432814e553 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -301,6 +301,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -67,7 +67,7 @@ index 611732d56e5bb71973cb33a41507f61195c4cd2d..b38bd29e9c3c1565abb3452ffbbaa54c } // CraftBukkit start -@@ -3592,6 +3600,32 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3599,6 +3607,32 @@ public abstract class LivingEntity extends Entity implements Attackable { if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { this.hurtServer(serverLevel, this.damageSources().drown(), 1.0F); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch index 9dff01efd..791b9b8ef 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch @@ -154,7 +154,7 @@ } // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment -@@ -2989,6 +_,7 @@ +@@ -2996,6 +_,7 @@ float f = (float)(d * 10.0 - 3.0); if (f > 0.0F) { this.playSound(this.getFallDamageSound((int)f), 1.0F, 1.0F); @@ -162,7 +162,7 @@ this.hurt(this.damageSources().flyIntoWall(), f); } } -@@ -4416,6 +_,12 @@ +@@ -4423,6 +_,12 @@ ? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND) : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType()); } From e19b670781ee50f7af7a782f16c6e652b369ec91 Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 5 Mar 2025 15:28:21 -0800 Subject: [PATCH 025/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@8de7e356 Add null check to level ref in Entity constructor (#12218) PaperMC/Paper@a866e366 Fix MenuType.SMITHING JavaDocs (#12226) PaperMC/Paper@5538d24d Fix "DEFAULT" SpawnReason of fish spawned by bucket (#12227) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 0727fdaf4..73391bb73 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 1d5e5a57e919d7d7b79cdd36e5194f63fc55cdce +paperCommit = 5538d24d72a418491b80e89d6f7710548ac46687 org.gradle.configuration-cache = true org.gradle.caching = true From 304174ec0dd431b34bdffe853270187e0f0ac816 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 7 Mar 2025 21:24:23 -0800 Subject: [PATCH 026/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@0a4eb8f3 Send the pong response packet immediately. This packet is similar to the keep alive packet and is processed async. (#12242) PaperMC/Paper@7a3d0c4e Fix recipe being always null in PrepareItemCraftEvent from the api (#12237) PaperMC/Paper@a6ce734f Fix zombie villager not dropping item once cured (#12230) PaperMC/Paper@ce300162 Skip alpha channel for custom model data component (#12205) --- gradle.properties | 2 +- .../minecraft-patches/features/0001-Ridables.patch | 10 +++++----- .../0019-API-for-any-mob-to-burn-daylight.patch | 6 +++--- .../sources/net/minecraft/world/entity/Mob.java.patch | 4 ++-- .../java/org/bukkit/craftbukkit/CraftServer.java.patch | 6 +++--- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/gradle.properties b/gradle.properties index 73391bb73..fa105cebb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 5538d24d72a418491b80e89d6f7710548ac46687 +paperCommit = ce3001621894ea775206abe455442d0aeeef3535 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 96a2367de..9cd6dcbb1 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -75,7 +75,7 @@ index 77e7665b56810762f58096e2482f019bbc3918cb..aa982f27e80f6023cadb2d2e5d0f84e4 if ((target instanceof Bucketable && target instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index ff2e8a40035c8e268733f87c17566b28d5baa22a..f02723a017d2c21c425fb11d2814052185960b97 100644 +index 56448eeb61f71dce04524e5f9dfe9dd3740154a7..680a7b609db5de96742a8042d0f9ab5e0a8a8e7f 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -3152,6 +3152,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -246,7 +246,7 @@ index 73e4cfc0c92ab47dd299ca98c03c69d11f75d36a..5f5f031c9d5b738a29cbabf5bed94529 // Paper end - Add EntityMoveEvent if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index 26f7cd5ddacf5f908702adbf55b56dcc6fcbe162..c431f28c3f4f6cec946048f5752c364429af5ba1 100644 +index def2c797b9c0f3f97c37fcfa0fc44a351dfe3422..487a436e3d9a5a7a4551ea808c8ace306ce6c2fc 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java @@ -151,8 +151,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -260,7 +260,7 @@ index 26f7cd5ddacf5f908702adbf55b56dcc6fcbe162..c431f28c3f4f6cec946048f5752c3644 this.jumpControl = new JumpControl(this); this.bodyRotationControl = this.createBodyControl(); this.navigation = this.createNavigation(level); -@@ -1405,7 +1405,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1407,7 +1407,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } protected InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -269,7 +269,7 @@ index 26f7cd5ddacf5f908702adbf55b56dcc6fcbe162..c431f28c3f4f6cec946048f5752c3644 } public boolean isWithinRestriction() { -@@ -1723,4 +1723,58 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1725,4 +1725,58 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab public float[] getArmorDropChances() { return this.armorDropChances; } @@ -4666,7 +4666,7 @@ index a60c7b828332fc214caea10be9bc1505e2b5d0a9..6c6806fd7204e3610142f0365d158aee } diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 3608fbcd1998ddcdec8ec501dd5f6b80911104ee..33bb29bc03bce90750b3b9376a6ed848208a569d 100644 +index 9d428724f3564289f262d8c1ca11692d133a61c5..26eebc3a37890e7e79d9cf737f2853623a14015c 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java @@ -78,6 +78,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { diff --git a/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch index 1b8b472f3..c15868c7d 100644 --- a/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0019-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/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index f02723a017d2c21c425fb11d2814052185960b97..80f2d38449f1db1d9b6926e4552d3061cb88b4af 100644 +index 680a7b609db5de96742a8042d0f9ab5e0a8a8e7f..3709efe15b30e4140ba677ffdcd4634b06e34d7d 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -531,6 +531,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -101,10 +101,10 @@ index cef0c2bd5c010e9ca6a8f42f2def832c244eae31..c5a5bd367478c32672fbf5ec237bef43 public boolean isSensitiveToWater() { diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index d93584c6793818463e8883ffe399bf16b03263a9..70ee86993d381445855ac7e7290da384d6675987 100644 +index 0b14919c8d7c153d2715abb286e1b466945e86fc..bc22d67bba9b1ebb6bef84f5326375100d24461d 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -1655,19 +1655,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1657,19 +1657,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } public boolean isSunBurnTick() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch index 918032262..60238f3b2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch @@ -65,7 +65,7 @@ } @Override -@@ -1280,7 +_,7 @@ +@@ -1282,7 +_,7 @@ ); } @@ -74,7 +74,7 @@ return spawnGroupData; } -@@ -1619,6 +_,7 @@ +@@ -1621,6 +_,7 @@ this.playAttackSound(); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index 4b47394a7..89a9146e7 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -106,7 +106,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -3051,6 +_,18 @@ +@@ -3052,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +125,7 @@ @Override public void restart() { CraftServer.this.restart(); -@@ -3085,6 +_,7 @@ +@@ -3086,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -133,7 +133,7 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3295,4 +_,18 @@ +@@ -3296,4 +_,18 @@ this.console.addPluginAllowingSleep(plugin.getName(), value); } // Paper end - API to check if the server is sleeping From 4a3b139ff21b255f7485fcec5c264a3d059c7eed Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 8 Mar 2025 15:20:15 -0800 Subject: [PATCH 027/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@45198578 Set old position / rotation for newly created entities PaperMC/Paper@8e69d981 Player - Expose player score (#12243) PaperMC/Paper@2526fe06 Add type to represent unimplemented data component types (#12222) PaperMC/Paper@20df25d3 Don't resync all attributes when updating scaled health (#12232) PaperMC/Paper@43f37b1b Remove ItemFactory#enchantWithLevels range check for vanilla parity (#12209) PaperMC/Paper@a2b0ff06 Fix cancelling PlayerInteractEvent at (0, 0, 0) (#12215) PaperMC/Paper@df96f8a0 Correctly handle events for end portal (#12246) PaperMC/Paper@25654978 Cancel PlayerLaunchProjectileEvent properly for enderpearls (#12223) PaperMC/Paper@34c794dc ServerTickManager#requestGameToSprint - Silence command like feedback (#12220) --- gradle.properties | 2 +- .../files/src/main/java/org/bukkit/entity/Player.java.patch | 6 +++--- .../net/minecraft/server/level/ServerLevel.java.patch | 2 +- .../net/minecraft/world/item/EnderpearlItem.java.patch | 4 ++-- .../org/bukkit/craftbukkit/entity/CraftPlayer.java.patch | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/gradle.properties b/gradle.properties index fa105cebb..fba37907f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = ce3001621894ea775206abe455442d0aeeef3535 +paperCommit = 34c794dc51305e50c315e07e555a4ba10c208357 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch index ed10b708d..8998eac18 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch @@ -1,9 +1,9 @@ --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3902,4 +_,123 @@ - * @return the result of this method, holding leftovers and spawned items. +@@ -3918,4 +_,123 @@ + * @param score New death screen score of player */ - PlayerGiveResult give(Collection items, boolean dropIfFull); + void setDeathScreenScore(int score); + + // Purpur start + /** diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch index 40252d7fa..cced43f51 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch @@ -161,7 +161,7 @@ this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. -@@ -2678,7 +_,7 @@ +@@ -2679,7 +_,7 @@ // 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/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch index faeb98db1..de340dafe 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch @@ -15,5 +15,5 @@ player.awardStat(Stats.ITEM_USED.get(this)); + player.getCooldowns().addCooldown(itemInHand, player.getAbilities().instabuild ? level.purpurConfig.enderPearlCooldownCreative : level.purpurConfig.enderPearlCooldown); // Purpur - Configurable Ender Pearl cooldown } else { - // Paper end - PlayerLaunchProjectileEvent - player.containerMenu.sendAllDataToRemote(); + if (player instanceof net.minecraft.server.level.ServerPlayer serverPlayer) { + serverPlayer.deregisterEnderPearl(thrownEnderpearl.projectile()); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 3400f22bf..705955ccc 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -46,9 +46,9 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3599,4 +_,76 @@ - - return forwardMovement == backwardMovement ? 0 : forwardMovement ? 1 : -1; +@@ -3606,4 +_,76 @@ + public void setDeathScreenScore(final int score) { + getHandle().setScore(score); } + + // Purpur start - Purpur client support From a14011f4cedc1fe544b00ff156bb92b76b413cea Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 9 Mar 2025 13:58:22 -0700 Subject: [PATCH 028/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@3d13b115 fix: switch back to using a snapshot for velocity-natives PaperMC/Paper@7afae7f4 Add client tick end event (#12199) PaperMC/Paper@e5d988df Revert "Fix cancelling PlayerInteractEvent at (0, 0, 0) (#12215)" PaperMC/Paper@743346a5 Force update attributes PaperMC/Paper@1a7288aa Adjust unloaded chunk check for block digging --- gradle.properties | 2 +- .../features/0001-Ridables.patch | 6 ++-- .../ServerGamePacketListenerImpl.java.patch | 32 +++++++++---------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/gradle.properties b/gradle.properties index fba37907f..a5072d5b8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 34c794dc51305e50c315e07e555a4ba10c208357 +paperCommit = 1a7288aa05cfb0a168850a7cc879f55235fe5934 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 9cd6dcbb1..043d68d85 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -30,7 +30,7 @@ index 121b57c7f5345f5d8884eaa1d36dac79fb7d42ef..9afbfe9bf493e09ca1963e8956ab7573 /* Drop global time updates if (this.tickCount % 20 == 0) { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index c9eef7221254f3661959a4898485c97b87ec1b8d..b801e2d595383e12120abe3b1b95cbc364515be9 100644 +index 63b1b2f920d5f2beb23433a373233aa2f1f95dbb..3c3e8e58cd2761ab2f0652e63f944a5c9a95dca8 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -217,6 +217,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -62,10 +62,10 @@ index a6f771cbee878eb383b67c61fa2469f2916413b5..d77381237f8a7d1b2f280a5032f5e1c8 private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 77e7665b56810762f58096e2482f019bbc3918cb..aa982f27e80f6023cadb2d2e5d0f84e472ee863c 100644 +index 82fb27ea7d3a21b4eb588c2b6c9f9da213db6a88..032d298dadb64ceb5f110a62402a08f78fc99c34 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2835,6 +2835,8 @@ public class ServerGamePacketListenerImpl +@@ -2845,6 +2845,8 @@ public class ServerGamePacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index 56abf45e6..b4401a637 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -1,7 +1,7 @@ --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -326,6 +_,20 @@ - this.chatMessageChain = new FutureChain(server.chatExecutor); // CraftBukkit - async chat +@@ -328,6 +_,20 @@ + this.tickEndEvent = new io.papermc.paper.event.packet.ClientTickEndEvent(player.getBukkitEntity()); // Paper - add client tick end event } + // Purpur start - AFK API @@ -21,7 +21,7 @@ @Override public void tick() { if (this.ackBlockChangesUpTo > -1) { -@@ -384,6 +_,12 @@ +@@ -386,6 +_,12 @@ if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits @@ -34,7 +34,7 @@ this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854 this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause } -@@ -629,6 +_,8 @@ +@@ -631,6 +_,8 @@ this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -43,7 +43,7 @@ Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -709,6 +_,7 @@ +@@ -711,6 +_,7 @@ PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); if (packet.getId() == this.awaitingTeleport) { if (this.awaitingPositionFromClient == null) { @@ -51,7 +51,7 @@ this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause return; } -@@ -1176,6 +_,10 @@ +@@ -1179,6 +_,10 @@ final int maxBookPageSize = pageMax.intValue(); final double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D); long byteAllowed = maxBookPageSize; @@ -62,7 +62,7 @@ for (final String page : pageList) { final int byteLength = page.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; byteTotal += byteLength; -@@ -1200,7 +_,8 @@ +@@ -1203,7 +_,8 @@ } if (byteTotal > byteAllowed) { @@ -72,7 +72,7 @@ this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect return; } -@@ -1219,31 +_,45 @@ +@@ -1222,31 +_,45 @@ Optional optional = packet.title(); optional.ifPresent(list::add); list.addAll(packet.pages()); @@ -122,7 +122,7 @@ itemStack.set( DataComponents.WRITTEN_BOOK_CONTENT, new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list, true) -@@ -1257,6 +_,16 @@ +@@ -1260,6 +_,16 @@ return this.player.isTextFilteringEnabled() ? Filterable.passThrough(filteredText.filteredOrEmpty()) : Filterable.from(filteredText); } @@ -139,7 +139,7 @@ @Override public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); -@@ -1292,7 +_,15 @@ +@@ -1295,7 +_,15 @@ @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); @@ -156,7 +156,7 @@ this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause } else { ServerLevel serverLevel = this.player.serverLevel(); -@@ -1467,7 +_,7 @@ +@@ -1470,7 +_,7 @@ movedWrongly = true; if (event.getLogWarning()) // Paper end @@ -165,7 +165,7 @@ } // Paper } -@@ -1533,6 +_,8 @@ +@@ -1536,6 +_,8 @@ this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -174,7 +174,7 @@ Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -1589,6 +_,13 @@ +@@ -1592,6 +_,13 @@ this.player.tryResetCurrentImpulseContext(); } @@ -188,7 +188,7 @@ this.player.checkMovementStatistics(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1637,6 +_,17 @@ +@@ -1640,6 +_,17 @@ } } @@ -206,7 +206,7 @@ // Paper start - optimise out extra getCubes private boolean hasNewCollision(final ServerLevel level, final Entity entity, final AABB oldBox, final AABB newBox) { final List collisionsBB = new java.util.ArrayList<>(); -@@ -2001,6 +_,7 @@ +@@ -2010,6 +_,7 @@ boolean cancelled; if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) { @@ -214,7 +214,7 @@ org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { -@@ -2741,6 +_,7 @@ +@@ -2751,6 +_,7 @@ AABB boundingBox = target.getBoundingBox(); if (this.player.canInteractWithEntity(boundingBox, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience value for interact range From 3a1b29a9e153da446987bbf2ab5e4878cd60f814 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 10 Mar 2025 19:56:41 -0700 Subject: [PATCH 029/289] [ci skip] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@f4f27551 [ci/skip] Clarify BlockFadeEvent#getNewState javadocs (#12250) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a5072d5b8..83305470f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 1a7288aa05cfb0a168850a7cc879f55235fe5934 +paperCommit = f4f275519f7c1fbe9db173b7144a4fe81440e365 org.gradle.configuration-cache = true org.gradle.caching = true From 5d1df7046101ae74283ed66dd88f800d3d25d860 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 14 Mar 2025 20:30:53 -0700 Subject: [PATCH 030/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@102c8bbc Add config for updating equipment on player actions (#12275) PaperMC/Paper@f0388e2f Call EntityPushedByEntityAttackEvent for Mace AoE (#12257) PaperMC/Paper@c37b890c More deferred requireNonNull message creation PaperMC/Paper@310f5229 Add unsupported config option and internal API to simplify remote item matching PaperMC/Paper@6ea42025 Send all attributes on respawn (#12274) --- gradle.properties | 2 +- .../features/0001-Ridables.patch | 6 ++--- ...-Minecart-settings-and-WASD-controls.patch | 4 +-- .../server/level/ServerPlayer.java.patch | 26 +++++++++---------- ...0005-Add-EntityTeleportHinderedEvent.patch | 8 +++--- .../craftbukkit/entity/CraftPlayer.java.patch | 10 +++---- 6 files changed, 28 insertions(+), 28 deletions(-) diff --git a/gradle.properties b/gradle.properties index 83305470f..3d3b1c720 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = f4f275519f7c1fbe9db173b7144a4fe81440e365 +paperCommit = 6ea42025a49f232f47861c6ca943b0fc66b7effe org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 043d68d85..7a56507e8 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -42,10 +42,10 @@ index 63b1b2f920d5f2beb23433a373233aa2f1f95dbb..3c3e8e58cd2761ab2f0652e63f944a5c public LevelChunk getChunkIfLoaded(int x, int z) { return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index a6f771cbee878eb383b67c61fa2469f2916413b5..d77381237f8a7d1b2f280a5032f5e1c8f0ab8f94 100644 +index 6275078467313fe95ae2ae22740135a4b4f39511..7ebecee1de098c218304868b1223b914941cae8a 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -848,6 +848,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -855,6 +855,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.trackEnteredOrExitedLavaOnVehicle(); this.updatePlayerAttributes(); this.advancements.flushDirty(this); @@ -62,7 +62,7 @@ index a6f771cbee878eb383b67c61fa2469f2916413b5..d77381237f8a7d1b2f280a5032f5e1c8 private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 82fb27ea7d3a21b4eb588c2b6c9f9da213db6a88..032d298dadb64ceb5f110a62402a08f78fc99c34 100644 +index 7b938c0d28af3f15106666e13642e88aa398db4d..9e8fdd28a2b2031e4db011663b67582fce5b3b0f 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2845,6 +2845,8 @@ public class ServerGamePacketListenerImpl diff --git a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch index dd6a74fc4..51ac344e0 100644 --- a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch +++ b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 580818b9d2f992dd33b4831dbc612ba28c1bd725..3c7a30c9d1aa00f2b8e25c505ec57ad27344ffe5 100644 +index 7ebecee1de098c218304868b1223b914941cae8a..561ee18dfd063f1853a1389f245e8b29bc0b68a7 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -1240,6 +1240,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1247,6 +1247,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc } else { // Purpur start - Add boat fall damage config if (damageSource.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index 8adf80143..fdfe657ec 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -393,6 +_,10 @@ +@@ -400,6 +_,10 @@ 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 @@ -11,7 +11,7 @@ // Paper start - rewrite chunk system private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; -@@ -561,6 +_,10 @@ +@@ -568,6 +_,10 @@ if (tag != null) { BlockPos.CODEC.parse(NbtOps.INSTANCE, tag).resultOrPartial(LOGGER::error).ifPresent(pos -> this.raidOmenPosition = pos); } @@ -22,7 +22,7 @@ } @Override -@@ -605,6 +_,9 @@ +@@ -612,6 +_,9 @@ } this.saveEnderPearls(compound); @@ -32,7 +32,7 @@ } private void saveParentVehicle(CompoundTag tag) { -@@ -1124,6 +_,7 @@ +@@ -1131,6 +_,7 @@ ) ); Team team = this.getTeam(); @@ -40,7 +40,7 @@ if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) { this.server.getPlayerList().broadcastSystemMessage(deathMessage, false); } else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { -@@ -1217,6 +_,13 @@ +@@ -1224,6 +_,13 @@ if (this.isInvulnerableTo(level, damageSource)) { return false; } else { @@ -54,7 +54,7 @@ Entity entity = damageSource.getEntity(); if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. !(entity instanceof Player player && !this.canHarmPlayer(player)) -@@ -1446,6 +_,7 @@ +@@ -1453,6 +_,7 @@ serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -62,7 +62,7 @@ this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1564,7 +_,7 @@ +@@ -1571,7 +_,7 @@ new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), monster -> monster.isPreventingPlayerRest(this.serverLevel(), this) ); @@ -71,7 +71,7 @@ return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1601,7 +_,19 @@ +@@ -1608,7 +_,19 @@ CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); if (!this.serverLevel().canSleepThroughNights()) { @@ -92,7 +92,7 @@ } ((ServerLevel)this.level()).updateSleepingPlayerList(); -@@ -1709,6 +_,7 @@ +@@ -1716,6 +_,7 @@ @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -100,7 +100,7 @@ this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -2014,6 +_,26 @@ +@@ -2021,6 +_,26 @@ this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -127,7 +127,7 @@ @Override public void displayClientMessage(Component chatComponent, boolean actionBar) { this.sendSystemMessage(chatComponent, actionBar); -@@ -2235,6 +_,20 @@ +@@ -2242,6 +_,20 @@ ); } @@ -148,7 +148,7 @@ public void sendSystemMessage(Component mesage) { this.sendSystemMessage(mesage, false); } -@@ -2373,7 +_,67 @@ +@@ -2380,7 +_,67 @@ public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -217,7 +217,7 @@ public ServerStatsCounter getStats() { return this.stats; -@@ -3078,4 +_,56 @@ +@@ -3085,4 +_,56 @@ return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch index caf81962c..828db575c 100644 --- a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0005-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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 22edc6faa929d8110fb0c08154eb47155db8fd1f..dba6bacd7bd559d76182db5ff3b749cde326b545 100644 +index 71cc3b64ee27118badcdd6214cb1c6a120202f44..623e4c9985e04edeeac1cdf1d8f89be4849bab33 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -261,6 +261,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -29,10 +29,10 @@ index 22edc6faa929d8110fb0c08154eb47155db8fd1f..dba6bacd7bd559d76182db5ff3b749cd } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index a435aed8eba00dcc8775634c8e10695197977080..c7c02af6402200201250350dd04ec8de3ad43d2b 100644 +index 4dd2c2c824ffc7c6da02a3e740b4025459073295..db2cd4603c26bca59654f0a5225b18c446a7f612 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1439,6 +1439,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1441,6 +1441,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper start - Teleport passenger API // Don't allow teleporting between worlds while keeping passengers if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -40,7 +40,7 @@ index a435aed8eba00dcc8775634c8e10695197977080..c7c02af6402200201250350dd04ec8de return false; } -@@ -1460,6 +1461,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1462,6 +1463,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 705955ccc..b3328ecef 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -592,10 +_,15 @@ +@@ -594,10 +_,15 @@ @Override public void setPlayerListName(String name) { @@ -17,7 +17,7 @@ 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)) { -@@ -2753,6 +_,28 @@ +@@ -2755,6 +_,28 @@ return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -46,9 +46,9 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3606,4 +_,76 @@ - public void setDeathScreenScore(final int score) { - getHandle().setScore(score); +@@ -3624,4 +_,76 @@ + public void setSimplifyContainerDesyncCheck(final boolean simplifyContainerDesyncCheck) { + this.simplifyContainerDesyncCheck = simplifyContainerDesyncCheck; } + + // Purpur start - Purpur client support From 34076dd6f71f7b7f85e99c4b835ee5696cd10178 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 14 Mar 2025 20:40:18 -0700 Subject: [PATCH 031/289] bump paperweight version --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 55d26f597..08d29ffea 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ import org.gradle.api.tasks.testing.logging.TestLogEvent plugins { java // TODO java launcher tasks - id("io.papermc.paperweight.patcher") version "2.0.0-beta.14" + id("io.papermc.paperweight.patcher") version "2.0.0-beta.15" } val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/" From 16fd9730d05e0444ef222d35b256d0779efc1df1 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 14 Mar 2025 20:40:46 -0700 Subject: [PATCH 032/289] convert patches to git --- purpur-server/build.gradle.kts.patch | 12 ++++++---- .../destroystokyo/paper/Metrics.java.patch | 12 ++++++++-- .../paper/PaperVersionFetcher.java.patch | 20 +++++++++++----- .../paper/console/PaperConsole.java.patch | 10 +++++++- .../paper/entity/ai/MobGoalHelper.java.patch | 10 +++++++- .../paper/gui/RAMDetails.java.patch | 12 ++++++++-- .../paper/ServerBuildInfoImpl.java.patch | 14 ++++++++--- .../command/PaperPluginsCommand.java.patch | 16 +++++++++---- .../paper/logging/SysoutCatcher.java.patch | 10 +++++++- .../craftbukkit/CraftOfflinePlayer.java.patch | 14 ++++++++--- .../bukkit/craftbukkit/CraftServer.java.patch | 24 ++++++++++++------- .../bukkit/craftbukkit/CraftWorld.java.patch | 10 +++++++- .../org/bukkit/craftbukkit/Main.java.patch | 12 ++++++++-- .../craftbukkit/block/CraftBeehive.java.patch | 14 ++++++++--- .../craftbukkit/block/CraftConduit.java.patch | 10 +++++++- .../CraftConsoleCommandSender.java.patch | 12 ++++++++-- .../entity/CraftEndermite.java.patch | 10 +++++++- .../craftbukkit/entity/CraftEntity.java.patch | 10 +++++++- .../entity/CraftHumanEntity.java.patch | 10 +++++++- .../entity/CraftIronGolem.java.patch | 10 +++++++- .../craftbukkit/entity/CraftItem.java.patch | 10 +++++++- .../entity/CraftLivingEntity.java.patch | 10 +++++++- .../craftbukkit/entity/CraftLlama.java.patch | 10 +++++++- .../craftbukkit/entity/CraftPlayer.java.patch | 14 ++++++++--- .../entity/CraftSnowman.java.patch | 10 +++++++- .../entity/CraftVillager.java.patch | 10 +++++++- .../craftbukkit/entity/CraftWither.java.patch | 10 +++++++- .../craftbukkit/entity/CraftWolf.java.patch | 10 +++++++- .../inventory/CraftInventoryAnvil.java.patch | 14 ++++++++--- .../inventory/CraftItemStack.java.patch | 10 +++++++- .../inventory/CraftRecipe.java.patch | 10 +++++++- .../inventory/view/CraftAnvilView.java.patch | 10 +++++++- .../craftbukkit/legacy/CraftLegacy.java.patch | 10 +++++++- .../legacy/MaterialRerouting.java.patch | 10 +++++++- .../map/CraftMapRenderer.java.patch | 10 +++++++- .../scheduler/CraftScheduler.java.patch | 10 +++++++- .../util/CraftMagicNumbers.java.patch | 10 +++++++- .../craftbukkit/util/Versioning.java.patch | 10 +++++++- .../permissions/CommandPermissions.java.patch | 10 +++++++- .../spigotmc/TicksPerSecondCommand.java.patch | 10 +++++++- .../org/spigotmc/WatchdogThread.java.patch | 16 +++++++++---- .../files/src/main/resources/log4j2.xml.patch | 10 +++++++- ...MinecraftCommandPermissionsTest.java.patch | 12 ++++++++-- 43 files changed, 418 insertions(+), 80 deletions(-) diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index b28abf111..c5985e7d3 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -1,9 +1,12 @@ --- a/paper-server/build.gradle.kts +++ b/paper-server/build.gradle.kts -@@ -21,6 +_,16 @@ +@@ -19,7 +_,17 @@ + paperweight { + minecraftVersion = providers.gradleProperty("mcVersion") // macheOldPath = file("F:\\Projects\\PaperTooling\\mache\\versions\\1.21.4\\src\\main\\java") - // gitFilePatches = true - +- // gitFilePatches = true ++ gitFilePatches = true ++ + val purpur = forks.register("purpur") { + upstream.patchDir("paperServer") { + upstreamPath = "paper-server" @@ -13,10 +16,9 @@ + } + } + activeFork = purpur -+ + spigot { buildDataRef = "3edaf46ec1eed4115ce1b18d2846cded42577e42" - packageVersion = "v1_21_R3" // also needs to be updated in MappingEnvironment @@ -101,7 +_,20 @@ } } diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch index fc55c48ff..c59cdcfc0 100644 --- a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java +index 8f62879582195d8ae4f64bd23f752fa133b1c973..be1bb14dca9367b9685841985b6198376986c496 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java +++ b/src/main/java/com/destroystokyo/paper/Metrics.java -@@ -592,7 +_,7 @@ +@@ -592,7 +592,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)) { @@ -9,7 +17,7 @@ metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> { String minecraftVersion = Bukkit.getVersion(); -@@ -601,16 +_,8 @@ +@@ -601,16 +601,8 @@ public class Metrics { })); metrics.addCustomChart(new Metrics.SingleLineChart("players", () -> Bukkit.getOnlinePlayers().size())); diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch index bd41fc396..b9371fba2 100644 --- a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java +index 532306cacd52579cdf37e4aca25887b1ed3ba6a1..fe66e43c27e0798770e102d1385bacbaa90bda07 100644 --- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java +++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -@@ -35,7 +_,10 @@ +@@ -35,7 +35,10 @@ public class PaperVersionFetcher implements VersionFetcher { private static final Logger LOGGER = LogUtils.getClassLogger(); private static final int DISTANCE_ERROR = -1; private static final int DISTANCE_UNKNOWN = -2; @@ -12,7 +20,7 @@ @Override public long getCacheTime() { -@@ -49,7 +_,7 @@ +@@ -49,7 +52,7 @@ public class PaperVersionFetcher implements VersionFetcher { if (build.buildNumber().isEmpty() && build.gitCommit().isEmpty()) { updateMessage = text("You are running a development version without access to version information", color(0xFF5300)); } else { @@ -21,7 +29,7 @@ } final @Nullable Component history = this.getHistory(); -@@ -57,7 +_,7 @@ +@@ -57,7 +60,7 @@ public class PaperVersionFetcher implements VersionFetcher { } private static Component getUpdateStatusMessage(final String repo, final ServerBuildInfo build) { @@ -30,7 +38,7 @@ final OptionalInt buildNumber = build.buildNumber(); if (buildNumber.isPresent()) { -@@ -71,10 +_,10 @@ +@@ -71,10 +74,10 @@ public class PaperVersionFetcher implements VersionFetcher { } return switch (distance) { @@ -45,7 +53,7 @@ .append(Component.newline()) .append(text("Download the new version at: ") .append(text(DOWNLOAD_PAGE, NamedTextColor.GOLD) -@@ -86,18 +_,15 @@ +@@ -86,18 +89,15 @@ public class PaperVersionFetcher implements VersionFetcher { private static int fetchDistanceFromSiteApi(final ServerBuildInfo build, final int jenkinsBuild) { try { try (final BufferedReader reader = Resources.asCharSource( @@ -68,7 +76,7 @@ return DISTANCE_ERROR; } } catch (final IOException e) { -@@ -141,6 +_,6 @@ +@@ -141,6 +141,6 @@ public class PaperVersionFetcher implements VersionFetcher { return null; } diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch index 43b5c7a41..fdeb613e5 100644 --- a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java +index 6ee39b534b8d992655bc0cef3c299d12cbae0034..bc7e4e5560708fea89c584b1d8b471f4966f311a 100644 --- a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java +++ b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java -@@ -20,7 +_,7 @@ +@@ -20,7 +20,7 @@ public final class PaperConsole extends SimpleTerminalConsole { @Override protected LineReader buildReader(LineReaderBuilder builder) { builder diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch index be4e59d89..5eef34d33 100644 --- a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +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 6bdc683b5ade408ee27f1d6636b4d60c8c89cb7c..bc6d3898d8784e50a0e2264bbb5bde63add61f4e 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 +_,10 @@ +@@ -136,6 +136,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/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch index e567d82a1..f61b8af74 100644 --- a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java +index 12b327eea95e0de9e9c39b7d039badee8ec46508..46696cfe1d99e705d383a1fe4e66f5c5646053d2 100644 --- a/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java +++ b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java -@@ -61,6 +_,7 @@ +@@ -61,6 +61,7 @@ public class RAMDetails extends JList { // Follows CraftServer#getTPS double[] tps = new double[] { @@ -8,7 +16,7 @@ server.tps1.getAverage(), server.tps5.getAverage(), server.tps15.getAverage() -@@ -73,7 +_,7 @@ +@@ -73,7 +74,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((double)this.server.getAverageTickTimeNanos() / (double) TimeUtil.NANOSECONDS_PER_MILLISECOND) + " ms"); diff --git a/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch index fd95c8364..1390aee30 100644 --- a/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java +index 790bad0494454ca12ee152e3de6da3da634d9b20..b36e30fd4057a938e4d90cb42a2dca661f16478e 100644 --- a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java +++ b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java -@@ -31,6 +_,7 @@ +@@ -31,6 +31,7 @@ public record ServerBuildInfoImpl( private static final String ATTRIBUTE_GIT_COMMIT = "Git-Commit"; private static final String BRAND_PAPER_NAME = "Paper"; @@ -8,7 +16,7 @@ private static final String BUILD_DEV = "DEV"; -@@ -42,9 +_,9 @@ +@@ -42,9 +43,9 @@ public record ServerBuildInfoImpl( this( getManifestAttribute(manifest, ATTRIBUTE_BRAND_ID) .map(Key::key) @@ -20,7 +28,7 @@ SharedConstants.getCurrentVersion().getId(), SharedConstants.getCurrentVersion().getName(), getManifestAttribute(manifest, ATTRIBUTE_BUILD_NUMBER) -@@ -61,7 +_,7 @@ +@@ -61,7 +62,7 @@ public record ServerBuildInfoImpl( @Override public boolean isBrandCompatible(final @NotNull Key brandId) { diff --git a/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch index 8992c7e12..b11a57c24 100644 --- a/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java b/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java +index 41c95f00b4b2bea6d31f85e268c33d7f6184823e..2eaf27ddf0bddb23b8850310c332b202b1d7e69c 100644 --- a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java +++ b/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java -@@ -70,10 +_,10 @@ +@@ -70,10 +70,10 @@ public class PaperPluginsCommand extends BukkitCommand { this.setAliases(List.of("pl")); } @@ -13,7 +21,7 @@ } boolean isFirst = true; -@@ -100,15 +_,49 @@ +@@ -100,15 +100,49 @@ public class PaperPluginsCommand extends BukkitCommand { return formattedSubLists; } @@ -66,7 +74,7 @@ builder.append(pluginName); -@@ -126,6 +_,23 @@ +@@ -126,6 +160,23 @@ public class PaperPluginsCommand extends BukkitCommand { return componentHeader.append(Component.text(":")).build(); } @@ -90,7 +98,7 @@ private static Component asPlainComponents(final String strings) { final net.kyori.adventure.text.TextComponent.Builder builder = Component.text(); for (final String string : strings.split("\n")) { -@@ -186,25 +_,25 @@ +@@ -186,25 +237,25 @@ public class PaperPluginsCommand extends BukkitCommand { final int sizePaperPlugins = paperPlugins.size(); final int sizeSpigotPlugins = spigotPlugins.size(); final int sizePlugins = sizePaperPlugins + sizeSpigotPlugins; diff --git a/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch index d8d9954f6..14c7ce66e 100644 --- a/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/io/papermc/paper/logging/SysoutCatcher.java b/src/main/java/io/papermc/paper/logging/SysoutCatcher.java +index a8e813ca89b033f061e695288b3383bdcf128531..96a377a07d8396f893954a3ba97fbf88d73faf6d 100644 --- a/src/main/java/io/papermc/paper/logging/SysoutCatcher.java +++ b/src/main/java/io/papermc/paper/logging/SysoutCatcher.java -@@ -54,9 +_,9 @@ +@@ -54,9 +54,9 @@ public final class SysoutCatcher { final JavaPlugin plugin = JavaPlugin.getProvidingPlugin(clazz); // Instead of just printing the message, send it to the plugin's logger diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch index e6ecfddea..00c64541d 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +index 94ca0407303c4493ab4928b12ec6ecc75aaca549..f2d87c12dd19210ce7e2147fada5c10191008632 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -@@ -363,14 +_,26 @@ +@@ -363,14 +363,26 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa @Override public Location getLocation() { @@ -30,7 +38,7 @@ UUID uuid = new UUID(data.getLong("WorldUUIDMost"), data.getLong("WorldUUIDLeast")); -@@ -381,9 +_,9 @@ +@@ -381,9 +393,9 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa rotation.getFloat(0), rotation.getFloat(1) ); @@ -42,7 +50,7 @@ } @Override -@@ -626,4 +_,191 @@ +@@ -626,4 +638,191 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa manager.save(); } } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index 89a9146e7..ce7730cc4 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +index 99beb7ec6e1864426492f4e27e650ab97ce6d4b5..32e5dd24ac682fcbcc684b86835b8955f904a347 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -428,6 +_,20 @@ +@@ -428,6 +428,20 @@ public final class CraftServer implements Server { this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager); this.pluginManager.paperPluginManager = this.paperPluginManager; // Paper end @@ -21,7 +29,7 @@ CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1088,6 +_,7 @@ +@@ -1088,6 +1102,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); @@ -29,7 +37,7 @@ for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1103,6 +_,7 @@ +@@ -1103,6 +1118,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -37,7 +45,7 @@ } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1120,6 +_,7 @@ +@@ -1120,6 +1136,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -45,7 +53,7 @@ this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1647,6 +_,60 @@ +@@ -1647,6 +1664,60 @@ public final class CraftServer implements Server { return true; } @@ -106,7 +114,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -3052,6 +_,18 @@ +@@ -3052,6 +3123,18 @@ public final class CraftServer implements Server { return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +133,7 @@ @Override public void restart() { CraftServer.this.restart(); -@@ -3086,6 +_,7 @@ +@@ -3086,6 +3169,7 @@ public final class CraftServer implements Server { @Override public double[] getTPS() { return new double[] { @@ -133,7 +141,7 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3296,4 +_,18 @@ +@@ -3296,4 +3380,18 @@ public final class CraftServer implements Server { this.console.addPluginAllowingSleep(plugin.getName(), value); } // Paper end - API to check if the server is sleeping diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch index 35b519694..d7732903f 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +index 1439d282167dc8a2e66f4896849153b810112988..ca60f91ef012c94174a0803eb77699ba9ecff5e1 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2346,6 +_,50 @@ +@@ -2346,6 +2346,50 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch index e86001e4b..b8b010b26 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java +index bf5343b0847e9f57ffbc7f33714ae6ca62f14332..2e1b7f613de8876095ef39bb0341a3f9520c8d5d 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -176,6 +_,13 @@ +@@ -176,6 +176,13 @@ public class Main { .describedAs("Jar file"); // Paper end @@ -14,7 +22,7 @@ // Paper start acceptsAll(asList("server-name"), "Name of the server") .withRequiredArg() -@@ -259,7 +_,7 @@ +@@ -259,7 +266,7 @@ public class Main { System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch index 39590b5cd..ba80cf36f 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java +index 1a2a05160ba51d9c75f1ae6ae61d944d81428722..a86b026f2f420637d125cf697bcd07bf314c98aa 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java -@@ -16,8 +_,15 @@ +@@ -16,8 +16,15 @@ import org.bukkit.entity.Bee; public class CraftBeehive extends CraftBlockEntityState implements Beehive { @@ -16,7 +24,7 @@ } protected CraftBeehive(CraftBeehive state, Location location) { -@@ -76,14 +_,54 @@ +@@ -76,14 +83,54 @@ public class CraftBeehive extends CraftBlockEntityState impl } } @@ -71,7 +79,7 @@ } @Override -@@ -100,6 +_,7 @@ +@@ -100,6 +147,7 @@ public class CraftBeehive extends CraftBlockEntityState impl @Override public void clearEntities() { getSnapshot().clearBees(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch index e60687bc8..0dc1d03b2 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java +index c1759aeb3e6ad0e4eb66cba3da1b120dd1dce812..a663962e5181e89286caa18f537c1f5758b41623 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java -@@ -73,7 +_,7 @@ +@@ -73,7 +73,7 @@ public class CraftConduit extends CraftBlockEntityState impl public int getRange() { this.ensureNoWorldGeneration(); ConduitBlockEntity conduit = (ConduitBlockEntity) this.getTileEntityFromWorld(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch index 411f8ce59..dd0476d07 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java b/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java +index 4e56018b64d11f76c8da43fd8f85c6de72204e36..36cec3ed39807e85013e4e3b98c979d7af37ce58 100644 --- a/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java +++ b/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java -@@ -21,7 +_,12 @@ +@@ -21,7 +21,12 @@ public class CraftConsoleCommandSender extends ServerCommandSender implements Co @Override public void sendMessage(String message) { @@ -14,7 +22,7 @@ } @Override -@@ -91,7 +_,7 @@ +@@ -91,7 +96,7 @@ public class CraftConsoleCommandSender extends ServerCommandSender implements Co // Paper start @Override public void sendMessage(final net.kyori.adventure.identity.Identity identity, final net.kyori.adventure.text.Component message, final net.kyori.adventure.audience.MessageType type) { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch index 195b6492a..38febf368 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java +index d657fd2c507a5b215aeab0a5f3e9c2ee892a27c8..3604d92c122b5c8be823098ce7b91e57e976589c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java -@@ -21,12 +_,12 @@ +@@ -21,12 +21,12 @@ public class CraftEndermite extends CraftMonster implements Endermite { @Override public boolean isPlayerSpawned() { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch index fd0fe6186..2186cb893 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +index 1ee0ad266955e36b729ba31eb75aad9289acd8e4..d7cf58309b3f455a18de7672fe6ee913f86bac5b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -90,6 +_,18 @@ +@@ -90,6 +90,18 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch index 721712915..0a5a9bec9 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +index a396157548a5b3c3e86206c35789bb40346c701c..469b99bede578b03a1b711b4404a88bf85d7e7ca 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -281,6 +_,7 @@ +@@ -281,6 +281,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { @Override public void recalculatePermissions() { this.perm.recalculatePermissions(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch index d09a7cf6b..cb23c5a90 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java +index 63cae1a2e95d8da17c45c4404a8dd0ca6a413c39..464a3713845548473a357ea66c6147b10ff2cb16 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java -@@ -27,4 +_,17 @@ +@@ -27,4 +27,17 @@ public class CraftIronGolem extends CraftGolem implements IronGolem { public void setPlayerCreated(boolean playerCreated) { this.getHandle().setPlayerCreated(playerCreated); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch index 8625ef963..dbae70c2f 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +index 7a3d982b133f8cdaeb936cf40f92565f0f7f6dd0..8b0faa08411ee1f336641b161acd3412c886dc2b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -@@ -151,4 +_,53 @@ +@@ -151,4 +151,53 @@ public class CraftItem extends CraftEntity implements Item { public String toString() { return "CraftItem"; } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch index defd314c0..97b45b6ed 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +index 4f98d138a275a6c34528b7a5148ef265bc38d6b5..459366331971d09e4cd00fb2035be01b4257477a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -523,7 +_,7 @@ +@@ -523,7 +523,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/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch index 57cca6a07..1141a2522 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java +index 351f42842b780d053cd2e5bad9ae299449141b10..054d2c2b93c43faeeaf56f482eb7b9431a6190df 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java -@@ -90,4 +_,16 @@ +@@ -90,4 +90,16 @@ public class CraftLlama extends CraftChestedHorse implements Llama, com.destroys return this.getHandle().caravanTail == null ? null : (Llama) this.getHandle().caravanTail.getBukkitEntity(); } // Paper end diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index b3328ecef..b7bf83e1a 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +index 5050f446e75f0ec17daf994ed74cbcd3155664c1..4dd2c2c824ffc7c6da02a3e740b4025459073295 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -594,10 +_,15 @@ +@@ -594,10 +594,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public void setPlayerListName(String name) { @@ -17,7 +25,7 @@ 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)) { -@@ -2755,6 +_,28 @@ +@@ -2755,6 +2760,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -46,7 +54,7 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3624,4 +_,76 @@ +@@ -3624,4 +3651,76 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void setSimplifyContainerDesyncCheck(final boolean simplifyContainerDesyncCheck) { this.simplifyContainerDesyncCheck = simplifyContainerDesyncCheck; } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch index 44a2a5b99..c19b1f11b 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java +index 4ce2373ff71c3c1b8951646e057587a3ab09e145..997b8e5059569de4ee8e70127c5d6019ce53afe3 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java -@@ -28,4 +_,17 @@ +@@ -28,4 +28,17 @@ public class CraftSnowman extends CraftGolem implements Snowman, com.destroystok public String toString() { return "CraftSnowman"; } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch index 9f16640c4..c8c5bfff0 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +index aaddce10e1d41531939d1e7f3d717b458ec1b7ab..d65a3bee4671e9e21769ba03f5e65c7312b23580 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -@@ -373,4 +_,11 @@ +@@ -373,4 +373,11 @@ public class CraftVillager extends CraftAbstractVillager implements Villager { getHandle().getGossips().gossips.clear(); } // Paper end diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch index d1bf807f1..4dda0cfaa 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java +index 7881c6253c1d652c0c0d54a9a8accdf0a1ff0f3e..fe8be71121324f64346174922c7bc7f5d3a9de69 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java -@@ -99,4 +_,17 @@ +@@ -99,4 +99,17 @@ public class CraftWither extends CraftMonster implements Wither, com.destroystok this.getHandle().makeInvulnerable(); } // Paper end diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch index a85fb1dbd..ad3ef5231 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java +index c1b7f1281fbd41e765d2c1881763ca25b20e924d..53c620e717d39ef16f44c9697ac4809ac1fdfa6a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -@@ -145,4 +_,15 @@ +@@ -145,4 +145,15 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf { return this.getKey().hashCode(); } } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch index 58b895e59..b7cdb8996 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java +index 792cb6adf0c7a6335cc5985fce8bed2e0f1149af..5734c5caffda79383ae30df20c3defb51b87f39e 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java -@@ -19,6 +_,10 @@ +@@ -19,6 +19,10 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn private int repairCost; private int repairCostAmount; private int maximumRepairCost; @@ -11,7 +19,7 @@ public CraftInventoryAnvil(Location location, Container inventory, Container resultInventory) { super(inventory, resultInventory); -@@ -27,6 +_,10 @@ +@@ -27,6 +31,10 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn this.repairCost = CraftInventoryAnvil.DEFAULT_REPAIR_COST; this.repairCostAmount = CraftInventoryAnvil.DEFAULT_REPAIR_COST_AMOUNT; this.maximumRepairCost = CraftInventoryAnvil.DEFAULT_MAXIMUM_REPAIR_COST; @@ -22,7 +30,7 @@ } @Override -@@ -113,4 +_,30 @@ +@@ -113,4 +121,30 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn consumer.accept(cav); } } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch index 6c51193da..4b3156be4 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +index a6668ae293737a78316724a94866ad7781af68a4..b389563f1efde27341ebf26276ca5c97e495a16a 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -@@ -693,4 +_,285 @@ +@@ -693,4 +693,285 @@ public final class CraftItemStack extends ItemStack { } // Paper end - data component API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch index b3042e1f5..6c76ff216 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java +index 4864e2016cb1d377425297fd1c52b383632cb59e..953d64d128a53eb9ec2ff55140dde5cb80326044 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java -@@ -36,6 +_,7 @@ +@@ -36,6 +36,7 @@ public interface CraftRecipe extends Recipe { stack = Ingredient.of(((RecipeChoice.MaterialChoice) bukkit).getChoices().stream().map((mat) -> CraftItemType.bukkitToMinecraft(mat))); } else if (bukkit instanceof RecipeChoice.ExactChoice) { stack = Ingredient.ofStacks(((RecipeChoice.ExactChoice) bukkit).getChoices().stream().map((mat) -> CraftItemStack.asNMSCopy(mat)).toList()); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch index f2659f49e..665aea240 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java b/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java +index f86c95a13dff012de5db3e41ac261e9e8d44d9f3..1db0b790d824e419bb5fb6ab1f3003e120f9763b 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java -@@ -75,4 +_,26 @@ +@@ -75,4 +75,26 @@ public class CraftAnvilView extends CraftInventoryView +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java +index 51ae8eddadc87b143b93521a3cef374f1e3a24dc..f7837a7f1988d86fd6da4be182c1ba6e69a89eb0 100644 --- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java +++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java -@@ -265,6 +_,7 @@ +@@ -265,6 +265,7 @@ public final class CraftLegacy { } static { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch index 74a359244..cff2d04db 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java b/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java +index db8d8e2a07296d62c3097f02b03319e2e1ba9394..4ba4d52961b4ba61fe2db130ee4368ff358920d4 100644 --- a/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java +++ b/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java -@@ -708,4 +_,32 @@ +@@ -708,4 +708,32 @@ public class MaterialRerouting { meta.setCanPlaceOn(materials); } // Paper end diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch index c9e34b3ad..8f8964142 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java +index cf0920e5f84b35647882fb963e9972af4e8427e0..2949cd29c7fa707835044a4b61eae150df56296e 100644 --- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java +++ b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java -@@ -49,4 +_,10 @@ +@@ -49,4 +49,10 @@ public class CraftMapRenderer extends MapRenderer { } } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch index 46d23c417..16ba9f615 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +index 1354ccfbf525e5e64483ac5f443cc2325ba63850..2e7c3d4befeb6256ce81ecaa9ed4e8fbcb21651e 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -@@ -491,7 +_,7 @@ +@@ -491,7 +491,7 @@ public class CraftScheduler implements BukkitScheduler { this.parsePending(); } else { // this.debugTail = this.debugTail.setNext(new CraftAsyncDebugger(this.currentTick + CraftScheduler.RECENT_TICKS, task.getOwner(), task.getTaskClass())); // Paper diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch index 2f747707b..a2bf937ca 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +index 59c0e8dbe2d0d1155487de33c680e41c0b61acac..1973b54a0eea75d1791b3c27112e599b79afdac2 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -508,7 +_,7 @@ +@@ -508,7 +508,7 @@ public final class CraftMagicNumbers implements UnsafeValues { // Paper start @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch index a560ff72a..7ad9ebe7a 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java +index 774556a62eb240da42e84db4502e2ed43495be17..99eb04643fce44c37fd96c99756837ccafe7b559 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java -@@ -11,7 +_,7 @@ +@@ -11,7 +11,7 @@ public final class Versioning { public static String getBukkitVersion() { String result = "Unknown-Version"; diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch index 6106785b3..17a68682b 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +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 b3169c551b8410f5861f9db0543c785439ecba7c..377b6bdc80019f0c824c8fd35a8f228315bafe9f 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 +_,15 @@ +@@ -23,7 +23,15 @@ public final class CommandPermissions { DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "kick", "Allows the user to kick players", PermissionDefault.OP, commands); DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "stop", "Allows the user to stop the server", PermissionDefault.OP, commands); DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "list", "Allows the user to list all online players", PermissionDefault.OP, commands); diff --git a/purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch index 423a40206..61ed4a1ea 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/spigotmc/TicksPerSecondCommand.java b/src/main/java/org/spigotmc/TicksPerSecondCommand.java +index 6d4851aa8c53793bfaf650f399fc5e2a98dbbb24..4f3bd0628c224bb2567ddb0d40d16d44b9a6e14d 100644 --- a/src/main/java/org/spigotmc/TicksPerSecondCommand.java +++ b/src/main/java/org/spigotmc/TicksPerSecondCommand.java -@@ -43,7 +_,7 @@ +@@ -43,7 +43,7 @@ public class TicksPerSecondCommand extends Command { } TextComponent.Builder builder = text(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch index 03e3a05ad..e3f0ee011 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java +index dced8899be0bb8d562093dc3a7673ed8185b85a6..776bc01784b53e3f1d9a35046109c3b9ee4f0882 100644 --- a/src/main/java/org/spigotmc/WatchdogThread.java +++ b/src/main/java/org/spigotmc/WatchdogThread.java -@@ -25,7 +_,7 @@ +@@ -25,7 +25,7 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre private volatile boolean stopping; private WatchdogThread(long timeoutTime, boolean restart) { @@ -9,7 +17,7 @@ this.timeoutTime = timeoutTime; this.restart = restart; this.earlyWarningEvery = Math.min(GlobalConfiguration.get().watchdog.earlyWarningEvery, timeoutTime); // Paper -@@ -77,14 +_,14 @@ +@@ -77,14 +77,14 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre if (isLongTimeout) { // Paper end logger.log(Level.SEVERE, "------------------------------"); @@ -27,7 +35,7 @@ if (net.minecraft.world.level.Level.lastPhysicsProblem != null) { logger.log(Level.SEVERE, "------------------------------"); -@@ -104,12 +_,12 @@ +@@ -104,12 +104,12 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre } // Paper end } else { @@ -42,7 +50,7 @@ FeatureHooks.dumpAllChunkLoadInfo(MinecraftServer.getServer(), isLongTimeout); // Paper - log detailed tick information WatchdogThread.dumpThread(ManagementFactory.getThreadMXBean().getThreadInfo(MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE), logger); logger.log(Level.SEVERE, "------------------------------"); -@@ -122,7 +_,7 @@ +@@ -122,7 +122,7 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre WatchdogThread.dumpThread(thread, logger); } } else { diff --git a/purpur-server/paper-patches/files/src/main/resources/log4j2.xml.patch b/purpur-server/paper-patches/files/src/main/resources/log4j2.xml.patch index 8b4a31032..9d8572f67 100644 --- a/purpur-server/paper-patches/files/src/main/resources/log4j2.xml.patch +++ b/purpur-server/paper-patches/files/src/main/resources/log4j2.xml.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml +index d2a75850af9c6ad2aca66a5f994f1b587d73eac4..a056aa167887abef9e6d531a9edd2cda433567d2 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml -@@ -2,7 +_,16 @@ +@@ -2,7 +2,16 @@ diff --git a/purpur-server/paper-patches/files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch b/purpur-server/paper-patches/files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch index 6fb471079..8e0ba8a87 100644 --- a/purpur-server/paper-patches/files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch +++ b/purpur-server/paper-patches/files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch @@ -1,6 +1,14 @@ +From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur paperServer File Patches + + +diff --git a/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java b/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java +index fe08e446e86d53cef6eecc33cd484e93adc42871..54fff448fded12cd6110583f0c255f2ca86388da 100644 --- a/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java +++ b/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java -@@ -46,6 +_,7 @@ +@@ -46,6 +46,7 @@ public class MinecraftCommandPermissionsTest { Set foundPerms = new HashSet<>(); for (CommandNode child : root.getChildren()) { final String vanillaPerm = VanillaCommandWrapper.getPermission(child); @@ -8,7 +16,7 @@ if (!perms.contains(vanillaPerm)) { missing.add("Missing permission for " + child.getName() + " (" + vanillaPerm + ") command"); } else { -@@ -58,6 +_,25 @@ +@@ -58,6 +59,25 @@ public class MinecraftCommandPermissionsTest { } private static final List TO_SKIP = List.of( From 06e18343a1fcb976e664cad209f4e32f8430bc0b Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 14 Mar 2025 20:43:46 -0700 Subject: [PATCH 033/289] bump version & paper hash --- gradle.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index 3d3b1c720..e47ae97ea 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = org.purpurmc.purpur -version = 1.21.4-R0.1-SNAPSHOT +version = 1.21.5-R0.1-SNAPSHOT -mcVersion = 1.21.4 -paperCommit = 6ea42025a49f232f47861c6ca943b0fc66b7effe +mcVersion = 1.21.5-pre1 +paperCommit = 4db94754ad4ea08f76ff8746677a20500e206bc2 org.gradle.configuration-cache = true org.gradle.caching = true From 907406a11b63728a08ad20fe30ca50a02c6962d1 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 14 Mar 2025 20:49:34 -0700 Subject: [PATCH 034/289] fix build.gradle patch --- purpur-server/build.gradle.kts.patch | 34 +++++++++++++++++----------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index c5985e7d3..eb32daf29 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -1,12 +1,19 @@ --- a/paper-server/build.gradle.kts +++ b/paper-server/build.gradle.kts -@@ -19,7 +_,17 @@ +@@ -18,11 +_,21 @@ + paperweight { minecraftVersion = providers.gradleProperty("mcVersion") - // macheOldPath = file("F:\\Projects\\PaperTooling\\mache\\versions\\1.21.4\\src\\main\\java") -- // gitFilePatches = true +- gitFilePatches = false +- +- updatingMinecraft { +- oldPaperCommit = "f4f275519f7c1fbe9db173b7144a4fe81440e365" + gitFilePatches = true + ++ //updatingMinecraft { ++ // oldPaperCommit = "f4f275519f7c1fbe9db173b7144a4fe81440e365" ++ //} ++ + val purpur = forks.register("purpur") { + upstream.patchDir("paperServer") { + upstreamPath = "paper-server" @@ -14,16 +21,17 @@ + patchesDir = rootDirectory.dir("purpur-server/paper-patches") + outputDir = rootDirectory.dir("paper-server") + } -+ } + } + activeFork = purpur spigot { buildDataRef = "3edaf46ec1eed4115ce1b18d2846cded42577e42" -@@ -101,7 +_,20 @@ +@@ -104,7 +_,21 @@ } } -val log4jPlugins = sourceSets.create("log4jPlugins") ++ +sourceSets { + main { + java { srcDir("../paper-server/src/main/java") } @@ -41,7 +49,7 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { extendsFrom(configurations.compileClasspath.get()) } -@@ -119,7 +_,7 @@ +@@ -122,7 +_,7 @@ } dependencies { @@ -50,7 +58,7 @@ implementation("ca.spottedleaf:concurrentutil:0.0.3") implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+ implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21 -@@ -150,6 +_,10 @@ +@@ -153,6 +_,10 @@ runtimeOnly("com.mysql:mysql-connector-j:9.1.0") runtimeOnly("com.lmax:disruptor:3.4.4") @@ -61,23 +69,23 @@ runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.6") runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") -@@ -189,14 +_,14 @@ +@@ -192,14 +_,14 @@ val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim() attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", - "Implementation-Title" to "Paper", -+ "Implementation-Title" to "Purpur", // Purpur ++ "Implementation-Title" to "Purpur", "Implementation-Version" to implementationVersion, "Implementation-Vendor" to date, - "Specification-Title" to "Paper", -+ "Specification-Title" to "Purpur", // Purpur ++ "Specification-Title" to "Purpur", "Specification-Version" to project.version, - "Specification-Vendor" to "Paper Team", - "Brand-Id" to "papermc:paper", - "Brand-Name" to "Paper", -+ "Specification-Vendor" to "Purpur Team", // Purpur -+ "Brand-Id" to "purpurmc:purpur", // Purpur -+ "Brand-Name" to "Purpur", // Purpur ++ "Specification-Vendor" to "Purpur Team", ++ "Brand-Id" to "purpurmc:purpur", ++ "Brand-Name" to "Purpur", "Build-Number" to (build ?: ""), "Build-Time" to buildTime.toString(), "Git-Branch" to gitBranch, From e2a920d63cfe16cf2f3356d86aa33fc08f0266fe Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 14 Mar 2025 21:03:05 -0700 Subject: [PATCH 035/289] move file patches to rejected directory --- .../io/papermc/paper/entity/activation/ActivationRange.java.patch | 0 .../{sources => rejected}/net/minecraft/CrashReport.java.patch | 0 .../net/minecraft/commands/CommandSourceStack.java.patch | 0 .../net/minecraft/commands/Commands.java.patch | 0 .../commands/arguments/selector/EntitySelector.java.patch | 0 .../{sources => rejected}/net/minecraft/core/BlockPos.java.patch | 0 .../net/minecraft/core/dispenser/DispenseItemBehavior.java.patch | 0 .../core/dispenser/EquipmentDispenseItemBehavior.java.patch | 0 .../net/minecraft/gametest/framework/GameTestHelper.java.patch | 0 .../net/minecraft/network/Connection.java.patch | 0 .../net/minecraft/network/chat/SignedMessageChain.java.patch | 0 .../{sources => rejected}/net/minecraft/server/Main.java.patch | 0 .../net/minecraft/server/MinecraftServer.java.patch | 0 .../net/minecraft/server/PlayerAdvancements.java.patch | 0 .../net/minecraft/server/commands/EnchantCommand.java.patch | 0 .../net/minecraft/server/commands/GameModeCommand.java.patch | 0 .../net/minecraft/server/commands/GiveCommand.java.patch | 0 .../net/minecraft/server/dedicated/DedicatedServer.java.patch | 0 .../server/dedicated/DedicatedServerProperties.java.patch | 0 .../net/minecraft/server/gui/MinecraftServerGui.java.patch | 0 .../net/minecraft/server/gui/StatsComponent.java.patch | 0 .../net/minecraft/server/level/ServerLevel.java.patch | 0 .../net/minecraft/server/level/ServerPlayer.java.patch | 0 .../net/minecraft/server/level/ServerPlayerGameMode.java.patch | 0 .../net/minecraft/server/level/WorldGenRegion.java.patch | 0 .../server/network/ServerCommonPacketListenerImpl.java.patch | 0 .../server/network/ServerGamePacketListenerImpl.java.patch | 0 .../server/network/ServerLoginPacketListenerImpl.java.patch | 0 .../server/network/ServerStatusPacketListenerImpl.java.patch | 0 .../net/minecraft/server/players/PlayerList.java.patch | 0 .../net/minecraft/server/players/SleepStatus.java.patch | 0 .../net/minecraft/stats/ServerRecipeBook.java.patch | 0 .../net/minecraft/util/StringUtil.java.patch | 0 .../net/minecraft/world/damagesource/CombatRules.java.patch | 0 .../net/minecraft/world/damagesource/CombatTracker.java.patch | 0 .../net/minecraft/world/damagesource/DamageSource.java.patch | 0 .../net/minecraft/world/damagesource/DamageSources.java.patch | 0 .../net/minecraft/world/effect/HungerMobEffect.java.patch | 0 .../net/minecraft/world/effect/PoisonMobEffect.java.patch | 0 .../net/minecraft/world/effect/RegenerationMobEffect.java.patch | 0 .../net/minecraft/world/effect/SaturationMobEffect.java.patch | 0 .../net/minecraft/world/effect/WitherMobEffect.java.patch | 0 .../net/minecraft/world/entity/Entity.java.patch | 0 .../net/minecraft/world/entity/EntitySelector.java.patch | 0 .../net/minecraft/world/entity/EntityType.java.patch | 0 .../net/minecraft/world/entity/ExperienceOrb.java.patch | 0 .../net/minecraft/world/entity/GlowSquid.java.patch | 0 .../net/minecraft/world/entity/LivingEntity.java.patch | 0 .../net/minecraft/world/entity/Mob.java.patch | 0 .../world/entity/ai/attributes/RangedAttribute.java.patch | 0 .../net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch | 0 .../world/entity/ai/behavior/InteractWithDoor.java.patch | 0 .../world/entity/ai/behavior/ShowTradesToPlayer.java.patch | 0 .../world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch | 0 .../minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch | 0 .../world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch | 0 .../net/minecraft/world/entity/ai/goal/SwellGoal.java.patch | 0 .../minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch | 0 .../world/entity/ai/targeting/TargetingConditions.java.patch | 0 .../net/minecraft/world/entity/ambient/Bat.java.patch | 0 .../net/minecraft/world/entity/animal/Animal.java.patch | 0 .../net/minecraft/world/entity/animal/Bee.java.patch | 0 .../net/minecraft/world/entity/animal/Cat.java.patch | 0 .../net/minecraft/world/entity/animal/Cow.java.patch | 0 .../net/minecraft/world/entity/animal/Dolphin.java.patch | 0 .../net/minecraft/world/entity/animal/Fox.java.patch | 0 .../net/minecraft/world/entity/animal/IronGolem.java.patch | 0 .../net/minecraft/world/entity/animal/MushroomCow.java.patch | 0 .../net/minecraft/world/entity/animal/Ocelot.java.patch | 0 .../net/minecraft/world/entity/animal/Parrot.java.patch | 0 .../net/minecraft/world/entity/animal/Pig.java.patch | 0 .../net/minecraft/world/entity/animal/PolarBear.java.patch | 0 .../net/minecraft/world/entity/animal/Rabbit.java.patch | 0 .../net/minecraft/world/entity/animal/SnowGolem.java.patch | 0 .../net/minecraft/world/entity/animal/Squid.java.patch | 0 .../net/minecraft/world/entity/animal/WaterAnimal.java.patch | 0 .../net/minecraft/world/entity/animal/Wolf.java.patch | 0 .../net/minecraft/world/entity/animal/goat/Goat.java.patch | 0 .../net/minecraft/world/entity/animal/horse/Llama.java.patch | 0 .../minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch | 0 .../world/entity/boss/enderdragon/EnderDragon.java.patch | 0 .../net/minecraft/world/entity/boss/wither/WitherBoss.java.patch | 0 .../net/minecraft/world/entity/decoration/ArmorStand.java.patch | 0 .../net/minecraft/world/entity/item/ItemEntity.java.patch | 0 .../net/minecraft/world/entity/item/PrimedTnt.java.patch | 0 .../minecraft/world/entity/monster/AbstractSkeleton.java.patch | 0 .../net/minecraft/world/entity/monster/Creeper.java.patch | 0 .../net/minecraft/world/entity/monster/Drowned.java.patch | 0 .../net/minecraft/world/entity/monster/EnderMan.java.patch | 0 .../net/minecraft/world/entity/monster/Endermite.java.patch | 0 .../net/minecraft/world/entity/monster/Monster.java.patch | 0 .../net/minecraft/world/entity/monster/Phantom.java.patch | 0 .../net/minecraft/world/entity/monster/Ravager.java.patch | 0 .../net/minecraft/world/entity/monster/Shulker.java.patch | 0 .../net/minecraft/world/entity/monster/Skeleton.java.patch | 0 .../net/minecraft/world/entity/monster/Strider.java.patch | 0 .../net/minecraft/world/entity/monster/Vindicator.java.patch | 0 .../net/minecraft/world/entity/monster/Zombie.java.patch | 0 .../net/minecraft/world/entity/monster/ZombieVillager.java.patch | 0 .../net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch | 0 .../net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch | 0 .../net/minecraft/world/entity/npc/CatSpawner.java.patch | 0 .../net/minecraft/world/entity/npc/Villager.java.patch | 0 .../net/minecraft/world/entity/npc/WanderingTrader.java.patch | 0 .../minecraft/world/entity/npc/WanderingTraderSpawner.java.patch | 0 .../net/minecraft/world/entity/player/Player.java.patch | 0 .../minecraft/world/entity/projectile/AbstractArrow.java.patch | 0 .../net/minecraft/world/entity/projectile/Snowball.java.patch | 0 .../minecraft/world/entity/projectile/ThrownEnderpearl.java.patch | 0 .../minecraft/world/entity/projectile/ThrownTrident.java.patch | 0 .../net/minecraft/world/entity/projectile/WitherSkull.java.patch | 0 .../net/minecraft/world/entity/raid/Raids.java.patch | 0 .../net/minecraft/world/entity/vehicle/AbstractBoat.java.patch | 0 .../minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch | 0 .../minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch | 0 .../net/minecraft/world/food/FoodData.java.patch | 0 .../net/minecraft/world/food/FoodProperties.java.patch | 0 .../minecraft/world/inventory/AbstractContainerMenu.java.patch | 0 .../net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch | 0 .../net/minecraft/world/inventory/AnvilMenu.java.patch | 0 .../net/minecraft/world/inventory/ArmorSlot.java.patch | 0 .../net/minecraft/world/inventory/EnchantmentMenu.java.patch | 0 .../net/minecraft/world/inventory/GrindstoneMenu.java.patch | 0 .../net/minecraft/world/inventory/ItemCombinerMenu.java.patch | 0 .../net/minecraft/world/item/AxeItem.java.patch | 0 .../net/minecraft/world/item/BlockItem.java.patch | 0 .../net/minecraft/world/item/BowItem.java.patch | 0 .../net/minecraft/world/item/BucketItem.java.patch | 0 .../net/minecraft/world/item/CrossbowItem.java.patch | 0 .../net/minecraft/world/item/DyeColor.java.patch | 0 .../net/minecraft/world/item/EggItem.java.patch | 0 .../net/minecraft/world/item/EndCrystalItem.java.patch | 0 .../net/minecraft/world/item/EnderpearlItem.java.patch | 0 .../net/minecraft/world/item/HoeItem.java.patch | 0 .../net/minecraft/world/item/ItemStack.java.patch | 0 .../net/minecraft/world/item/Items.java.patch | 0 .../net/minecraft/world/item/MapItem.java.patch | 0 .../net/minecraft/world/item/NameTagItem.java.patch | 0 .../net/minecraft/world/item/ProjectileWeaponItem.java.patch | 0 .../net/minecraft/world/item/ShovelItem.java.patch | 0 .../net/minecraft/world/item/SnowballItem.java.patch | 0 .../net/minecraft/world/item/SpawnEggItem.java.patch | 0 .../net/minecraft/world/item/ThrowablePotionItem.java.patch | 0 .../net/minecraft/world/item/TridentItem.java.patch | 0 .../consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch | 0 .../net/minecraft/world/item/crafting/Ingredient.java.patch | 0 .../minecraft/world/item/enchantment/EnchantmentHelper.java.patch | 0 .../minecraft/world/item/enchantment/ItemEnchantments.java.patch | 0 .../net/minecraft/world/item/trading/MerchantOffer.java.patch | 0 .../net/minecraft/world/level/BaseSpawner.java.patch | 0 .../net/minecraft/world/level/EntityGetter.java.patch | 0 .../net/minecraft/world/level/Level.java.patch | 0 .../net/minecraft/world/level/NaturalSpawner.java.patch | 0 .../net/minecraft/world/level/ServerExplosion.java.patch | 0 .../net/minecraft/world/level/block/AnvilBlock.java.patch | 0 .../net/minecraft/world/level/block/AzaleaBlock.java.patch | 0 .../world/level/block/BaseCoralPlantTypeBlock.java.patch | 0 .../net/minecraft/world/level/block/BedBlock.java.patch | 0 .../net/minecraft/world/level/block/BigDripleafBlock.java.patch | 0 .../net/minecraft/world/level/block/Block.java.patch | 0 .../net/minecraft/world/level/block/Blocks.java.patch | 0 .../net/minecraft/world/level/block/BubbleColumnBlock.java.patch | 0 .../net/minecraft/world/level/block/BushBlock.java.patch | 0 .../net/minecraft/world/level/block/CactusBlock.java.patch | 0 .../net/minecraft/world/level/block/CakeBlock.java.patch | 0 .../net/minecraft/world/level/block/CampfireBlock.java.patch | 0 .../net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch | 0 .../net/minecraft/world/level/block/CauldronBlock.java.patch | 0 .../net/minecraft/world/level/block/CaveVinesBlock.java.patch | 0 .../minecraft/world/level/block/ChangeOverTimeBlock.java.patch | 0 .../net/minecraft/world/level/block/ChestBlock.java.patch | 0 .../net/minecraft/world/level/block/ComposterBlock.java.patch | 0 .../net/minecraft/world/level/block/CoralBlock.java.patch | 0 .../net/minecraft/world/level/block/CropBlock.java.patch | 0 .../net/minecraft/world/level/block/DoorBlock.java.patch | 0 .../net/minecraft/world/level/block/DragonEggBlock.java.patch | 0 .../minecraft/world/level/block/EnchantingTableBlock.java.patch | 0 .../net/minecraft/world/level/block/FarmBlock.java.patch | 0 .../minecraft/world/level/block/GrowingPlantHeadBlock.java.patch | 0 .../net/minecraft/world/level/block/HayBlock.java.patch | 0 .../net/minecraft/world/level/block/IceBlock.java.patch | 0 .../net/minecraft/world/level/block/KelpBlock.java.patch | 0 .../net/minecraft/world/level/block/LiquidBlock.java.patch | 0 .../net/minecraft/world/level/block/MagmaBlock.java.patch | 0 .../net/minecraft/world/level/block/NetherPortalBlock.java.patch | 0 .../net/minecraft/world/level/block/NetherWartBlock.java.patch | 0 .../net/minecraft/world/level/block/NoteBlock.java.patch | 0 .../net/minecraft/world/level/block/ObserverBlock.java.patch | 0 .../minecraft/world/level/block/PointedDripstoneBlock.java.patch | 0 .../net/minecraft/world/level/block/PoweredRailBlock.java.patch | 0 .../net/minecraft/world/level/block/RespawnAnchorBlock.java.patch | 0 .../net/minecraft/world/level/block/SculkShriekerBlock.java.patch | 0 .../net/minecraft/world/level/block/SlabBlock.java.patch | 0 .../net/minecraft/world/level/block/SnowLayerBlock.java.patch | 0 .../net/minecraft/world/level/block/SpawnerBlock.java.patch | 0 .../net/minecraft/world/level/block/SpongeBlock.java.patch | 0 .../net/minecraft/world/level/block/StonecutterBlock.java.patch | 0 .../net/minecraft/world/level/block/SugarCaneBlock.java.patch | 0 .../net/minecraft/world/level/block/TurtleEggBlock.java.patch | 0 .../net/minecraft/world/level/block/TwistingVinesBlock.java.patch | 0 .../net/minecraft/world/level/block/WeepingVinesBlock.java.patch | 0 .../net/minecraft/world/level/block/WitherSkullBlock.java.patch | 0 .../level/block/entity/AbstractFurnaceBlockEntity.java.patch | 0 .../world/level/block/entity/BeaconBlockEntity.java.patch | 0 .../world/level/block/entity/BeehiveBlockEntity.java.patch | 0 .../net/minecraft/world/level/block/entity/BlockEntity.java.patch | 0 .../world/level/block/entity/ConduitBlockEntity.java.patch | 0 .../level/block/entity/EnchantingTableBlockEntity.java.patch | 0 .../minecraft/world/level/block/entity/SignBlockEntity.java.patch | 0 .../world/level/block/piston/PistonStructureResolver.java.patch | 0 .../minecraft/world/level/chunk/storage/EntityStorage.java.patch | 0 .../world/level/chunk/storage/RegionFileStorage.java.patch | 0 .../net/minecraft/world/level/levelgen/PhantomSpawner.java.patch | 0 .../net/minecraft/world/level/material/FlowingFluid.java.patch | 0 .../net/minecraft/world/level/material/LavaFluid.java.patch | 0 .../net/minecraft/world/level/material/WaterFluid.java.patch | 0 .../minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch | 0 .../net/minecraft/world/level/portal/PortalShape.java.patch | 0 .../world/level/saveddata/maps/MapItemSavedData.java.patch | 0 .../loot/functions/EnchantedCountIncreaseFunction.java.patch | 0 .../net/minecraft/world/phys/AABB.java.patch | 0 .../src/main/java/com/destroystokyo/paper/Metrics.java.patch | 0 .../java/com/destroystokyo/paper/PaperVersionFetcher.java.patch | 0 .../java/com/destroystokyo/paper/console/PaperConsole.java.patch | 0 .../com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch | 0 .../main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch | 0 .../src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch | 0 .../java/io/papermc/paper/command/PaperPluginsCommand.java.patch | 0 .../main/java/io/papermc/paper/logging/SysoutCatcher.java.patch | 0 .../java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch | 0 .../src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch | 0 .../src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch | 0 .../src/main/java/org/bukkit/craftbukkit/Main.java.patch | 0 .../java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch | 0 .../java/org/bukkit/craftbukkit/block/CraftConduit.java.patch | 0 .../craftbukkit/command/CraftConsoleCommandSender.java.patch | 0 .../java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch | 0 .../java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch | 0 .../org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch | 0 .../java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch | 0 .../main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch | 0 .../org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch | 0 .../main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch | 0 .../java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch | 0 .../java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch | 0 .../java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch | 0 .../java/org/bukkit/craftbukkit/entity/CraftWither.java.patch | 0 .../main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch | 0 .../bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch | 0 .../org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch | 0 .../java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch | 0 .../bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch | 0 .../java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch | 0 .../org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch | 0 .../java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch | 0 .../org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch | 0 .../java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch | 0 .../main/java/org/bukkit/craftbukkit/util/Versioning.java.patch | 0 .../craftbukkit/util/permissions/CommandPermissions.java.patch | 0 .../src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch | 0 .../src/main/java/org/spigotmc/WatchdogThread.java.patch | 0 .../{files => rejected}/src/main/resources/log4j2.xml.patch | 0 .../paper/permissions/MinecraftCommandPermissionsTest.java.patch | 0 263 files changed, 0 insertions(+), 0 deletions(-) rename purpur-server/minecraft-patches/{sources => rejected}/io/papermc/paper/entity/activation/ActivationRange.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/CrashReport.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/commands/CommandSourceStack.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/commands/Commands.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/commands/arguments/selector/EntitySelector.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/core/BlockPos.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/gametest/framework/GameTestHelper.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/network/Connection.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/network/chat/SignedMessageChain.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/Main.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/MinecraftServer.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/PlayerAdvancements.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/commands/EnchantCommand.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/commands/GameModeCommand.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/commands/GiveCommand.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/dedicated/DedicatedServer.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/gui/MinecraftServerGui.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/gui/StatsComponent.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/level/ServerLevel.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/level/ServerPlayer.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/level/ServerPlayerGameMode.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/level/WorldGenRegion.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/players/PlayerList.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/server/players/SleepStatus.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/stats/ServerRecipeBook.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/util/StringUtil.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/damagesource/CombatRules.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/damagesource/CombatTracker.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/damagesource/DamageSource.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/damagesource/DamageSources.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/effect/HungerMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/effect/PoisonMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/effect/RegenerationMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/effect/SaturationMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/effect/WitherMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/Entity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/EntitySelector.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/EntityType.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/ExperienceOrb.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/GlowSquid.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/LivingEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/Mob.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/ambient/Bat.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/Animal.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/Bee.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/Cat.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/Cow.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/Dolphin.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/Fox.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/IronGolem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/MushroomCow.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/Ocelot.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/Parrot.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/Pig.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/PolarBear.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/Rabbit.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/SnowGolem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/Squid.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/WaterAnimal.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/Wolf.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/goat/Goat.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/animal/horse/Llama.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/decoration/ArmorStand.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/item/ItemEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/item/PrimedTnt.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/monster/Creeper.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/monster/Drowned.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/monster/EnderMan.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/monster/Endermite.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/monster/Monster.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/monster/Phantom.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/monster/Ravager.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/monster/Shulker.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/monster/Skeleton.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/monster/Strider.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/monster/Vindicator.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/monster/Zombie.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/monster/ZombieVillager.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/npc/CatSpawner.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/npc/Villager.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/npc/WanderingTrader.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/player/Player.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/projectile/AbstractArrow.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/projectile/Snowball.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/projectile/ThrownTrident.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/projectile/WitherSkull.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/raid/Raids.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/food/FoodData.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/food/FoodProperties.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/inventory/AbstractContainerMenu.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/inventory/AnvilMenu.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/inventory/ArmorSlot.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/inventory/EnchantmentMenu.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/inventory/GrindstoneMenu.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/inventory/ItemCombinerMenu.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/AxeItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/BlockItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/BowItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/BucketItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/CrossbowItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/DyeColor.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/EggItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/EndCrystalItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/EnderpearlItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/HoeItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/ItemStack.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/Items.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/MapItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/NameTagItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/ProjectileWeaponItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/ShovelItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/SnowballItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/SpawnEggItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/ThrowablePotionItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/TridentItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/crafting/Ingredient.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/item/trading/MerchantOffer.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/BaseSpawner.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/EntityGetter.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/Level.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/NaturalSpawner.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/ServerExplosion.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/AnvilBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/AzaleaBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/BedBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/BigDripleafBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/Block.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/Blocks.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/BubbleColumnBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/BushBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/CactusBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/CakeBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/CampfireBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/CauldronBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/CaveVinesBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/ChestBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/ComposterBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/CoralBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/CropBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/DoorBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/DragonEggBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/EnchantingTableBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/FarmBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/HayBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/IceBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/KelpBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/LiquidBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/MagmaBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/NetherPortalBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/NetherWartBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/NoteBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/ObserverBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/PoweredRailBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/SculkShriekerBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/SlabBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/SnowLayerBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/SpawnerBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/SpongeBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/StonecutterBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/SugarCaneBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/TurtleEggBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/TwistingVinesBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/WeepingVinesBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/WitherSkullBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/entity/BlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/material/FlowingFluid.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/material/LavaFluid.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/material/WaterFluid.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/portal/PortalShape.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch (100%) rename purpur-server/minecraft-patches/{sources => rejected}/net/minecraft/world/phys/AABB.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/com/destroystokyo/paper/Metrics.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/Main.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/java/org/spigotmc/WatchdogThread.java.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/main/resources/log4j2.xml.patch (100%) rename purpur-server/paper-patches/{files => rejected}/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch (100%) diff --git a/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch b/purpur-server/minecraft-patches/rejected/io/papermc/paper/entity/activation/ActivationRange.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch rename to purpur-server/minecraft-patches/rejected/io/papermc/paper/entity/activation/ActivationRange.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/CrashReport.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/CrashReport.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/commands/CommandSourceStack.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/commands/CommandSourceStack.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/commands/Commands.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/commands/Commands.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/commands/arguments/selector/EntitySelector.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/commands/arguments/selector/EntitySelector.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/core/BlockPos.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/core/BlockPos.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/gametest/framework/GameTestHelper.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/gametest/framework/GameTestHelper.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/network/Connection.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/network/Connection.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/network/chat/SignedMessageChain.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/network/chat/SignedMessageChain.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/Main.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/Main.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/MinecraftServer.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/MinecraftServer.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/PlayerAdvancements.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/PlayerAdvancements.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/PlayerAdvancements.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/PlayerAdvancements.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/commands/EnchantCommand.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/commands/EnchantCommand.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/commands/GameModeCommand.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/commands/GameModeCommand.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/commands/GiveCommand.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/commands/GiveCommand.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/dedicated/DedicatedServer.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/dedicated/DedicatedServer.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/MinecraftServerGui.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/gui/MinecraftServerGui.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/gui/MinecraftServerGui.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/gui/MinecraftServerGui.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/gui/StatsComponent.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/gui/StatsComponent.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/level/ServerLevel.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/level/ServerLevel.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/level/ServerPlayer.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/level/ServerPlayer.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/level/ServerPlayerGameMode.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/level/ServerPlayerGameMode.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/level/WorldGenRegion.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/level/WorldGenRegion.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/players/PlayerList.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/players/PlayerList.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/server/players/SleepStatus.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/server/players/SleepStatus.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/stats/ServerRecipeBook.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/stats/ServerRecipeBook.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/util/StringUtil.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/util/StringUtil.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/CombatRules.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/CombatRules.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/CombatTracker.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/CombatTracker.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/DamageSource.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/DamageSource.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/DamageSources.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/DamageSources.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/HungerMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/HungerMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/PoisonMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/PoisonMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/RegenerationMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/RegenerationMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/SaturationMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/SaturationMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/WitherMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/WitherMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/Entity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/Entity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/EntitySelector.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/EntitySelector.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/EntityType.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/EntityType.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ExperienceOrb.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ExperienceOrb.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/GlowSquid.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/GlowSquid.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/LivingEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/LivingEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/Mob.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/Mob.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ambient/Bat.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ambient/Bat.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Animal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Animal.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Bee.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Bee.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Cat.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Cat.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cow.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Cow.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cow.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Cow.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Dolphin.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Dolphin.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Fox.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Fox.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/IronGolem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/IronGolem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/MushroomCow.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/MushroomCow.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Ocelot.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Ocelot.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Parrot.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Parrot.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Pig.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Pig.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/PolarBear.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/PolarBear.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Rabbit.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Rabbit.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/SnowGolem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/SnowGolem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Squid.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Squid.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/WaterAnimal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/WaterAnimal.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Wolf.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Wolf.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Wolf.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Wolf.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/goat/Goat.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/goat/Goat.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/horse/Llama.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/horse/Llama.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/decoration/ArmorStand.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/decoration/ArmorStand.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/item/ItemEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/item/ItemEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/item/PrimedTnt.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/item/PrimedTnt.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Creeper.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Creeper.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Drowned.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Drowned.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/EnderMan.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/EnderMan.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Endermite.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Endermite.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Monster.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Monster.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Phantom.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Phantom.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Ravager.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Ravager.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Shulker.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Shulker.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Skeleton.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Skeleton.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Strider.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Strider.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Vindicator.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Vindicator.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Zombie.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Zombie.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/ZombieVillager.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/ZombieVillager.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/CatSpawner.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/CatSpawner.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/Villager.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/Villager.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/WanderingTrader.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/WanderingTrader.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/player/Player.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/player/Player.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/AbstractArrow.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/AbstractArrow.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/Snowball.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/Snowball.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/ThrownTrident.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/ThrownTrident.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/WitherSkull.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/WitherSkull.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/raid/Raids.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/raid/Raids.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/food/FoodData.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/food/FoodData.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/food/FoodProperties.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/food/FoodProperties.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/AbstractContainerMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/AbstractContainerMenu.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/AnvilMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/AnvilMenu.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/ArmorSlot.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/ArmorSlot.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/EnchantmentMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/EnchantmentMenu.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/GrindstoneMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/GrindstoneMenu.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/ItemCombinerMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/ItemCombinerMenu.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/AxeItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/AxeItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/BlockItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/BlockItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/BowItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/BowItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/BucketItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/BucketItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/CrossbowItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/CrossbowItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/DyeColor.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/DyeColor.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/EggItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/EggItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/EndCrystalItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/EndCrystalItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/EnderpearlItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/EnderpearlItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/HoeItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/HoeItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ItemStack.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ItemStack.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/Items.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/Items.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/MapItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/MapItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/NameTagItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/NameTagItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ProjectileWeaponItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ProjectileWeaponItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ShovelItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ShovelItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/SnowballItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/SnowballItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/SpawnEggItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/SpawnEggItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ThrowablePotionItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ThrowablePotionItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/TridentItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/TridentItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/crafting/Ingredient.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/crafting/Ingredient.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/trading/MerchantOffer.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/item/trading/MerchantOffer.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/BaseSpawner.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/BaseSpawner.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/EntityGetter.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/EntityGetter.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/Level.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/Level.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/NaturalSpawner.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/NaturalSpawner.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/ServerExplosion.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/ServerExplosion.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/AnvilBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/AnvilBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/AzaleaBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/AzaleaBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BedBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BedBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BigDripleafBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BigDripleafBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/Block.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/Block.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/Blocks.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/Blocks.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BubbleColumnBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BubbleColumnBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BushBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BushBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BushBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BushBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CactusBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CactusBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CakeBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CakeBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CampfireBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CampfireBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CauldronBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CauldronBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CaveVinesBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CaveVinesBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ChestBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ChestBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ComposterBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ComposterBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CoralBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CoralBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CropBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CropBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/DoorBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/DoorBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/DragonEggBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/DragonEggBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/EnchantingTableBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/EnchantingTableBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/FarmBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/FarmBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/HayBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/HayBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/IceBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/IceBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/KelpBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/KelpBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/LiquidBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/LiquidBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/MagmaBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/MagmaBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/NetherPortalBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/NetherPortalBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/NetherWartBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/NetherWartBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/NoteBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/NoteBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ObserverBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ObserverBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/PoweredRailBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/PoweredRailBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SculkShriekerBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SculkShriekerBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SlabBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SlabBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SnowLayerBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SnowLayerBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SpawnerBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SpawnerBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SpongeBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SpongeBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/StonecutterBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/StonecutterBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SugarCaneBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SugarCaneBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/TurtleEggBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/TurtleEggBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/TwistingVinesBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/TwistingVinesBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/WeepingVinesBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/WeepingVinesBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/WitherSkullBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/WitherSkullBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/BlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/BlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/material/FlowingFluid.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/material/FlowingFluid.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/material/LavaFluid.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/material/LavaFluid.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/material/WaterFluid.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/material/WaterFluid.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/portal/PortalShape.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/portal/PortalShape.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/phys/AABB.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch rename to purpur-server/minecraft-patches/rejected/net/minecraft/world/phys/AABB.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch b/purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/Metrics.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/Metrics.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch b/purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch b/purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch b/purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch b/purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch b/purpur-server/paper-patches/rejected/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch b/purpur-server/paper-patches/rejected/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch b/purpur-server/paper-patches/rejected/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/Main.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/Main.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/spigotmc/WatchdogThread.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch rename to purpur-server/paper-patches/rejected/src/main/java/org/spigotmc/WatchdogThread.java.patch diff --git a/purpur-server/paper-patches/files/src/main/resources/log4j2.xml.patch b/purpur-server/paper-patches/rejected/src/main/resources/log4j2.xml.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/resources/log4j2.xml.patch rename to purpur-server/paper-patches/rejected/src/main/resources/log4j2.xml.patch diff --git a/purpur-server/paper-patches/files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch b/purpur-server/paper-patches/rejected/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch rename to purpur-server/paper-patches/rejected/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch From 0eec20771a1d5b399093eba16fe468215a5bea73 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 14 Mar 2025 21:06:07 -0700 Subject: [PATCH 036/289] rebuild paper api file patches --- .../org/bukkit/command/defaults/VersionCommand.java.patch | 4 ++-- .../src/main/java/org/bukkit/entity/LivingEntity.java.patch | 2 +- .../src/main/java/org/bukkit/entity/Villager.java.patch | 5 ++--- .../files/src/main/java/org/bukkit/entity/Wither.java.patch | 4 ++-- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch index b424f2eb9..b781c954e 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/command/defaults/VersionCommand.java +++ b/src/main/java/org/bukkit/command/defaults/VersionCommand.java -@@ -215,7 +_,7 @@ +@@ -213,7 +_,7 @@ String version = Bukkit.getVersion(); // Paper start if (version.startsWith("null")) { // running from ide? @@ -9,7 +9,7 @@ return; } setVersionMessage(getVersionFetcher().getVersionMessage(version)); -@@ -256,9 +_,11 @@ +@@ -254,9 +_,11 @@ // Paper start private void setVersionMessage(final @NotNull Component msg) { lastCheck = System.currentTimeMillis(); diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch index cb9f337fe..2ec452396 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1476,4 +_,20 @@ +@@ -1468,4 +_,20 @@ */ boolean canUseEquipmentSlot(org.bukkit.inventory.@NotNull EquipmentSlot slot); // Paper end - Expose canUseSlot diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch index 90aac0f52..f27a5a7e9 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch @@ -1,12 +1,11 @@ --- a/src/main/java/org/bukkit/entity/Villager.java +++ b/src/main/java/org/bukkit/entity/Villager.java -@@ -367,4 +_,14 @@ +@@ -365,4 +_,13 @@ + * reputation regardless of its impact and the player associated. */ public void clearReputations(); - // Paper end + + // Purpur start -+ + /** + * Check if villager is currently lobotomized + * diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wither.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wither.java.patch index 1080c3d6d..e2f1daf25 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wither.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wither.java.patch @@ -1,9 +1,9 @@ --- a/src/main/java/org/bukkit/entity/Wither.java +++ b/src/main/java/org/bukkit/entity/Wither.java -@@ -107,4 +_,20 @@ +@@ -105,4 +_,20 @@ + * This is called in vanilla directly after spawning the wither. */ void enterInvulnerabilityPhase(); - // Paper end + + // Purpur start + /** From 0775e50173dd490ab53a2a1448e7696043e5e112 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 14 Mar 2025 21:12:33 -0700 Subject: [PATCH 037/289] uncomment updatingMinecraft function and comment out git file patches value --- purpur-server/build.gradle.kts.patch | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index eb32daf29..c1990f0b2 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -1,19 +1,16 @@ --- a/paper-server/build.gradle.kts +++ b/paper-server/build.gradle.kts -@@ -18,11 +_,21 @@ +@@ -18,12 +_,22 @@ paperweight { minecraftVersion = providers.gradleProperty("mcVersion") - gitFilePatches = false -- -- updatingMinecraft { -- oldPaperCommit = "f4f275519f7c1fbe9db173b7144a4fe81440e365" -+ gitFilePatches = true -+ -+ //updatingMinecraft { -+ // oldPaperCommit = "f4f275519f7c1fbe9db173b7144a4fe81440e365" -+ //} -+ ++ //gitFilePatches = true + + updatingMinecraft { + oldPaperCommit = "f4f275519f7c1fbe9db173b7144a4fe81440e365" + } + + val purpur = forks.register("purpur") { + upstream.patchDir("paperServer") { + upstreamPath = "paper-server" @@ -21,11 +18,12 @@ + patchesDir = rootDirectory.dir("purpur-server/paper-patches") + outputDir = rootDirectory.dir("paper-server") + } - } ++ } + activeFork = purpur - ++ spigot { buildDataRef = "3edaf46ec1eed4115ce1b18d2846cded42577e42" + packageVersion = "v1_21_R3" // also needs to be updated in MappingEnvironment @@ -104,7 +_,21 @@ } } From 51aacc41010172711f964ba42d669912054e8810 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 14 Mar 2025 21:18:52 -0700 Subject: [PATCH 038/289] apply paper server patches --- .../destroystokyo/paper/Metrics.java.patch | 12 ++------- .../paper/PaperVersionFetcher.java.patch | 22 ++++++---------- .../paper/console/PaperConsole.java.patch | 10 +------- .../paper/entity/ai/MobGoalHelper.java.patch | 10 +------- .../paper/gui/RAMDetails.java.patch | 12 ++------- .../paper/ServerBuildInfoImpl.java.patch | 14 +++-------- .../command/PaperPluginsCommand.java.patch | 16 +++--------- .../paper/logging/SysoutCatcher.java.patch | 10 +------- .../craftbukkit/CraftOfflinePlayer.java.patch | 14 +++-------- .../bukkit/craftbukkit/CraftServer.java.patch | 24 ++++++------------ .../bukkit/craftbukkit/CraftWorld.java.patch | 10 +------- .../org/bukkit/craftbukkit/Main.java.patch | 12 ++------- .../craftbukkit/block/CraftBeehive.java.patch | 14 +++-------- .../craftbukkit/block/CraftConduit.java.patch | 10 +------- .../CraftConsoleCommandSender.java.patch | 12 ++------- .../entity/CraftEndermite.java.patch | 17 +++++++++++++ .../craftbukkit/entity/CraftEntity.java.patch | 10 +------- .../entity/CraftHumanEntity.java.patch | 10 ++++++++ .../entity/CraftIronGolem.java.patch | 10 +------- .../craftbukkit/entity/CraftItem.java.patch | 10 +------- .../entity/CraftLivingEntity.java.patch | 11 ++++++++ .../craftbukkit/entity/CraftLlama.java.patch | 13 +++------- .../craftbukkit/entity/CraftPlayer.java.patch | 18 ++++--------- .../entity/CraftSnowman.java.patch | 10 +------- .../entity/CraftVillager.java.patch | 15 +++++++++++ .../craftbukkit/entity/CraftWither.java.patch | 13 +++------- .../craftbukkit/entity/CraftWolf.java.patch | 10 +------- .../inventory/CraftInventoryAnvil.java.patch | 14 +++-------- .../inventory/CraftItemStack.java.patch | 10 +------- .../inventory/CraftRecipe.java.patch | 10 +------- .../inventory/view/CraftAnvilView.java.patch | 10 +------- .../craftbukkit/legacy/CraftLegacy.java.patch | 10 +------- .../legacy/MaterialRerouting.java.patch | 10 +------- .../map/CraftMapRenderer.java.patch | 13 ++++++++++ .../scheduler/CraftScheduler.java.patch | 10 +------- .../util/CraftMagicNumbers.java.patch | 11 ++++++++ .../craftbukkit/util/Versioning.java.patch | 10 +------- .../permissions/CommandPermissions.java.patch | 10 +------- .../spigotmc/TicksPerSecondCommand.java.patch | 10 +------- .../org/spigotmc/WatchdogThread.java.patch | 16 +++--------- .../src/main/resources/log4j2.xml.patch | 10 +------- ...MinecraftCommandPermissionsTest.java.patch | 12 ++------- .../entity/CraftEndermite.java.patch | 25 ------------------- .../entity/CraftHumanEntity.java.patch | 18 ------------- .../entity/CraftLivingEntity.java.patch | 19 -------------- .../entity/CraftVillager.java.patch | 22 ---------------- .../map/CraftMapRenderer.java.patch | 21 ---------------- .../util/CraftMagicNumbers.java.patch | 19 -------------- 48 files changed, 153 insertions(+), 486 deletions(-) rename purpur-server/paper-patches/{rejected => files}/src/main/java/com/destroystokyo/paper/Metrics.java.patch (82%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch (81%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch (51%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch (59%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch (65%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch (69%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch (89%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch (62%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch (92%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch (86%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch (81%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/Main.java.patch (74%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch (80%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch (51%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch (60%) create mode 100644 purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch (57%) create mode 100644 purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch (55%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch (76%) create mode 100644 purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch (51%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch (85%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch (52%) create mode 100644 purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch (50%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch (50%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch (71%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch (94%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch (65%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch (59%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch (56%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch (75%) create mode 100644 purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch (62%) create mode 100644 purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch (56%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch (82%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch (56%) rename purpur-server/paper-patches/{rejected => files}/src/main/java/org/spigotmc/WatchdogThread.java.patch (84%) rename purpur-server/paper-patches/{rejected => files}/src/main/resources/log4j2.xml.patch (74%) rename purpur-server/paper-patches/{rejected => files}/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch (73%) delete mode 100644 purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch delete mode 100644 purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch delete mode 100644 purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch delete mode 100644 purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch delete mode 100644 purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch delete mode 100644 purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch diff --git a/purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/Metrics.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch similarity index 82% rename from purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/Metrics.java.patch rename to purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch index c59cdcfc0..fc55c48ff 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/Metrics.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java -index 8f62879582195d8ae4f64bd23f752fa133b1c973..be1bb14dca9367b9685841985b6198376986c496 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java +++ b/src/main/java/com/destroystokyo/paper/Metrics.java -@@ -592,7 +592,7 @@ public class Metrics { +@@ -592,7 +_,7 @@ boolean logFailedRequests = config.getBoolean("logFailedRequests", false); // Only start Metrics, if it's enabled in the config if (config.getBoolean("enabled", true)) { @@ -17,7 +9,7 @@ index 8f62879582195d8ae4f64bd23f752fa133b1c973..be1bb14dca9367b9685841985b619837 metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> { String minecraftVersion = Bukkit.getVersion(); -@@ -601,16 +601,8 @@ public class Metrics { +@@ -601,16 +_,8 @@ })); metrics.addCustomChart(new Metrics.SingleLineChart("players", () -> Bukkit.getOnlinePlayers().size())); diff --git a/purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch similarity index 81% rename from purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch rename to purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch index b9371fba2..8440b425a 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -index 532306cacd52579cdf37e4aca25887b1ed3ba6a1..fe66e43c27e0798770e102d1385bacbaa90bda07 100644 --- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java +++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -@@ -35,7 +35,10 @@ public class PaperVersionFetcher implements VersionFetcher { +@@ -35,7 +_,10 @@ private static final Logger LOGGER = LogUtils.getClassLogger(); private static final int DISTANCE_ERROR = -1; private static final int DISTANCE_UNKNOWN = -2; @@ -20,7 +12,7 @@ index 532306cacd52579cdf37e4aca25887b1ed3ba6a1..fe66e43c27e0798770e102d1385bacba @Override public long getCacheTime() { -@@ -49,7 +52,7 @@ public class PaperVersionFetcher implements VersionFetcher { +@@ -49,7 +_,7 @@ if (build.buildNumber().isEmpty() && build.gitCommit().isEmpty()) { updateMessage = text("You are running a development version without access to version information", color(0xFF5300)); } else { @@ -29,7 +21,7 @@ index 532306cacd52579cdf37e4aca25887b1ed3ba6a1..fe66e43c27e0798770e102d1385bacba } final @Nullable Component history = this.getHistory(); -@@ -57,7 +60,7 @@ public class PaperVersionFetcher implements VersionFetcher { +@@ -57,7 +_,7 @@ } private static Component getUpdateStatusMessage(final String repo, final ServerBuildInfo build) { @@ -38,7 +30,7 @@ index 532306cacd52579cdf37e4aca25887b1ed3ba6a1..fe66e43c27e0798770e102d1385bacba final OptionalInt buildNumber = build.buildNumber(); if (buildNumber.isPresent()) { -@@ -71,10 +74,10 @@ public class PaperVersionFetcher implements VersionFetcher { +@@ -71,10 +_,10 @@ } return switch (distance) { @@ -53,13 +45,13 @@ index 532306cacd52579cdf37e4aca25887b1ed3ba6a1..fe66e43c27e0798770e102d1385bacba .append(Component.newline()) .append(text("Download the new version at: ") .append(text(DOWNLOAD_PAGE, NamedTextColor.GOLD) -@@ -86,18 +89,15 @@ public class PaperVersionFetcher implements VersionFetcher { +@@ -86,18 +_,15 @@ private static int fetchDistanceFromSiteApi(final ServerBuildInfo build, final int jenkinsBuild) { try { try (final BufferedReader reader = Resources.asCharSource( - URI.create("https://api.papermc.io/v2/projects/paper/versions/" + build.minecraftVersionId()).toURL(), + URI.create("https://api.purpurmc.org/v2/purpur/" + build.minecraftVersionId()).toURL(), // Purpur - Rebrand - Charsets.UTF_8 + StandardCharsets.UTF_8 ).openBufferedStream()) { final JsonObject json = new Gson().fromJson(reader, JsonObject.class); - final JsonArray builds = json.getAsJsonArray("builds"); @@ -76,7 +68,7 @@ index 532306cacd52579cdf37e4aca25887b1ed3ba6a1..fe66e43c27e0798770e102d1385bacba return DISTANCE_ERROR; } } catch (final IOException e) { -@@ -141,6 +141,6 @@ public class PaperVersionFetcher implements VersionFetcher { +@@ -141,6 +_,6 @@ return null; } diff --git a/purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch similarity index 51% rename from purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch rename to purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch index fdeb613e5..43b5c7a41 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java -index 6ee39b534b8d992655bc0cef3c299d12cbae0034..bc7e4e5560708fea89c584b1d8b471f4966f311a 100644 --- a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java +++ b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java -@@ -20,7 +20,7 @@ public final class PaperConsole extends SimpleTerminalConsole { +@@ -20,7 +_,7 @@ @Override protected LineReader buildReader(LineReaderBuilder builder) { builder diff --git a/purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch similarity index 59% rename from purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch rename to purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch index 5eef34d33..be4e59d89 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -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 6bdc683b5ade408ee27f1d6636b4d60c8c89cb7c..bc6d3898d8784e50a0e2264bbb5bde63add61f4e 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 { +@@ -136,6 +_,10 @@ 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/purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch similarity index 65% rename from purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch rename to purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch index f61b8af74..e567d82a1 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java -index 12b327eea95e0de9e9c39b7d039badee8ec46508..46696cfe1d99e705d383a1fe4e66f5c5646053d2 100644 --- a/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java +++ b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java -@@ -61,6 +61,7 @@ public class RAMDetails extends JList { +@@ -61,6 +_,7 @@ // Follows CraftServer#getTPS double[] tps = new double[] { @@ -16,7 +8,7 @@ index 12b327eea95e0de9e9c39b7d039badee8ec46508..46696cfe1d99e705d383a1fe4e66f5c5 server.tps1.getAverage(), server.tps5.getAverage(), server.tps15.getAverage() -@@ -73,7 +74,7 @@ public class RAMDetails extends JList { +@@ -73,7 +_,7 @@ 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((double)this.server.getAverageTickTimeNanos() / (double) TimeUtil.NANOSECONDS_PER_MILLISECOND) + " ms"); diff --git a/purpur-server/paper-patches/rejected/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch similarity index 69% rename from purpur-server/paper-patches/rejected/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch rename to purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch index 1390aee30..fd95c8364 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java -index 790bad0494454ca12ee152e3de6da3da634d9b20..b36e30fd4057a938e4d90cb42a2dca661f16478e 100644 --- a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java +++ b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java -@@ -31,6 +31,7 @@ public record ServerBuildInfoImpl( +@@ -31,6 +_,7 @@ private static final String ATTRIBUTE_GIT_COMMIT = "Git-Commit"; private static final String BRAND_PAPER_NAME = "Paper"; @@ -16,7 +8,7 @@ index 790bad0494454ca12ee152e3de6da3da634d9b20..b36e30fd4057a938e4d90cb42a2dca66 private static final String BUILD_DEV = "DEV"; -@@ -42,9 +43,9 @@ public record ServerBuildInfoImpl( +@@ -42,9 +_,9 @@ this( getManifestAttribute(manifest, ATTRIBUTE_BRAND_ID) .map(Key::key) @@ -28,7 +20,7 @@ index 790bad0494454ca12ee152e3de6da3da634d9b20..b36e30fd4057a938e4d90cb42a2dca66 SharedConstants.getCurrentVersion().getId(), SharedConstants.getCurrentVersion().getName(), getManifestAttribute(manifest, ATTRIBUTE_BUILD_NUMBER) -@@ -61,7 +62,7 @@ public record ServerBuildInfoImpl( +@@ -61,7 +_,7 @@ @Override public boolean isBrandCompatible(final @NotNull Key brandId) { diff --git a/purpur-server/paper-patches/rejected/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch similarity index 89% rename from purpur-server/paper-patches/rejected/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch rename to purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch index b11a57c24..8992c7e12 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java b/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java -index 41c95f00b4b2bea6d31f85e268c33d7f6184823e..2eaf27ddf0bddb23b8850310c332b202b1d7e69c 100644 --- a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java +++ b/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java -@@ -70,10 +70,10 @@ public class PaperPluginsCommand extends BukkitCommand { +@@ -70,10 +_,10 @@ this.setAliases(List.of("pl")); } @@ -21,7 +13,7 @@ index 41c95f00b4b2bea6d31f85e268c33d7f6184823e..2eaf27ddf0bddb23b8850310c332b202 } boolean isFirst = true; -@@ -100,15 +100,49 @@ public class PaperPluginsCommand extends BukkitCommand { +@@ -100,15 +_,49 @@ return formattedSubLists; } @@ -74,7 +66,7 @@ index 41c95f00b4b2bea6d31f85e268c33d7f6184823e..2eaf27ddf0bddb23b8850310c332b202 builder.append(pluginName); -@@ -126,6 +160,23 @@ public class PaperPluginsCommand extends BukkitCommand { +@@ -126,6 +_,23 @@ return componentHeader.append(Component.text(":")).build(); } @@ -98,7 +90,7 @@ index 41c95f00b4b2bea6d31f85e268c33d7f6184823e..2eaf27ddf0bddb23b8850310c332b202 private static Component asPlainComponents(final String strings) { final net.kyori.adventure.text.TextComponent.Builder builder = Component.text(); for (final String string : strings.split("\n")) { -@@ -186,25 +237,25 @@ public class PaperPluginsCommand extends BukkitCommand { +@@ -186,25 +_,25 @@ final int sizePaperPlugins = paperPlugins.size(); final int sizeSpigotPlugins = spigotPlugins.size(); final int sizePlugins = sizePaperPlugins + sizeSpigotPlugins; diff --git a/purpur-server/paper-patches/rejected/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch similarity index 62% rename from purpur-server/paper-patches/rejected/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch rename to purpur-server/paper-patches/files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch index 14c7ce66e..d8d9954f6 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/io/papermc/paper/logging/SysoutCatcher.java b/src/main/java/io/papermc/paper/logging/SysoutCatcher.java -index a8e813ca89b033f061e695288b3383bdcf128531..96a377a07d8396f893954a3ba97fbf88d73faf6d 100644 --- a/src/main/java/io/papermc/paper/logging/SysoutCatcher.java +++ b/src/main/java/io/papermc/paper/logging/SysoutCatcher.java -@@ -54,9 +54,9 @@ public final class SysoutCatcher { +@@ -54,9 +_,9 @@ final JavaPlugin plugin = JavaPlugin.getProvidingPlugin(clazz); // Instead of just printing the message, send it to the plugin's logger diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch similarity index 92% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch index 00c64541d..844f937c4 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -index 94ca0407303c4493ab4928b12ec6ecc75aaca549..f2d87c12dd19210ce7e2147fada5c10191008632 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -@@ -363,14 +363,26 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa +@@ -366,14 +_,26 @@ @Override public Location getLocation() { @@ -38,7 +30,7 @@ index 94ca0407303c4493ab4928b12ec6ecc75aaca549..f2d87c12dd19210ce7e2147fada5c101 UUID uuid = new UUID(data.getLong("WorldUUIDMost"), data.getLong("WorldUUIDLeast")); -@@ -381,9 +393,9 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa +@@ -384,9 +_,9 @@ rotation.getFloat(0), rotation.getFloat(1) ); @@ -50,7 +42,7 @@ index 94ca0407303c4493ab4928b12ec6ecc75aaca549..f2d87c12dd19210ce7e2147fada5c101 } @Override -@@ -626,4 +638,191 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa +@@ -620,4 +_,191 @@ manager.save(); } } diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch similarity index 86% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index ce7730cc4..89a9146e7 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 99beb7ec6e1864426492f4e27e650ab97ce6d4b5..32e5dd24ac682fcbcc684b86835b8955f904a347 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -428,6 +428,20 @@ public final class CraftServer implements Server { +@@ -428,6 +_,20 @@ this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager); this.pluginManager.paperPluginManager = this.paperPluginManager; // Paper end @@ -29,7 +21,7 @@ index 99beb7ec6e1864426492f4e27e650ab97ce6d4b5..32e5dd24ac682fcbcc684b86835b8955 CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1088,6 +1102,7 @@ public final class CraftServer implements Server { +@@ -1088,6 +_,7 @@ org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -37,7 +29,7 @@ index 99beb7ec6e1864426492f4e27e650ab97ce6d4b5..32e5dd24ac682fcbcc684b86835b8955 for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1103,6 +1118,7 @@ public final class CraftServer implements Server { +@@ -1103,6 +_,7 @@ } } world.spigotConfig.init(); // Spigot @@ -45,7 +37,7 @@ index 99beb7ec6e1864426492f4e27e650ab97ce6d4b5..32e5dd24ac682fcbcc684b86835b8955 } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1120,6 +1136,7 @@ public final class CraftServer implements Server { +@@ -1120,6 +_,7 @@ org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -53,7 +45,7 @@ index 99beb7ec6e1864426492f4e27e650ab97ce6d4b5..32e5dd24ac682fcbcc684b86835b8955 this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1647,6 +1664,60 @@ public final class CraftServer implements Server { +@@ -1647,6 +_,60 @@ return true; } @@ -114,7 +106,7 @@ index 99beb7ec6e1864426492f4e27e650ab97ce6d4b5..32e5dd24ac682fcbcc684b86835b8955 @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -3052,6 +3123,18 @@ public final class CraftServer implements Server { +@@ -3052,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -133,7 +125,7 @@ index 99beb7ec6e1864426492f4e27e650ab97ce6d4b5..32e5dd24ac682fcbcc684b86835b8955 @Override public void restart() { CraftServer.this.restart(); -@@ -3086,6 +3169,7 @@ public final class CraftServer implements Server { +@@ -3086,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -141,7 +133,7 @@ index 99beb7ec6e1864426492f4e27e650ab97ce6d4b5..32e5dd24ac682fcbcc684b86835b8955 net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3296,4 +3380,18 @@ public final class CraftServer implements Server { +@@ -3296,4 +_,18 @@ this.console.addPluginAllowingSleep(plugin.getName(), value); } // Paper end - API to check if the server is sleeping diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch similarity index 81% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch index d7732903f..35b519694 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 1439d282167dc8a2e66f4896849153b810112988..ca60f91ef012c94174a0803eb77699ba9ecff5e1 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2346,6 +2346,50 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2346,6 +_,50 @@ return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/Main.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch similarity index 74% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/Main.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch index b8b010b26..e86001e4b 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/Main.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index bf5343b0847e9f57ffbc7f33714ae6ca62f14332..2e1b7f613de8876095ef39bb0341a3f9520c8d5d 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -176,6 +176,13 @@ public class Main { +@@ -176,6 +_,13 @@ .describedAs("Jar file"); // Paper end @@ -22,7 +14,7 @@ index bf5343b0847e9f57ffbc7f33714ae6ca62f14332..2e1b7f613de8876095ef39bb0341a3f9 // Paper start acceptsAll(asList("server-name"), "Name of the server") .withRequiredArg() -@@ -259,7 +266,7 @@ public class Main { +@@ -259,7 +_,7 @@ System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper } diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch similarity index 80% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch index ba80cf36f..39590b5cd 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java -index 1a2a05160ba51d9c75f1ae6ae61d944d81428722..a86b026f2f420637d125cf697bcd07bf314c98aa 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; +@@ -16,8 +_,15 @@ public class CraftBeehive extends CraftBlockEntityState implements Beehive { @@ -24,7 +16,7 @@ index 1a2a05160ba51d9c75f1ae6ae61d944d81428722..a86b026f2f420637d125cf697bcd07bf } protected CraftBeehive(CraftBeehive state, Location location) { -@@ -76,14 +83,54 @@ public class CraftBeehive extends CraftBlockEntityState impl +@@ -76,14 +_,54 @@ } } @@ -79,7 +71,7 @@ index 1a2a05160ba51d9c75f1ae6ae61d944d81428722..a86b026f2f420637d125cf697bcd07bf } @Override -@@ -100,6 +147,7 @@ public class CraftBeehive extends CraftBlockEntityState impl +@@ -100,6 +_,7 @@ @Override public void clearEntities() { getSnapshot().clearBees(); diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch similarity index 51% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch index 0dc1d03b2..e60687bc8 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java -index c1759aeb3e6ad0e4eb66cba3da1b120dd1dce812..a663962e5181e89286caa18f537c1f5758b41623 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 +@@ -73,7 +_,7 @@ public int getRange() { this.ensureNoWorldGeneration(); ConduitBlockEntity conduit = (ConduitBlockEntity) this.getTileEntityFromWorld(); diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch similarity index 60% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch index dd0476d07..411f8ce59 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java b/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java -index 4e56018b64d11f76c8da43fd8f85c6de72204e36..36cec3ed39807e85013e4e3b98c979d7af37ce58 100644 --- a/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java +++ b/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java -@@ -21,7 +21,12 @@ public class CraftConsoleCommandSender extends ServerCommandSender implements Co +@@ -21,7 +_,12 @@ @Override public void sendMessage(String message) { @@ -22,7 +14,7 @@ index 4e56018b64d11f76c8da43fd8f85c6de72204e36..36cec3ed39807e85013e4e3b98c979d7 } @Override -@@ -91,7 +96,7 @@ public class CraftConsoleCommandSender extends ServerCommandSender implements Co +@@ -91,7 +_,7 @@ // Paper start @Override public void sendMessage(final net.kyori.adventure.identity.Identity identity, final net.kyori.adventure.text.Component message, final net.kyori.adventure.audience.MessageType type) { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch new file mode 100644 index 000000000..f0857ca6e --- /dev/null +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch @@ -0,0 +1,17 @@ +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java +@@ -21,12 +_,12 @@ + + @Override + public boolean isPlayerSpawned() { +- return false; ++ return getHandle().isPlayerSpawned(); // Purpur - Add back player spawned endermite API + } + + @Override + public void setPlayerSpawned(boolean playerSpawned) { +- // Nop ++ getHandle().setPlayerSpawned(playerSpawned); // Purpur - Add back player spawned endermite API + } + + @Override diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch similarity index 57% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch index 2186cb893..2b85fb7d8 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 1ee0ad266955e36b729ba31eb75aad9289acd8e4..d7cf58309b3f455a18de7672fe6ee913f86bac5b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -90,6 +90,18 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -95,6 +_,18 @@ this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch new file mode 100644 index 000000000..248c285af --- /dev/null +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch @@ -0,0 +1,10 @@ +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +@@ -274,6 +_,7 @@ + @Override + public void recalculatePermissions() { + this.perm.recalculatePermissions(); ++ getHandle().canPortalInstant = hasPermission("purpur.portal.instant"); // Purpur - Add portal permission bypass + } + + @Override diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch similarity index 55% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch index cb23c5a90..d09a7cf6b 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java -index 63cae1a2e95d8da17c45c4404a8dd0ca6a413c39..464a3713845548473a357ea66c6147b10ff2cb16 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 { +@@ -27,4 +_,17 @@ public void setPlayerCreated(boolean playerCreated) { this.getHandle().setPlayerCreated(playerCreated); } diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch similarity index 76% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch index dbae70c2f..b84f5e23e 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -index 7a3d982b133f8cdaeb936cf40f92565f0f7f6dd0..8b0faa08411ee1f336641b161acd3412c886dc2b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -@@ -151,4 +151,53 @@ public class CraftItem extends CraftEntity implements Item { +@@ -148,4 +_,53 @@ public String toString() { return "CraftItem"; } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch new file mode 100644 index 000000000..89eefdcaa --- /dev/null +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch @@ -0,0 +1,11 @@ +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +@@ -525,7 +_,7 @@ + net.minecraft.server.level.ServerPlayer nmsKiller = killer == null ? null : ((CraftPlayer) killer).getHandle(); + this.getHandle().setLastHurtByMob(nmsKiller); + if (nmsKiller != null) { +- this.getHandle().setLastHurtByPlayer(nmsKiller, 100); // value taken from LivingEntity#resolvePlayerResponsibleForDamage ++ this.getHandle().setLastHurtByPlayer(nmsKiller, this.getHandle().level().purpurConfig.mobLastHurtByPlayerTime); // value taken from LivingEntity#resolvePlayerResponsibleForDamage // Purpur - Config for mob last hurt by player time + } else { + this.getHandle().lastHurtByPlayer = null; + this.getHandle().lastHurtByPlayerMemoryTime = 0; diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch similarity index 51% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch index 1141a2522..a4b4e0b77 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch @@ -1,17 +1,10 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java -index 351f42842b780d053cd2e5bad9ae299449141b10..054d2c2b93c43faeeaf56f482eb7b9431a6190df 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java -@@ -90,4 +90,16 @@ public class CraftLlama extends CraftChestedHorse implements Llama, com.destroys +@@ -88,4 +_,17 @@ + public Llama getCaravanTail() { return this.getHandle().caravanTail == null ? null : (Llama) this.getHandle().caravanTail.getBukkitEntity(); } - // Paper end ++ // Paper end + + // Purpur start - Llama API + @Override diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch similarity index 85% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index b7bf83e1a..2d301d9d4 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 5050f446e75f0ec17daf994ed74cbcd3155664c1..4dd2c2c824ffc7c6da02a3e740b4025459073295 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -594,10 +594,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -588,10 +_,15 @@ @Override public void setPlayerListName(String name) { @@ -25,7 +17,7 @@ index 5050f446e75f0ec17daf994ed74cbcd3155664c1..4dd2c2c824ffc7c6da02a3e740b40254 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)) { -@@ -2755,6 +2760,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2749,6 +_,28 @@ return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -54,9 +46,9 @@ index 5050f446e75f0ec17daf994ed74cbcd3155664c1..4dd2c2c824ffc7c6da02a3e740b40254 private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3624,4 +3651,76 @@ public class CraftPlayer extends CraftHumanEntity implements Player { - public void setSimplifyContainerDesyncCheck(final boolean simplifyContainerDesyncCheck) { - this.simplifyContainerDesyncCheck = simplifyContainerDesyncCheck; +@@ -3602,4 +_,76 @@ + public void setDeathScreenScore(final int score) { + getHandle().setScore(score); } + + // Purpur start - Purpur client support diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch similarity index 52% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch index c19b1f11b..44a2a5b99 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java -index 4ce2373ff71c3c1b8951646e057587a3ab09e145..997b8e5059569de4ee8e70127c5d6019ce53afe3 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 +@@ -28,4 +_,17 @@ public String toString() { return "CraftSnowman"; } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch new file mode 100644 index 000000000..320d8f394 --- /dev/null +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch @@ -0,0 +1,15 @@ +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +@@ -385,4 +_,12 @@ + public void clearReputations() { + getHandle().getGossips().gossips.clear(); + } ++ // Paper end ++ ++ // Purpur start - Lobotomize stuck villagers ++ @Override ++ public boolean isLobotomized() { ++ return getHandle().isLobotomized(); ++ } ++ // Purpur end - Lobotomize stuck villagers + } diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch similarity index 50% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch index 4dda0cfaa..d7e9425f1 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch @@ -1,17 +1,10 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java -index 7881c6253c1d652c0c0d54a9a8accdf0a1ff0f3e..fe8be71121324f64346174922c7bc7f5d3a9de69 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 +@@ -97,4 +_,18 @@ + public void enterInvulnerabilityPhase() { this.getHandle().makeInvulnerable(); } - // Paper end ++ // Paper end + + // Purpur start - Summoner API + @Override diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch similarity index 50% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch index ad3ef5231..a85fb1dbd 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -index c1b7f1281fbd41e765d2c1881763ca25b20e924d..53c620e717d39ef16f44c9697ac4809ac1fdfa6a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -@@ -145,4 +145,15 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf { +@@ -145,4 +_,15 @@ return this.getKey().hashCode(); } } diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch similarity index 71% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch index b7cdb8996..58b895e59 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java -index 792cb6adf0c7a6335cc5985fce8bed2e0f1149af..5734c5caffda79383ae30df20c3defb51b87f39e 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java -@@ -19,6 +19,10 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn +@@ -19,6 +_,10 @@ private int repairCost; private int repairCostAmount; private int maximumRepairCost; @@ -19,7 +11,7 @@ index 792cb6adf0c7a6335cc5985fce8bed2e0f1149af..5734c5caffda79383ae30df20c3defb5 public CraftInventoryAnvil(Location location, Container inventory, Container resultInventory) { super(inventory, resultInventory); -@@ -27,6 +31,10 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn +@@ -27,6 +_,10 @@ this.repairCost = CraftInventoryAnvil.DEFAULT_REPAIR_COST; this.repairCostAmount = CraftInventoryAnvil.DEFAULT_REPAIR_COST_AMOUNT; this.maximumRepairCost = CraftInventoryAnvil.DEFAULT_MAXIMUM_REPAIR_COST; @@ -30,7 +22,7 @@ index 792cb6adf0c7a6335cc5985fce8bed2e0f1149af..5734c5caffda79383ae30df20c3defb5 } @Override -@@ -113,4 +121,30 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn +@@ -113,4 +_,30 @@ consumer.accept(cav); } } diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch similarity index 94% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch index 4b3156be4..6c51193da 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -index a6668ae293737a78316724a94866ad7781af68a4..b389563f1efde27341ebf26276ca5c97e495a16a 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -@@ -693,4 +693,285 @@ public final class CraftItemStack extends ItemStack { +@@ -693,4 +_,285 @@ } // Paper end - data component API diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch similarity index 65% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch index 6c76ff216..b3042e1f5 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java -index 4864e2016cb1d377425297fd1c52b383632cb59e..953d64d128a53eb9ec2ff55140dde5cb80326044 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java -@@ -36,6 +36,7 @@ public interface CraftRecipe extends Recipe { +@@ -36,6 +_,7 @@ stack = Ingredient.of(((RecipeChoice.MaterialChoice) bukkit).getChoices().stream().map((mat) -> CraftItemType.bukkitToMinecraft(mat))); } else if (bukkit instanceof RecipeChoice.ExactChoice) { stack = Ingredient.ofStacks(((RecipeChoice.ExactChoice) bukkit).getChoices().stream().map((mat) -> CraftItemStack.asNMSCopy(mat)).toList()); diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch similarity index 59% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch index 665aea240..f2659f49e 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java b/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java -index f86c95a13dff012de5db3e41ac261e9e8d44d9f3..1db0b790d824e419bb5fb6ab1f3003e120f9763b 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java -@@ -75,4 +75,26 @@ public class CraftAnvilView extends CraftInventoryView -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java -index 51ae8eddadc87b143b93521a3cef374f1e3a24dc..f7837a7f1988d86fd6da4be182c1ba6e69a89eb0 100644 --- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java +++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java -@@ -265,6 +265,7 @@ public final class CraftLegacy { +@@ -265,6 +_,7 @@ } static { diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch similarity index 75% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch index cff2d04db..74a359244 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java b/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java -index db8d8e2a07296d62c3097f02b03319e2e1ba9394..4ba4d52961b4ba61fe2db130ee4368ff358920d4 100644 --- a/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java +++ b/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java -@@ -708,4 +708,32 @@ public class MaterialRerouting { +@@ -708,4 +_,32 @@ meta.setCanPlaceOn(materials); } // Paper end diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch new file mode 100644 index 000000000..c9e34b3ad --- /dev/null +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch @@ -0,0 +1,13 @@ +--- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java ++++ b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java +@@ -49,4 +_,10 @@ + } + } + ++ // Purpur start - Explorer Map API ++ @Override ++ public boolean isExplorerMap() { ++ return this.worldMap.isExplorerMap; ++ } ++ // Purpur end - Explorer Map API + } diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch similarity index 62% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch index 16ba9f615..46d23c417 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -index 1354ccfbf525e5e64483ac5f443cc2325ba63850..2e7c3d4befeb6256ce81ecaa9ed4e8fbcb21651e 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -@@ -491,7 +491,7 @@ public class CraftScheduler implements BukkitScheduler { +@@ -491,7 +_,7 @@ this.parsePending(); } else { // this.debugTail = this.debugTail.setNext(new CraftAsyncDebugger(this.currentTick + CraftScheduler.RECENT_TICKS, task.getOwner(), task.getTaskClass())); // Paper diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch new file mode 100644 index 000000000..43252e3f2 --- /dev/null +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch @@ -0,0 +1,11 @@ +--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java ++++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +@@ -507,7 +_,7 @@ + // Paper start + @Override + public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { +- return new com.destroystokyo.paper.PaperVersionFetcher(); ++ return new com.destroystokyo.paper.PaperVersionFetcher(); // Pufferfish // Purpur - Rebrand + } + + @Override diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch similarity index 56% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch index 7ad9ebe7a..a560ff72a 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java -index 774556a62eb240da42e84db4502e2ed43495be17..99eb04643fce44c37fd96c99756837ccafe7b559 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,7 +_,7 @@ public static String getBukkitVersion() { String result = "Unknown-Version"; diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch similarity index 82% rename from purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch index 17a68682b..6106785b3 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -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 b3169c551b8410f5861f9db0543c785439ecba7c..377b6bdc80019f0c824c8fd35a8f228315bafe9f 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 { +@@ -23,7 +_,15 @@ DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "kick", "Allows the user to kick players", PermissionDefault.OP, commands); DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "stop", "Allows the user to stop the server", PermissionDefault.OP, commands); DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "list", "Allows the user to list all online players", PermissionDefault.OP, commands); diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch similarity index 56% rename from purpur-server/paper-patches/rejected/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch index 61ed4a1ea..423a40206 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/spigotmc/TicksPerSecondCommand.java b/src/main/java/org/spigotmc/TicksPerSecondCommand.java -index 6d4851aa8c53793bfaf650f399fc5e2a98dbbb24..4f3bd0628c224bb2567ddb0d40d16d44b9a6e14d 100644 --- a/src/main/java/org/spigotmc/TicksPerSecondCommand.java +++ b/src/main/java/org/spigotmc/TicksPerSecondCommand.java -@@ -43,7 +43,7 @@ public class TicksPerSecondCommand extends Command { +@@ -43,7 +_,7 @@ } TextComponent.Builder builder = text(); diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/spigotmc/WatchdogThread.java.patch b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch similarity index 84% rename from purpur-server/paper-patches/rejected/src/main/java/org/spigotmc/WatchdogThread.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch index e3f0ee011..03e3a05ad 100644 --- a/purpur-server/paper-patches/rejected/src/main/java/org/spigotmc/WatchdogThread.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java -index dced8899be0bb8d562093dc3a7673ed8185b85a6..776bc01784b53e3f1d9a35046109c3b9ee4f0882 100644 --- a/src/main/java/org/spigotmc/WatchdogThread.java +++ b/src/main/java/org/spigotmc/WatchdogThread.java -@@ -25,7 +25,7 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre +@@ -25,7 +_,7 @@ private volatile boolean stopping; private WatchdogThread(long timeoutTime, boolean restart) { @@ -17,7 +9,7 @@ index dced8899be0bb8d562093dc3a7673ed8185b85a6..776bc01784b53e3f1d9a35046109c3b9 this.timeoutTime = timeoutTime; this.restart = restart; this.earlyWarningEvery = Math.min(GlobalConfiguration.get().watchdog.earlyWarningEvery, timeoutTime); // Paper -@@ -77,14 +77,14 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre +@@ -77,14 +_,14 @@ if (isLongTimeout) { // Paper end logger.log(Level.SEVERE, "------------------------------"); @@ -35,7 +27,7 @@ index dced8899be0bb8d562093dc3a7673ed8185b85a6..776bc01784b53e3f1d9a35046109c3b9 if (net.minecraft.world.level.Level.lastPhysicsProblem != null) { logger.log(Level.SEVERE, "------------------------------"); -@@ -104,12 +104,12 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre +@@ -104,12 +_,12 @@ } // Paper end } else { @@ -50,7 +42,7 @@ index dced8899be0bb8d562093dc3a7673ed8185b85a6..776bc01784b53e3f1d9a35046109c3b9 FeatureHooks.dumpAllChunkLoadInfo(MinecraftServer.getServer(), isLongTimeout); // Paper - log detailed tick information WatchdogThread.dumpThread(ManagementFactory.getThreadMXBean().getThreadInfo(MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE), logger); logger.log(Level.SEVERE, "------------------------------"); -@@ -122,7 +122,7 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre +@@ -122,7 +_,7 @@ WatchdogThread.dumpThread(thread, logger); } } else { diff --git a/purpur-server/paper-patches/rejected/src/main/resources/log4j2.xml.patch b/purpur-server/paper-patches/files/src/main/resources/log4j2.xml.patch similarity index 74% rename from purpur-server/paper-patches/rejected/src/main/resources/log4j2.xml.patch rename to purpur-server/paper-patches/files/src/main/resources/log4j2.xml.patch index 9d8572f67..8b4a31032 100644 --- a/purpur-server/paper-patches/rejected/src/main/resources/log4j2.xml.patch +++ b/purpur-server/paper-patches/files/src/main/resources/log4j2.xml.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml -index d2a75850af9c6ad2aca66a5f994f1b587d73eac4..a056aa167887abef9e6d531a9edd2cda433567d2 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml -@@ -2,7 +2,16 @@ +@@ -2,7 +_,16 @@ diff --git a/purpur-server/paper-patches/rejected/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch b/purpur-server/paper-patches/files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch similarity index 73% rename from purpur-server/paper-patches/rejected/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch rename to purpur-server/paper-patches/files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch index 8e0ba8a87..6fb471079 100644 --- a/purpur-server/paper-patches/rejected/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch +++ b/purpur-server/paper-patches/files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch @@ -1,14 +1,6 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java b/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java -index fe08e446e86d53cef6eecc33cd484e93adc42871..54fff448fded12cd6110583f0c255f2ca86388da 100644 --- a/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java +++ b/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java -@@ -46,6 +46,7 @@ public class MinecraftCommandPermissionsTest { +@@ -46,6 +_,7 @@ Set foundPerms = new HashSet<>(); for (CommandNode child : root.getChildren()) { final String vanillaPerm = VanillaCommandWrapper.getPermission(child); @@ -16,7 +8,7 @@ index fe08e446e86d53cef6eecc33cd484e93adc42871..54fff448fded12cd6110583f0c255f2c if (!perms.contains(vanillaPerm)) { missing.add("Missing permission for " + child.getName() + " (" + vanillaPerm + ") command"); } else { -@@ -58,6 +59,25 @@ public class MinecraftCommandPermissionsTest { +@@ -58,6 +_,25 @@ } private static final List TO_SKIP = List.of( diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch deleted file mode 100644 index 38febf368..000000000 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java -index d657fd2c507a5b215aeab0a5f3e9c2ee892a27c8..3604d92c122b5c8be823098ce7b91e57e976589c 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java -@@ -21,12 +21,12 @@ public class CraftEndermite extends CraftMonster implements Endermite { - - @Override - public boolean isPlayerSpawned() { -- return false; -+ return getHandle().isPlayerSpawned(); // Purpur - Add back player spawned endermite API - } - - @Override - public void setPlayerSpawned(boolean playerSpawned) { -- // Nop -+ getHandle().setPlayerSpawned(playerSpawned); // Purpur - Add back player spawned endermite API - } - // Paper start - @Override diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch deleted file mode 100644 index 0a5a9bec9..000000000 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch +++ /dev/null @@ -1,18 +0,0 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -index a396157548a5b3c3e86206c35789bb40346c701c..469b99bede578b03a1b711b4404a88bf85d7e7ca 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -281,6 +281,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { - @Override - public void recalculatePermissions() { - this.perm.recalculatePermissions(); -+ getHandle().canPortalInstant = hasPermission("purpur.portal.instant"); // Purpur - Add portal permission bypass - } - - @Override diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch deleted file mode 100644 index 97b45b6ed..000000000 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch +++ /dev/null @@ -1,19 +0,0 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 4f98d138a275a6c34528b7a5148ef265bc38d6b5..459366331971d09e4cd00fb2035be01b4257477a 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -523,7 +523,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; -- getHandle().lastHurtByPlayerTime = entityPlayer == null ? 0 : 100; // 100 value taken from EntityLiving#damageEntity -+ getHandle().lastHurtByPlayerTime = entityPlayer == null ? 0 : getHandle().level().purpurConfig.mobLastHurtByPlayerTime; // 100 value taken from EntityLiving#damageEntity // Purpur - Config for mob last hurt by player time - } - // Paper end - diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch deleted file mode 100644 index c8c5bfff0..000000000 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -index aaddce10e1d41531939d1e7f3d717b458ec1b7ab..d65a3bee4671e9e21769ba03f5e65c7312b23580 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -@@ -373,4 +373,11 @@ public class CraftVillager extends CraftAbstractVillager implements Villager { - getHandle().getGossips().gossips.clear(); - } - // Paper end -+ -+ // Purpur start - Lobotomize stuck villagers -+ @Override -+ public boolean isLobotomized() { -+ return getHandle().isLobotomized(); -+ } -+ // Purpur end - Lobotomize stuck villagers - } diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch deleted file mode 100644 index 8f8964142..000000000 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch +++ /dev/null @@ -1,21 +0,0 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java -index cf0920e5f84b35647882fb963e9972af4e8427e0..2949cd29c7fa707835044a4b61eae150df56296e 100644 ---- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java -+++ b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java -@@ -49,4 +49,10 @@ public class CraftMapRenderer extends MapRenderer { - } - } - -+ // Purpur start - Explorer Map API -+ @Override -+ public boolean isExplorerMap() { -+ return this.worldMap.isExplorerMap; -+ } -+ // Purpur end - Explorer Map API - } diff --git a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch b/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch deleted file mode 100644 index a2bf937ca..000000000 --- a/purpur-server/paper-patches/rejected/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch +++ /dev/null @@ -1,19 +0,0 @@ -From 589723787ec9d0b9fc55ea9d0d69ad4b7d7b1437 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur paperServer File Patches - - -diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 59c0e8dbe2d0d1155487de33c680e41c0b61acac..1973b54a0eea75d1791b3c27112e599b79afdac2 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 { - // Paper start - @Override - public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { -- return new com.destroystokyo.paper.PaperVersionFetcher(); -+ return new com.destroystokyo.paper.PaperVersionFetcher(); // Pufferfish // Purpur - Rebrand - } - - @Override From ae4134c271d0a17b8bcff0a0dddf25eca654ccf1 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 14 Mar 2025 21:21:45 -0700 Subject: [PATCH 039/289] comment out updatingMinecraft function again... I don't think this function helps forks --- purpur-server/build.gradle.kts.patch | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index c1990f0b2..35861e39c 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -1,16 +1,19 @@ --- a/paper-server/build.gradle.kts +++ b/paper-server/build.gradle.kts -@@ -18,12 +_,22 @@ +@@ -18,11 +_,21 @@ paperweight { minecraftVersion = providers.gradleProperty("mcVersion") - gitFilePatches = false +- +- updatingMinecraft { +- oldPaperCommit = "f4f275519f7c1fbe9db173b7144a4fe81440e365" + //gitFilePatches = true - - updatingMinecraft { - oldPaperCommit = "f4f275519f7c1fbe9db173b7144a4fe81440e365" - } - ++ ++ //updatingMinecraft { ++ // oldPaperCommit = "f4f275519f7c1fbe9db173b7144a4fe81440e365" ++ //} ++ + val purpur = forks.register("purpur") { + upstream.patchDir("paperServer") { + upstreamPath = "paper-server" @@ -18,12 +21,11 @@ + patchesDir = rootDirectory.dir("purpur-server/paper-patches") + outputDir = rootDirectory.dir("paper-server") + } -+ } + } + activeFork = purpur -+ + spigot { buildDataRef = "3edaf46ec1eed4115ce1b18d2846cded42577e42" - packageVersion = "v1_21_R3" // also needs to be updated in MappingEnvironment @@ -104,7 +_,21 @@ } } From 2d3cfe0a5660d9d01d48ea60286771c8e631c97c Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 21 Mar 2025 22:21:44 -0700 Subject: [PATCH 040/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@fd4c6f19 Break MushroomCow parent PaperMC/Paper@be8889d1 getSelected to getSelectedItem PaperMC/Paper@2db2ec9e few random compile fixes PaperMC/Paper@98fac014 format remaining spigot code and make Dolphin#treasurePos nullable PaperMC/Paper@33f3a111 More compilation issues PaperMC/Paper@1e27cd9f PlayerInventory PaperMC/Paper@b5e234d0 Unsafe block entity pos reading in ItemStack PaperMC/Paper@955ba6c3 update block data PaperMC/Paper@49117c0e update block states PaperMC/Paper@6034384b make CraftCow extends CraftAbstractCow PaperMC/Paper@e28be7d2 chore: update paperweight PaperMC/Paper@dbc5c19c Remove mavenLocal ref for initial pw snapshots PaperMC/Paper@2445c79f do a full clone in the action for now PaperMC/Paper@7633dde2 move things around PaperMC/Paper@564344fe More compiler issues PaperMC/Paper@907f1931 bump built-in datapack version and api-version PaperMC/Paper@bf417ba7 tag renames PaperMC/Paper@7f6f64f4 cat and frog variants registries are now data-driven PaperMC/Paper@3124c702 add new particles PaperMC/Paper@17ea49c2 tag changes and update some mapping PaperMC/Paper@8107eb0f Partial raid changes PaperMC/Paper@a1334d3b Missed local diff PaperMC/Paper@1a4367ed Use Holderable in more places PaperMC/Paper@f990b858 preserve update flag for block placement around API PaperMC/Paper@f1424fbf Compile fixes PaperMC/Paper@c2e18c6a fixup diffs PaperMC/Paper@960ad6e0 remove redundant flags and check place result PaperMC/Paper@9c01f0cd fix wrong event call for cactus growth PaperMC/Paper@4b3d802b fix broken liquid physics during structure placement PaperMC/Paper@28fbc7b6 fix damage modifier a bit PaperMC/Paper@c6e7ebcc re-add missed distance check PaperMC/Paper@8e4021aa add dropped local var after decompilation in AgeableMob#ageUp PaperMC/Paper@4d28058a make cactus max grow height config consistent with flower chance PaperMC/Paper@d4b5936c some fixes and simplify overrides PaperMC/Paper@57876760 Use -> uses in particle javadocs PaperMC/Paper@43505dca Start updating feature patches PaperMC/Paper@3ab0d4b6 misc changes PaperMC/Paper@b80114b2 fix broken AT PaperMC/Paper@56ed2dc6 More feature patches PaperMC/Paper@460b99e7 Compile fixes PaperMC/Paper@3bf99764 more misc changes PaperMC/Paper@c2c47249 readd wrongly dropped diff PaperMC/Paper@3459b68d fix some feature patches --- build.gradle.kts | 2 +- gradle.properties | 2 +- .../features/0002-Purpur-config-files.patch | 4 +-- .../main/java/org/bukkit/Bukkit.java.patch | 2 +- .../java/org/bukkit/OfflinePlayer.java.patch | 2 +- .../main/java/org/bukkit/Server.java.patch | 2 +- .../java/org/bukkit/entity/Entity.java.patch | 2 +- .../org/bukkit/entity/LivingEntity.java.patch | 2 +- .../java/org/bukkit/entity/Player.java.patch | 2 +- .../event/entity/EntityDamageEvent.java.patch | 2 +- .../plugin/java/LibraryLoader.java.patch | 30 ++++++++--------- .../features/0002-Ridables.patch | 12 +++---- ...urable-void-damage-height-and-damage.patch | 6 ++-- ...0005-Add-EntityTeleportHinderedEvent.patch | 10 +++--- ...006-API-for-any-mob-to-burn-daylight.patch | 10 +++--- .../destroystokyo/paper/Metrics.java.patch | 4 +-- .../craftbukkit/CraftOfflinePlayer.java.patch | 33 ++----------------- .../bukkit/craftbukkit/CraftServer.java.patch | 16 ++++----- .../bukkit/craftbukkit/CraftWorld.java.patch | 2 +- .../org/bukkit/craftbukkit/Main.java.patch | 9 ++--- .../craftbukkit/block/CraftBeehive.java.patch | 8 ++--- .../craftbukkit/block/CraftConduit.java.patch | 2 +- .../CraftConsoleCommandSender.java.patch | 4 +-- .../entity/CraftHumanEntity.java.patch | 2 +- .../craftbukkit/entity/CraftLlama.java.patch | 2 +- .../craftbukkit/entity/CraftPlayer.java.patch | 6 ++-- .../inventory/CraftItemStack.java.patch | 2 +- .../inventory/view/CraftAnvilView.java.patch | 2 +- .../craftbukkit/legacy/CraftLegacy.java.patch | 2 +- .../map/CraftMapRenderer.java.patch | 2 +- .../util/CraftMagicNumbers.java.patch | 4 +-- .../org/spigotmc/WatchdogThread.java.patch | 10 +++--- 32 files changed, 86 insertions(+), 114 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 08d29ffea..63881e1bc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ import org.gradle.api.tasks.testing.logging.TestLogEvent plugins { java // TODO java launcher tasks - id("io.papermc.paperweight.patcher") version "2.0.0-beta.15" + id("io.papermc.paperweight.patcher") version "2.0.0-beta.16" } val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/" diff --git a/gradle.properties b/gradle.properties index e47ae97ea..30d437c80 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5-pre1 -paperCommit = 4db94754ad4ea08f76ff8746677a20500e206bc2 +paperCommit = 3459b68dc3f22653ac576b3f8b94f05b419ec611 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch b/purpur-api/paper-patches/features/0002-Purpur-config-files.patch index fa472591e..9f797dcc8 100644 --- a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch +++ b/purpur-api/paper-patches/features/0002-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 4d821f25903ff800cc21a4eb35332677a5992635..51f22c887ef610b339953115f69bbf1316b667aa 100644 +index ab71ddde526f80b52169ac7ea6feb9b6c987d8d4..4e516fc82bf4bf03e8d561a629bc712527d1f4bb 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2362,6 +2362,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2369,6 +2369,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch index 795880bef..b36882456 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2995,4 +_,133 @@ +@@ -2996,4 +_,133 @@ public static void restart() { server.restart(); } diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch index 4abee8d53..0f821e6ad 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/OfflinePlayer.java +++ b/src/main/java/org/bukkit/OfflinePlayer.java -@@ -567,4 +_,104 @@ +@@ -570,4 +_,104 @@ @Override io.papermc.paper.persistence.PersistentDataContainerView getPersistentDataContainer(); // Paper end - add pdc to offline player diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch index 2a232cab8..5b53e005a 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2698,4 +_,111 @@ +@@ -2705,4 +_,111 @@ */ void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value); // Paper end - API to check if the server is sleeping diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch index 2ee29df0c..d50ed3e9e 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1196,4 +_,59 @@ +@@ -1192,4 +_,59 @@ */ void broadcastHurtAnimation(@NotNull java.util.Collection players); // Paper end - broadcast hurt animation diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch index 2ec452396..62363164e 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1468,4 +_,20 @@ +@@ -1452,4 +_,20 @@ */ boolean canUseEquipmentSlot(org.bukkit.inventory.@NotNull EquipmentSlot slot); // Paper end - Expose canUseSlot diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch index 8998eac18..673702252 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3918,4 +_,123 @@ +@@ -3894,4 +_,123 @@ * @param score New death screen score of player */ void setDeathScreenScore(int score); diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch index 0d86a78ae..7c449dcc4 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java -@@ -308,7 +_,8 @@ +@@ -306,7 +_,8 @@ WORLD_BORDER, /** * Damage caused when an entity contacts a block such as a Cactus, diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch index f8702315d..f9c0e19bb 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch @@ -1,26 +1,26 @@ --- a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java +++ b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java -@@ -68,6 +_,7 @@ +@@ -63,6 +_,7 @@ + session.setTransferListener(new AbstractTransferListener() { @Override - public void transferStarted(@NotNull TransferEvent event) throws TransferCancelledException - { + public void transferStarted(@NotNull TransferEvent event) { + if (!JavaPluginLoader.SuppressLibraryLoaderLogger) // Purpur - Add log suppression for LibraryLoader - logger.log( Level.INFO, "Downloading {0}", event.getResource().getRepositoryUrl() + event.getResource().getResourceName() ); + logger.log(Level.INFO, "Downloading {0}", event.getResource().getRepositoryUrl() + event.getResource().getResourceName()); } - } ); -@@ -94,6 +_,7 @@ - { + }); +@@ -88,6 +_,7 @@ + // Paper end - plugin loader api return null; } + if (!JavaPluginLoader.SuppressLibraryLoaderLogger) // Purpur - Add log suppression for LibraryLoader - 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 -@@ -144,6 +_,7 @@ + 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 +@@ -140,6 +_,7 @@ } - jarFiles.add( url ); + jarFiles.add(url); + if (!JavaPluginLoader.SuppressLibraryLoaderLogger) // Purpur - Add log suppression for LibraryLoader - logger.log( Level.INFO, "[{0}] Loaded library {1}", new Object[] - { - java.util.Objects.requireNonNullElseGet(desc.getPrefix(), desc::getName), file // Paper - use configured log prefix + logger.log(Level.INFO, "[{0}] Loaded library {1}", new Object[] + { + java.util.Objects.requireNonNullElseGet(desc.getPrefix(), desc::getName), file // Paper - use configured log prefix diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index 7ad33ac8c..c4b0efc57 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index d7cf58309b3f455a18de7672fe6ee913f86bac5b..71cc3b64ee27118badcdd6214cb1c6a120202f44 100644 +index 227a2cdc6dbca17d4771aff3a0f62c424c4b06c9..65c4c0690874c29814098448b6cc6077a1e8c566 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1345,4 +1345,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1295,4 +1295,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { + ((CraftPlayer) player).sendHurtAnimation(0, this); } } - // Paper end - broadcast hurt animation + + // Purpur start - Ridables + @Override @@ -37,10 +37,10 @@ index d7cf58309b3f455a18de7672fe6ee913f86bac5b..71cc3b64ee27118badcdd6214cb1c6a1 + // Purpur end - Ridables } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 57c3f8531bf85b53af3a4aad6e9e369d5cff0ce3..56afb317cef0e049aacdd36a1be5f9b7af4d0c77 100644 +index 951048a9f73993f39468f18ea63bfc1baadfc274..0448037c7f14707586b65c1998476d1d11b9b6cb 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -602,6 +602,15 @@ public class CraftEventFactory { +@@ -560,6 +560,15 @@ public class CraftEventFactory { // Paper end craftServer.getPluginManager().callEvent(event); @@ -56,7 +56,7 @@ index 57c3f8531bf85b53af3a4aad6e9e369d5cff0ce3..56afb317cef0e049aacdd36a1be5f9b7 return event; } -@@ -1193,6 +1202,7 @@ public class CraftEventFactory { +@@ -1133,6 +1142,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); diff --git a/purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch b/purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch index 47c0419c8..01ab6babe 100644 --- a/purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch +++ b/purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch @@ -19,10 +19,10 @@ index e48fa405d92fab221fa8331b65c8f324e801d439..e319d6337811051de478d584a37015c4 final ConfigurationTransformation.VersionedBuilder versionedBuilder = Transformations.versionedBuilder(); diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java -index d193330bfd97767705c878e359969378d43b99d0..4bc6a6572f18b333a3c48b2a96f3079998e7d77f 100644 +index 9511f978f6c7da506f67928f5a5a92ecf28e5930..65f6839fe75340a4b58894ad50c6eda7b59128c0 100644 --- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java -@@ -401,6 +401,7 @@ public class WorldConfiguration extends ConfigurationPart { +@@ -402,6 +402,7 @@ public class WorldConfiguration extends ConfigurationPart { public boolean useVanillaWorldScoreboardNameColoring = false; } @@ -30,7 +30,7 @@ index d193330bfd97767705c878e359969378d43b99d0..4bc6a6572f18b333a3c48b2a96f30799 public Environment environment; public class Environment extends ConfigurationPart { -@@ -410,7 +411,9 @@ public class WorldConfiguration extends ConfigurationPart { +@@ -411,7 +412,9 @@ public class WorldConfiguration extends ConfigurationPart { public boolean disableExplosionKnockback = false; public boolean generateFlatBedrock = false; public FrostedIce frostedIce; diff --git a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch index 828db575c..aca6d53ee 100644 --- a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0005-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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 71cc3b64ee27118badcdd6214cb1c6a120202f44..623e4c9985e04edeeac1cdf1d8f89be4849bab33 100644 +index 65c4c0690874c29814098448b6cc6077a1e8c566..549f6fcf5ded0563e665673a797fa92496786c3b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -261,6 +261,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -264,6 +264,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { boolean retainPassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS); // Don't allow teleporting between worlds while keeping passengers if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -29,10 +29,10 @@ index 71cc3b64ee27118badcdd6214cb1c6a120202f44..623e4c9985e04edeeac1cdf1d8f89be4 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 4dd2c2c824ffc7c6da02a3e740b4025459073295..db2cd4603c26bca59654f0a5225b18c446a7f612 100644 +index d53cc5f0952be042629cd8e6e319157d0afb14c7..9b72d1e90ceb531088ace34ff11db12a4bcba2b7 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1441,6 +1441,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1420,6 +1420,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper start - Teleport passenger API // Don't allow teleporting between worlds while keeping passengers if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -40,7 +40,7 @@ index 4dd2c2c824ffc7c6da02a3e740b4025459073295..db2cd4603c26bca59654f0a5225b18c4 return false; } -@@ -1462,6 +1463,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1441,6 +1442,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch index 98be00b6e..61d0f4e7e 100644 --- a/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0006-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/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 3bb597cbce650e408273c07a7c120845c99b053b..dca2761fe4765c6e95b5db0d0cb5c818eb8697b4 100644 +index 549f6fcf5ded0563e665673a797fa92496786c3b..852938bc4007c4f4ef5b51330d13b0fbc624102b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -102,6 +102,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -107,6 +107,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } // Purpur end - Fire Immunity API @@ -24,13 +24,13 @@ index 3bb597cbce650e408273c07a7c120845c99b053b..dca2761fe4765c6e95b5db0d0cb5c818 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 459366331971d09e4cd00fb2035be01b4257477a..3a9d9b7526b2bf0fbd4e0d7886b3d849a6dcfee9 100644 +index b1cc7d90912b0ee1e2b57bb85c595a4f5d49e9aa..74e1e1751a2c3a25d44dec59c104f27980a057ae 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1211,4 +1211,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1176,4 +1176,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { + public boolean canUseEquipmentSlot(org.bukkit.inventory.EquipmentSlot slot) { return this.getHandle().canUseSlot(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); } - // Paper end - Expose canUseSlot + + // Purpur start - API for any mob to burn daylight + @Override diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch index fc55c48ff..da7e3f288 100644 --- a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/com/destroystokyo/paper/Metrics.java +++ b/src/main/java/com/destroystokyo/paper/Metrics.java -@@ -592,7 +_,7 @@ +@@ -593,7 +_,7 @@ boolean logFailedRequests = config.getBoolean("logFailedRequests", false); // Only start Metrics, if it's enabled in the config if (config.getBoolean("enabled", true)) { @@ -9,7 +9,7 @@ metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> { String minecraftVersion = Bukkit.getVersion(); -@@ -601,16 +_,8 @@ +@@ -602,16 +_,8 @@ })); metrics.addCustomChart(new Metrics.SingleLineChart("players", () -> Bukkit.getOnlinePlayers().size())); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch index 844f937c4..070fe7474 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -@@ -366,14 +_,26 @@ +@@ -339,6 +_,12 @@ @Override public Location getLocation() { @@ -13,36 +13,7 @@ CompoundTag data = this.getData(); if (data == null) { return null; - } - -- if (data.contains("Pos") && data.contains("Rotation")) { -- ListTag position = (ListTag) data.get("Pos"); -- ListTag rotation = (ListTag) data.get("Rotation"); -+ // Purpur start - OfflinePlayer API -+ //if (data.contains("Pos") && data.contains("Rotation")) { -+ ListTag position = data.getList("Pos", net.minecraft.nbt.Tag.TAG_DOUBLE); -+ ListTag rotation = data.getList("Rotation", net.minecraft.nbt.Tag.TAG_FLOAT); -+ -+ if (position.isEmpty() && rotation.isEmpty()) { -+ return null; -+ } -+ // Purpur end - OfflinePlayer API - - UUID uuid = new UUID(data.getLong("WorldUUIDMost"), data.getLong("WorldUUIDLeast")); - -@@ -384,9 +_,9 @@ - rotation.getFloat(0), - rotation.getFloat(1) - ); -- } -+ //} // Purpur - OfflinePlayer API - -- return null; -+ //return null; // Purpur - OfflinePlayer API - } - - @Override -@@ -620,4 +_,191 @@ +@@ -571,4 +_,191 @@ manager.save(); } } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index 89a9146e7..f604bc70e 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -21,7 +21,7 @@ CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1088,6 +_,7 @@ +@@ -1069,6 +_,7 @@ org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -29,7 +29,7 @@ for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1103,6 +_,7 @@ +@@ -1084,6 +_,7 @@ } } world.spigotConfig.init(); // Spigot @@ -37,7 +37,7 @@ } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1120,6 +_,7 @@ +@@ -1101,6 +_,7 @@ org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -45,7 +45,7 @@ this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1647,6 +_,60 @@ +@@ -1600,6 +_,60 @@ return true; } @@ -106,7 +106,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -3052,6 +_,18 @@ +@@ -2955,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +125,7 @@ @Override public void restart() { CraftServer.this.restart(); -@@ -3086,6 +_,7 @@ +@@ -2988,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -133,10 +133,10 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3296,4 +_,18 @@ +@@ -3195,4 +_,18 @@ + public void allowPausing(final Plugin plugin, final boolean value) { this.console.addPluginAllowingSleep(plugin.getName(), value); } - // Paper end - API to check if the server is sleeping + + // Purpur start - Bring back server name + @Override diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch index 35b519694..4e6e154b7 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2346,6 +_,50 @@ +@@ -2347,6 +_,50 @@ return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch index e86001e4b..ed8da8e31 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch @@ -1,8 +1,8 @@ --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -176,6 +_,13 @@ +@@ -165,6 +_,14 @@ + .defaultsTo(new File[] {}) .describedAs("Jar file"); - // Paper end + // Purpur start - Purpur config files + acceptsAll(asList("purpur", "purpur-settings"), "File for purpur settings") @@ -11,10 +11,11 @@ + .defaultsTo(new File("purpur.yml")) + .describedAs("Yml file"); + // Purpur end - Purpur config files - // Paper start ++ acceptsAll(asList("server-name"), "Name of the server") .withRequiredArg() -@@ -259,7 +_,7 @@ + .ofType(String.class) +@@ -224,7 +_,7 @@ System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch index 39590b5cd..e8bb09a96 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch @@ -6,10 +6,10 @@ + private final List> storage = new ArrayList<>(); // Purpur - Stored Bee API + - public CraftBeehive(World world, BeehiveBlockEntity tileEntity) { - super(world, tileEntity); + public CraftBeehive(World world, BeehiveBlockEntity blockEntity) { + super(world, blockEntity); + // Purpur start - load bees to be able to modify them individually - Stored Bee API -+ for(BeehiveBlockEntity.BeeData data : tileEntity.getStored()) { ++ for(BeehiveBlockEntity.BeeData data : blockEntity.getStored()) { + storage.add(new org.purpurmc.purpur.entity.PurpurStoredBee(data, this)); + } + // Purpur end - Stored Bee API @@ -34,7 +34,7 @@ + } + + if(isPlaced()) { -+ BeehiveBlockEntity beehive = ((BeehiveBlockEntity) this.getTileEntityFromWorld()); ++ BeehiveBlockEntity beehive = ((BeehiveBlockEntity) this.getBlockEntityFromWorld()); + BeehiveBlockEntity.BeeData data = ((org.purpurmc.purpur.entity.PurpurStoredBee) entity).getHandle(); + + List list = beehive.releaseBee(getHandle(), data, BeeReleaseStatus.BEE_RELEASED, true); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch index e60687bc8..355e42fa4 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch @@ -3,7 +3,7 @@ @@ -73,7 +_,7 @@ public int getRange() { this.ensureNoWorldGeneration(); - ConduitBlockEntity conduit = (ConduitBlockEntity) this.getTileEntityFromWorld(); + ConduitBlockEntity conduit = (ConduitBlockEntity) this.getBlockEntityFromWorld(); - return (conduit != null) ? ConduitBlockEntity.getRange(conduit.effectBlocks) : 0; + return (conduit != null) ? ConduitBlockEntity.getRange(conduit.effectBlocks, this.world.getHandle()) : 0; // Purpur - Conduit behavior configuration } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch index 411f8ce59..18d1a9162 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch @@ -14,8 +14,8 @@ } @Override -@@ -91,7 +_,7 @@ - // Paper start +@@ -88,7 +_,7 @@ + @Override public void sendMessage(final net.kyori.adventure.identity.Identity identity, final net.kyori.adventure.text.Component message, final net.kyori.adventure.audience.MessageType type) { - this.sendRawMessage(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(message)); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch index 248c285af..01fc3ac5b 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -274,6 +_,7 @@ +@@ -273,6 +_,7 @@ @Override public void recalculatePermissions() { this.perm.recalculatePermissions(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch index a4b4e0b77..c5db6e7ee 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java -@@ -88,4 +_,17 @@ +@@ -89,4 +_,17 @@ public Llama getCaravanTail() { return this.getHandle().caravanTail == null ? null : (Llama) this.getHandle().caravanTail.getBukkitEntity(); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 2d301d9d4..511f97b31 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -588,10 +_,15 @@ +@@ -590,10 +_,15 @@ @Override public void setPlayerListName(String name) { @@ -17,7 +17,7 @@ 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)) { -@@ -2749,6 +_,28 @@ +@@ -2730,6 +_,28 @@ return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -46,7 +46,7 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3602,4 +_,76 @@ +@@ -3576,4 +_,76 @@ public void setDeathScreenScore(final int score) { getHandle().setScore(score); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch index 6c51193da..9203db018 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -@@ -693,4 +_,285 @@ +@@ -649,4 +_,285 @@ } // Paper end - data component API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch index f2659f49e..5d9234b7b 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java -@@ -75,4 +_,26 @@ +@@ -73,4 +_,26 @@ this.setMaximumRepairCost(legacy.getMaximumRepairCost()); } } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch index 9061089d2..973b60688 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java +++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java -@@ -265,6 +_,7 @@ +@@ -261,6 +_,7 @@ } static { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch index c9e34b3ad..33ae859ed 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java +++ b/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java -@@ -49,4 +_,10 @@ +@@ -46,4 +_,10 @@ } } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch index 43252e3f2..32ef5cc86 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch @@ -1,7 +1,7 @@ --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -507,7 +_,7 @@ - // Paper start +@@ -491,7 +_,7 @@ + @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { - return new com.destroystokyo.paper.PaperVersionFetcher(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch index 03e3a05ad..1d6ab6004 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch @@ -8,10 +8,10 @@ + super("Watchdog Thread"); // Purpur - use a generic name - Rebrand this.timeoutTime = timeoutTime; this.restart = restart; - this.earlyWarningEvery = Math.min(GlobalConfiguration.get().watchdog.earlyWarningEvery, timeoutTime); // Paper -@@ -77,14 +_,14 @@ + this.earlyWarningEvery = Math.min(GlobalConfiguration.get().watchdog.earlyWarningEvery, timeoutTime); +@@ -75,14 +_,14 @@ + this.lastEarlyWarning = currentTime; if (isLongTimeout) { - // Paper end logger.log(Level.SEVERE, "------------------------------"); - logger.log(Level.SEVERE, "The server has stopped responding! This is (probably) not a Paper bug."); // Paper + logger.log(Level.SEVERE, "The server has stopped responding! This is (probably) not a Purpur bug."); // Paper // Purpur - Rebrand @@ -27,7 +27,7 @@ if (net.minecraft.world.level.Level.lastPhysicsProblem != null) { logger.log(Level.SEVERE, "------------------------------"); -@@ -104,12 +_,12 @@ +@@ -102,12 +_,12 @@ } // Paper end } else { @@ -42,7 +42,7 @@ FeatureHooks.dumpAllChunkLoadInfo(MinecraftServer.getServer(), isLongTimeout); // Paper - log detailed tick information WatchdogThread.dumpThread(ManagementFactory.getThreadMXBean().getThreadInfo(MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE), logger); logger.log(Level.SEVERE, "------------------------------"); -@@ -122,7 +_,7 @@ +@@ -120,7 +_,7 @@ WatchdogThread.dumpThread(thread, logger); } } else { From bc8c597baa11884c37197df26eee341be12c7d4c Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 21 Mar 2025 22:41:19 -0700 Subject: [PATCH 041/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@2d3a1385 [ci/skip] Refine recipe management API documentation. (#12287) PaperMC/Paper@aaaeb4e1 [ci/skip] Make compilation logs actually readable (#12276) PaperMC/Paper@bb1beda6 feat: add event to wind charge explode (#12248) PaperMC/Paper@9f004614 Update a whole lot of deprecated annotations PaperMC/Paper@72f13f8b [ci/skip] Mention API Checks for CONTRIBUTING.md (#12315) PaperMC/Paper@7cc6cb50 Check for trailing input in ItemFactory#createItemStack (#12312) PaperMC/Paper@f49d18df Add get/set customName to Skull block (#12302) PaperMC/Paper@894631f0 Make advancement ordering predictable (#12292) --- gradle.properties | 2 +- .../files/src/main/java/org/bukkit/Bukkit.java.patch | 2 +- .../files/src/main/java/org/bukkit/World.java.patch | 2 +- .../src/main/java/org/bukkit/entity/Endermite.java.patch | 4 ++-- .../main/java/org/bukkit/craftbukkit/CraftServer.java.patch | 6 +++--- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gradle.properties b/gradle.properties index 3d3b1c720..faae96724 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 6ea42025a49f232f47861c6ca943b0fc66b7effe +paperCommit = 894631f0d091a3de52aed4b6ec0c4f6c7584d697 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch index 795880bef..b36882456 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2995,4 +_,133 @@ +@@ -2996,4 +_,133 @@ public static void restart() { server.restart(); } diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch index b970083ba..aaf9c281d 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4278,6 +_,86 @@ +@@ -4277,6 +_,86 @@ @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Endermite.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Endermite.java.patch index 218b3659e..b2f7a4584 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Endermite.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Endermite.java.patch @@ -13,7 +13,7 @@ * @return player spawned status - * @deprecated this functionality no longer exists */ -- @Deprecated(since = "1.17") +- @Deprecated(since = "1.17", forRemoval = true) boolean isPlayerSpawned(); /** @@ -26,7 +26,7 @@ * @param playerSpawned player spawned status - * @deprecated this functionality no longer exists */ -- @Deprecated(since = "1.17") +- @Deprecated(since = "1.17", forRemoval = true) void setPlayerSpawned(boolean playerSpawned); // Paper start /** diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index 89a9146e7..6ea73f368 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -106,7 +106,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -3052,6 +_,18 @@ +@@ -3047,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +125,7 @@ @Override public void restart() { CraftServer.this.restart(); -@@ -3086,6 +_,7 @@ +@@ -3081,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -133,7 +133,7 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3296,4 +_,18 @@ +@@ -3291,4 +_,18 @@ this.console.addPluginAllowingSleep(plugin.getName(), value); } // Paper end - API to check if the server is sleeping From a76ef6452621e03d4252a1fa2e26703790f543b1 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 22 Mar 2025 14:55:46 -0700 Subject: [PATCH 042/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@f2e7f442 simplify --- gradle.properties | 2 +- .../paper-patches/features/0002-Ridables.patch | 8 ++++---- .../0006-API-for-any-mob-to-burn-daylight.patch | 4 ++-- .../bukkit/craftbukkit/CraftServer.java.patch | 16 ++++++++-------- .../entity/CraftLivingEntity.java.patch | 2 +- .../craftbukkit/legacy/CraftLegacy.java.patch | 2 +- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/gradle.properties b/gradle.properties index 30d437c80..6789c3cb1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5-pre1 -paperCommit = 3459b68dc3f22653ac576b3f8b94f05b419ec611 +paperCommit = f2e7f44275efe36ce30928a7f37f010bbf3f52ec org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index c4b0efc57..23737c216 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -37,11 +37,11 @@ index 227a2cdc6dbca17d4771aff3a0f62c424c4b06c9..65c4c0690874c29814098448b6cc6077 + // Purpur end - Ridables } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 951048a9f73993f39468f18ea63bfc1baadfc274..0448037c7f14707586b65c1998476d1d11b9b6cb 100644 +index 797d731f97c3457d504be5d81e233e3d63f993f6..6f112d700a368a64acca8d702d03ef93942da963 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -560,6 +560,15 @@ public class CraftEventFactory { - // Paper end +@@ -514,6 +514,15 @@ public class CraftEventFactory { + } craftServer.getPluginManager().callEvent(event); + // Purpur start - Ridables @@ -56,7 +56,7 @@ index 951048a9f73993f39468f18ea63bfc1baadfc274..0448037c7f14707586b65c1998476d1d return event; } -@@ -1133,6 +1142,7 @@ public class CraftEventFactory { +@@ -1046,6 +1055,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); diff --git a/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch index 61d0f4e7e..2194f1eaf 100644 --- a/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch @@ -24,10 +24,10 @@ index 549f6fcf5ded0563e665673a797fa92496786c3b..852938bc4007c4f4ef5b51330d13b0fb 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 b1cc7d90912b0ee1e2b57bb85c595a4f5d49e9aa..74e1e1751a2c3a25d44dec59c104f27980a057ae 100644 +index f4425a0e16573200be1951d073e4d0998585ec47..03dbdb8c32a2ed81987fa855567ee192f5c92e41 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1176,4 +1176,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1173,4 +1173,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public boolean canUseEquipmentSlot(org.bukkit.inventory.EquipmentSlot slot) { return this.getHandle().canUseSlot(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index f604bc70e..bec4cf4ee 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -428,6 +_,20 @@ +@@ -423,6 +_,20 @@ this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager); this.pluginManager.paperPluginManager = this.paperPluginManager; // Paper end @@ -21,7 +21,7 @@ CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1069,6 +_,7 @@ +@@ -1064,6 +_,7 @@ org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -29,7 +29,7 @@ for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1084,6 +_,7 @@ +@@ -1079,6 +_,7 @@ } } world.spigotConfig.init(); // Spigot @@ -37,7 +37,7 @@ } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1101,6 +_,7 @@ +@@ -1096,6 +_,7 @@ org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -45,7 +45,7 @@ this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1600,6 +_,60 @@ +@@ -1595,6 +_,60 @@ return true; } @@ -106,7 +106,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -2955,6 +_,18 @@ +@@ -2947,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +125,7 @@ @Override public void restart() { CraftServer.this.restart(); -@@ -2988,6 +_,7 @@ +@@ -2979,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -133,7 +133,7 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3195,4 +_,18 @@ +@@ -3186,4 +_,18 @@ public void allowPausing(final Plugin plugin, final boolean value) { this.console.addPluginAllowingSleep(plugin.getName(), value); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch index 89eefdcaa..29462e01d 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -525,7 +_,7 @@ +@@ -526,7 +_,7 @@ net.minecraft.server.level.ServerPlayer nmsKiller = killer == null ? null : ((CraftPlayer) killer).getHandle(); this.getHandle().setLastHurtByMob(nmsKiller); if (nmsKiller != null) { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch index 973b60688..beea25a6b 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java +++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java -@@ -261,6 +_,7 @@ +@@ -260,6 +_,7 @@ } static { From f5091f2fab538bf0282e21b2efb9a9d0dc2a2314 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 23 Mar 2025 12:40:33 -0700 Subject: [PATCH 043/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@cab3010a Update a whole lot of deprecated annotations PaperMC/Paper@6aad8807 compile fixes and equipOnInteract PaperMC/Paper@c1f5409d Some progress PaperMC/Paper@91a38cdb Finish more item data component API PaperMC/Paper@d8afce2e Split thrown potion PaperMC/Paper@46d21c11 cleanup events PaperMC/Paper@46e7c750 fix legacy serialization with equipOnInteract and add preconditions --- gradle.properties | 2 +- .../paper-patches/features/0002-Purpur-config-files.patch | 4 ++-- .../files/src/main/java/org/bukkit/Bukkit.java.patch | 2 +- .../files/src/main/java/org/bukkit/Server.java.patch | 2 +- .../files/src/main/java/org/bukkit/World.java.patch | 2 +- .../src/main/java/org/bukkit/entity/Endermite.java.patch | 4 ++-- .../files/src/main/java/org/bukkit/entity/Entity.java.patch | 2 +- .../org/bukkit/event/entity/EntityDamageEvent.java.patch | 2 +- .../bukkit/event/entity/EntityPotionEffectEvent.java.patch | 2 +- .../java/org/bukkit/plugin/java/JavaPluginLoader.java.patch | 2 +- .../main/java/org/bukkit/craftbukkit/CraftServer.java.patch | 6 +++--- 11 files changed, 15 insertions(+), 15 deletions(-) diff --git a/gradle.properties b/gradle.properties index 6789c3cb1..7b9015556 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5-pre1 -paperCommit = f2e7f44275efe36ce30928a7f37f010bbf3f52ec +paperCommit = 46e7c750b3deffdd1f92834860c6ee851f212db7 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch b/purpur-api/paper-patches/features/0002-Purpur-config-files.patch index 9f797dcc8..08df6095c 100644 --- a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch +++ b/purpur-api/paper-patches/features/0002-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 ab71ddde526f80b52169ac7ea6feb9b6c987d8d4..4e516fc82bf4bf03e8d561a629bc712527d1f4bb 100644 +index 313af4c93ba978f8727110c293d1588bc1651c71..f89b1218f0162d35384cbffa2d4a93d3fb559f00 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2369,6 +2369,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2371,6 +2371,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch index b36882456..efaae85e3 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2996,4 +_,133 @@ +@@ -2994,4 +_,133 @@ public static void restart() { server.restart(); } diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch index 5b53e005a..c9fb37bf3 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2705,4 +_,111 @@ +@@ -2707,4 +_,111 @@ */ void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value); // Paper end - API to check if the server is sleeping diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch index b970083ba..aaf9c281d 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4278,6 +_,86 @@ +@@ -4277,6 +_,86 @@ @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Endermite.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Endermite.java.patch index 218b3659e..b2f7a4584 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Endermite.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Endermite.java.patch @@ -13,7 +13,7 @@ * @return player spawned status - * @deprecated this functionality no longer exists */ -- @Deprecated(since = "1.17") +- @Deprecated(since = "1.17", forRemoval = true) boolean isPlayerSpawned(); /** @@ -26,7 +26,7 @@ * @param playerSpawned player spawned status - * @deprecated this functionality no longer exists */ -- @Deprecated(since = "1.17") +- @Deprecated(since = "1.17", forRemoval = true) void setPlayerSpawned(boolean playerSpawned); // Paper start /** diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch index d50ed3e9e..995a0fb9c 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1192,4 +_,59 @@ +@@ -1193,4 +_,59 @@ */ void broadcastHurtAnimation(@NotNull java.util.Collection players); // Paper end - broadcast hurt animation diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch index 7c449dcc4..9796956cd 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java -@@ -306,7 +_,8 @@ +@@ -310,7 +_,8 @@ WORLD_BORDER, /** * Damage caused when an entity contacts a block such as a Cactus, diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java.patch index 24085dc5d..0061c3456 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java -@@ -216,6 +_,12 @@ +@@ -218,6 +_,12 @@ * When all effects are removed due to a bucket of milk. */ MILK, diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java.patch index d4cb6a9fd..c0117bc6c 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java +++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java -@@ -55,6 +_,7 @@ +@@ -53,6 +_,7 @@ private final Pattern[] fileFilters = new Pattern[]{Pattern.compile("\\.jar$")}; private final List loaders = new CopyOnWriteArrayList(); private final LibraryLoader libraryLoader; diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index bec4cf4ee..0879a87b6 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -106,7 +106,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -2947,6 +_,18 @@ +@@ -2942,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +125,7 @@ @Override public void restart() { CraftServer.this.restart(); -@@ -2979,6 +_,7 @@ +@@ -2974,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -133,7 +133,7 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3186,4 +_,18 @@ +@@ -3181,4 +_,18 @@ public void allowPausing(final Plugin plugin, final boolean value) { this.console.addPluginAllowingSleep(plugin.getName(), value); } From ca56b414b20026ed20b378f4624ddba86496f72a Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 23 Mar 2025 12:48:06 -0700 Subject: [PATCH 044/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@2aad131e Add config option for command spam whitelist --- gradle.properties | 2 +- purpur-server/minecraft-patches/features/0001-Ridables.patch | 4 ++-- .../server/network/ServerGamePacketListenerImpl.java.patch | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index faae96724..489f086e5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 894631f0d091a3de52aed4b6ec0c4f6c7584d697 +paperCommit = 2aad131e74f1cf5c8c7c06f57f39c8060561b6c3 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 7a56507e8..f47f45322 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -62,10 +62,10 @@ index 6275078467313fe95ae2ae22740135a4b4f39511..7ebecee1de098c218304868b1223b914 private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7b938c0d28af3f15106666e13642e88aa398db4d..9e8fdd28a2b2031e4db011663b67582fce5b3b0f 100644 +index 76487a610e149558b021a6a3f7c6cfccb5e6c674..f9af724c579b9931015d460019cca9ff860750c5 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2845,6 +2845,8 @@ public class ServerGamePacketListenerImpl +@@ -2847,6 +2847,8 @@ public class ServerGamePacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index b4401a637..c456b190d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -214,7 +214,7 @@ org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { -@@ -2751,6 +_,7 @@ +@@ -2753,6 +_,7 @@ AABB boundingBox = target.getBoundingBox(); if (this.player.canInteractWithEntity(boundingBox, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience value for interact range From 848bc8d234a931c6ab848d9e3fdf41c3f88f05ef Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 23 Mar 2025 17:27:52 -0700 Subject: [PATCH 045/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@6670dc71 update to rc1 PaperMC/Paper@07845f21 more compile fixes PaperMC/Paper@0366bb6d fix octahedral group patch PaperMC/Paper@70452b54 Initial draft for tracking affected block pos PaperMC/Paper@93872b22 Reduce diff for inside block tracker PaperMC/Paper@92abbc6c Deprecate Raid#getId for removal --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 7b9015556..2a9ced0f6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT -mcVersion = 1.21.5-pre1 -paperCommit = 46e7c750b3deffdd1f92834860c6ee851f212db7 +mcVersion = 1.21.5-rc1 +paperCommit = 92abbc6ccc73e4da969c3aa6d71efd880197412e org.gradle.configuration-cache = true org.gradle.caching = true From 75efb975cea26d5bbc9f9850c5e85714ca9d9f5a Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 23 Mar 2025 17:35:00 -0700 Subject: [PATCH 046/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@bb3b7e69 Fix annotation mistakes PaperMC/Paper@058455e4 InventoryView QOL open method (#12282) PaperMC/Paper@f2258582 Fix firework entity not being removed when FireworkExplodeEvent is cancelled (#12268) PaperMC/Paper@7819df10 Add getHeight method to ChunkData (#12311) PaperMC/Paper@37b9ca1f Add flush parameter to World#save (#12330) PaperMC/Paper@515e12ca Check if BUNDLE_CONTENTS is present in InventoryClickEvent (#12321) PaperMC/Paper@5a6ab97b Add config to remove player as vehicle restriction in /ride (#12327) PaperMC/Paper@c467df95 Add ItemStack#copyDataFrom (#12224) --- gradle.properties | 2 +- .../files/src/main/java/org/bukkit/World.java.patch | 2 +- .../src/main/java/org/bukkit/inventory/ItemStack.java.patch | 4 ++-- .../org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch | 2 +- .../bukkit/craftbukkit/inventory/CraftItemStack.java.patch | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/gradle.properties b/gradle.properties index 489f086e5..9cb123ed7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 2aad131e74f1cf5c8c7c06f57f39c8060561b6c3 +paperCommit = c467df95a29e6c3d42b7e6f49513e924f9ba2ece org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch index aaf9c281d..32feb363a 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4277,6 +_,86 @@ +@@ -4283,6 +_,86 @@ @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch index 131717ddc..24a90431c 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java -@@ -21,6 +_,13 @@ +@@ -22,6 +_,13 @@ import org.bukkit.persistence.PersistentDataContainer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -14,7 +14,7 @@ /** * Represents a stack of items. -@@ -1345,4 +_,482 @@ +@@ -1371,4 +_,482 @@ return this.craftDelegate.matchesWithoutData(item, excludeTypes, ignoreCount); } // Paper end - data component API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch index 721712915..4c99c2159 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -281,6 +_,7 @@ +@@ -284,6 +_,7 @@ @Override public void recalculatePermissions() { this.perm.recalculatePermissions(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch index 6c51193da..d67bac8f8 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -@@ -693,4 +_,285 @@ +@@ -713,4 +_,285 @@ } // Paper end - data component API From cb8448ffe7909c9950d43b0579b818a20ab7e362 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 24 Mar 2025 13:43:27 -0700 Subject: [PATCH 047/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@102c8bbc Add config for updating equipment on player actions (#12275) PaperMC/Paper@f0388e2f Call EntityPushedByEntityAttackEvent for Mace AoE (#12257) PaperMC/Paper@c37b890c More deferred requireNonNull message creation PaperMC/Paper@310f5229 Add unsupported config option and internal API to simplify remote item matching PaperMC/Paper@6ea42025 Send all attributes on respawn (#12274) PaperMC/Paper@2d3a1385 [ci/skip] Refine recipe management API documentation. (#12287) PaperMC/Paper@aaaeb4e1 [ci/skip] Make compilation logs actually readable (#12276) PaperMC/Paper@bb1beda6 feat: add event to wind charge explode (#12248) PaperMC/Paper@9f004614 Update a whole lot of deprecated annotations PaperMC/Paper@72f13f8b [ci/skip] Mention API Checks for CONTRIBUTING.md (#12315) PaperMC/Paper@7cc6cb50 Check for trailing input in ItemFactory#createItemStack (#12312) PaperMC/Paper@f49d18df Add get/set customName to Skull block (#12302) PaperMC/Paper@894631f0 Make advancement ordering predictable (#12292) PaperMC/Paper@2aad131e Add config option for command spam whitelist PaperMC/Paper@bb3b7e69 Fix annotation mistakes PaperMC/Paper@058455e4 InventoryView QOL open method (#12282) PaperMC/Paper@f2258582 Fix firework entity not being removed when FireworkExplodeEvent is cancelled (#12268) PaperMC/Paper@7819df10 Add getHeight method to ChunkData (#12311) PaperMC/Paper@37b9ca1f Add flush parameter to World#save (#12330) PaperMC/Paper@515e12ca Check if BUNDLE_CONTENTS is present in InventoryClickEvent (#12321) PaperMC/Paper@5a6ab97b Add config to remove player as vehicle restriction in /ride (#12327) PaperMC/Paper@c467df95 Add ItemStack#copyDataFrom (#12224) PaperMC/Paper@78af68b6 fix some ticket related decompile errors PaperMC/Paper@ce3ede47 Server now says yes to movement PaperMC/Paper@eafb6c29 Merge remote-tracking branch 'up/main' into update/1.21.5 PaperMC/Paper@5ef8349e Merge remote-tracking branch 'up/update/1.21.5' into update/1.21.5 PaperMC/Paper@1111f183 Update remote item matching option PaperMC/Paper@58554542 Fix oopsie PaperMC/Paper@b8078d38 Update to 1.21.5-rc2 PaperMC/Paper@a776d7a9 update entity effect PaperMC/Paper@67cc0e5f bump built-in datapack version PaperMC/Paper@28daa6ce update adventure codecs, fixes click and hover events PaperMC/Paper@e50bb66a make Phantom#anchorPoint nullable --- gradle.properties | 4 ++-- .../features/0002-Purpur-config-files.patch | 4 ++-- .../main/java/org/bukkit/Bukkit.java.patch | 2 +- .../main/java/org/bukkit/Server.java.patch | 2 +- .../src/main/java/org/bukkit/World.java.patch | 2 +- .../org/bukkit/inventory/ItemStack.java.patch | 4 ++-- purpur-server/build.gradle.kts.patch | 21 ++++++------------- ...0005-Add-EntityTeleportHinderedEvent.patch | 8 +++---- .../entity/CraftHumanEntity.java.patch | 2 +- .../craftbukkit/entity/CraftPlayer.java.patch | 10 ++++----- .../inventory/CraftItemStack.java.patch | 2 +- 11 files changed, 26 insertions(+), 35 deletions(-) diff --git a/gradle.properties b/gradle.properties index 2a9ced0f6..dc3715d13 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT -mcVersion = 1.21.5-rc1 -paperCommit = 92abbc6ccc73e4da969c3aa6d71efd880197412e +mcVersion = 1.21.5-rc2 +paperCommit = e50bb66a012d256305c9904330200fa2a634b723 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch b/purpur-api/paper-patches/features/0002-Purpur-config-files.patch index 08df6095c..eb88bb178 100644 --- a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch +++ b/purpur-api/paper-patches/features/0002-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 313af4c93ba978f8727110c293d1588bc1651c71..f89b1218f0162d35384cbffa2d4a93d3fb559f00 100644 +index 53ad1696d02afbebf27663dd753fa93e41cfeb4e..cec387842895d617b0dcf9158f080fe03e08a926 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2371,6 +2371,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2369,6 +2369,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch index efaae85e3..c6c42f557 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2994,4 +_,133 @@ +@@ -2997,4 +_,133 @@ public static void restart() { server.restart(); } diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch index c9fb37bf3..5b53e005a 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2707,4 +_,111 @@ +@@ -2705,4 +_,111 @@ */ void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value); // Paper end - API to check if the server is sleeping diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch index aaf9c281d..32feb363a 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4277,6 +_,86 @@ +@@ -4283,6 +_,86 @@ @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch index 131717ddc..24a90431c 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java -@@ -21,6 +_,13 @@ +@@ -22,6 +_,13 @@ import org.bukkit.persistence.PersistentDataContainer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -14,7 +14,7 @@ /** * Represents a stack of items. -@@ -1345,4 +_,482 @@ +@@ -1371,4 +_,482 @@ return this.craftDelegate.matchesWithoutData(item, excludeTypes, ignoreCount); } // Paper end - data component API diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index 35861e39c..5e6fea4b4 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -1,19 +1,9 @@ --- a/paper-server/build.gradle.kts +++ b/paper-server/build.gradle.kts -@@ -18,11 +_,21 @@ +@@ -24,6 +_,16 @@ + // oldPaperCommit = "f4f275519f7c1fbe9db173b7144a4fe81440e365" + //} - paperweight { - minecraftVersion = providers.gradleProperty("mcVersion") -- gitFilePatches = false -- -- updatingMinecraft { -- oldPaperCommit = "f4f275519f7c1fbe9db173b7144a4fe81440e365" -+ //gitFilePatches = true -+ -+ //updatingMinecraft { -+ // oldPaperCommit = "f4f275519f7c1fbe9db173b7144a4fe81440e365" -+ //} -+ + val purpur = forks.register("purpur") { + upstream.patchDir("paperServer") { + upstreamPath = "paper-server" @@ -21,11 +11,12 @@ + patchesDir = rootDirectory.dir("purpur-server/paper-patches") + outputDir = rootDirectory.dir("paper-server") + } - } ++ } + activeFork = purpur - ++ spigot { buildDataRef = "3edaf46ec1eed4115ce1b18d2846cded42577e42" + packageVersion = "v1_21_R3" // also needs to be updated in MappingEnvironment @@ -104,7 +_,21 @@ } } diff --git a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch index aca6d53ee..d08b9c1b0 100644 --- a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0005-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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 65c4c0690874c29814098448b6cc6077a1e8c566..549f6fcf5ded0563e665673a797fa92496786c3b 100644 +index e7fec5d2d54dc02bad76cb4100f597208ae46912..2344ee5f7c76d4c0eff375826e75cb97e104c3f1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -264,6 +264,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -29,10 +29,10 @@ index 65c4c0690874c29814098448b6cc6077a1e8c566..549f6fcf5ded0563e665673a797fa924 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index d53cc5f0952be042629cd8e6e319157d0afb14c7..9b72d1e90ceb531088ace34ff11db12a4bcba2b7 100644 +index 9bea9f41cbffaacb77b27636086c57b6f8cb17d7..dcdf06516b0bcfaa191ed82f4236602710d11e44 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1420,6 +1420,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1422,6 +1422,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper start - Teleport passenger API // Don't allow teleporting between worlds while keeping passengers if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -40,7 +40,7 @@ index d53cc5f0952be042629cd8e6e319157d0afb14c7..9b72d1e90ceb531088ace34ff11db12a return false; } -@@ -1441,6 +1442,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1443,6 +1444,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch index 01fc3ac5b..b7ffe4864 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -273,6 +_,7 @@ +@@ -276,6 +_,7 @@ @Override public void recalculatePermissions() { this.perm.recalculatePermissions(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 511f97b31..32b0fc0fa 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -590,10 +_,15 @@ +@@ -592,10 +_,15 @@ @Override public void setPlayerListName(String name) { @@ -17,7 +17,7 @@ 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)) { -@@ -2730,6 +_,28 @@ +@@ -2732,6 +_,28 @@ return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -46,9 +46,9 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3576,4 +_,76 @@ - public void setDeathScreenScore(final int score) { - getHandle().setScore(score); +@@ -3594,4 +_,76 @@ + public void setSimplifyContainerDesyncCheck(final boolean simplifyContainerDesyncCheck) { + this.simplifyContainerDesyncCheck = simplifyContainerDesyncCheck; } + + // Purpur start - Purpur client support diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch index 9203db018..a7623accc 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -@@ -649,4 +_,285 @@ +@@ -669,4 +_,285 @@ } // Paper end - data component API From 48131f7f204430a0ffc52c26cbc10356c7a26493 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 24 Mar 2025 22:23:34 -0700 Subject: [PATCH 048/289] update nms file patches --- .../stats/ServerRecipeBook.java.patch | 10 -- .../entity/ai/behavior/AcquirePoi.java.patch | 11 --- .../ai/sensing/NearestBedSensor.java.patch | 11 --- .../entity/monster/ZombifiedPiglin.java.patch | 20 ---- .../world/entity/npc/CatSpawner.java.patch | 39 -------- .../world/entity/raid/Raids.java.patch | 42 --------- .../minecraft/world/item/EggItem.java.patch | 11 --- .../level/block/BubbleColumnBlock.java.patch | 15 --- .../level/block/CampfireBlock.java.patch | 11 --- .../level/block/SculkShriekerBlock.java.patch | 11 --- .../level/levelgen/PhantomSpawner.java.patch | 32 ------- .../activation/ActivationRange.java.patch | 0 .../net/minecraft/CrashReport.java.patch | 0 .../commands/CommandSourceStack.java.patch | 2 +- .../minecraft/commands/Commands.java.patch | 8 +- .../selector/EntitySelector.java.patch | 0 .../net/minecraft/core/BlockPos.java.patch | 6 +- .../dispenser/DispenseItemBehavior.java.patch | 2 +- .../EquipmentDispenseItemBehavior.java.patch | 2 +- .../framework/GameTestHelper.java.patch | 8 +- .../minecraft/network/Connection.java.patch | 0 .../chat/SignedMessageChain.java.patch | 0 .../net/minecraft/server/Main.java.patch | 0 .../server/MinecraftServer.java.patch | 27 +++--- .../server/PlayerAdvancements.java.patch | 0 .../server/commands/EnchantCommand.java.patch | 2 +- .../commands/GameModeCommand.java.patch | 0 .../server/commands/GiveCommand.java.patch | 2 +- .../dedicated/DedicatedServer.java.patch | 16 ++-- .../DedicatedServerProperties.java.patch | 0 .../server/gui/MinecraftServerGui.java.patch | 0 .../server/gui/StatsComponent.java.patch | 0 .../server/level/ServerLevel.java.patch | 28 +++--- .../server/level/ServerPlayer.java.patch | 50 +++++----- .../level/ServerPlayerGameMode.java.patch | 8 +- .../server/level/WorldGenRegion.java.patch | 2 +- .../ServerCommonPacketListenerImpl.java.patch | 9 +- .../ServerGamePacketListenerImpl.java.patch | 92 +++++++++---------- .../ServerLoginPacketListenerImpl.java.patch | 2 +- .../ServerStatusPacketListenerImpl.java.patch | 0 .../server/players/PlayerList.java.patch | 12 +-- .../server/players/SleepStatus.java.patch | 0 .../stats/ServerRecipeBook.java.patch | 10 ++ .../net/minecraft/util/StringUtil.java.patch | 0 .../world/damagesource/CombatRules.java.patch | 0 .../damagesource/CombatTracker.java.patch | 4 +- .../damagesource/DamageSource.java.patch | 0 .../damagesource/DamageSources.java.patch | 0 .../world/effect/HungerMobEffect.java.patch | 0 .../world/effect/PoisonMobEffect.java.patch | 0 .../effect/RegenerationMobEffect.java.patch | 0 .../effect/SaturationMobEffect.java.patch | 0 .../world/effect/WitherMobEffect.java.patch | 0 .../minecraft/world/entity/Entity.java.patch | 58 ++++++------ .../world/entity/EntitySelector.java.patch | 0 .../world/entity/EntityType.java.patch | 21 ++--- .../world/entity/ExperienceOrb.java.patch | 10 +- .../world/entity/GlowSquid.java.patch | 2 +- .../world/entity/LivingEntity.java.patch | 74 +++++++-------- .../net/minecraft/world/entity/Mob.java.patch | 26 +++--- .../ai/attributes/RangedAttribute.java.patch | 0 .../entity/ai/behavior/AcquirePoi.java.patch | 11 +++ .../ai/behavior/InteractWithDoor.java.patch | 0 .../ai/behavior/ShowTradesToPlayer.java.patch | 0 .../ai/goal/LlamaFollowCaravanGoal.java.patch | 0 .../ai/goal/RangedBowAttackGoal.java.patch | 0 .../ai/goal/RunAroundLikeCrazyGoal.java.patch | 0 .../world/entity/ai/goal/SwellGoal.java.patch | 0 .../ai/sensing/NearestBedSensor.java.patch | 11 +++ .../targeting/TargetingConditions.java.patch | 0 .../world/entity/ambient/Bat.java.patch | 4 +- .../entity/animal/AbstractCow.java.patch} | 16 ++-- .../world/entity/animal/Animal.java.patch | 8 +- .../world/entity/animal/Bee.java.patch | 16 ++-- .../world/entity/animal/Cat.java.patch | 4 +- .../world/entity/animal/Dolphin.java.patch | 14 +-- .../world/entity/animal/Fox.java.patch | 10 +- .../world/entity/animal/IronGolem.java.patch | 14 +-- .../entity/animal/MushroomCow.java.patch | 14 +-- .../world/entity/animal/Ocelot.java.patch | 2 +- .../world/entity/animal/Parrot.java.patch | 10 +- .../world/entity/animal/Pig.java.patch | 2 +- .../world/entity/animal/PolarBear.java.patch | 0 .../world/entity/animal/Rabbit.java.patch | 2 +- .../world/entity/animal/SnowGolem.java.patch | 19 ++-- .../world/entity/animal/Squid.java.patch | 4 +- .../entity/animal/WaterAnimal.java.patch | 2 +- .../world/entity/animal/goat/Goat.java.patch | 2 +- .../entity/animal/horse/Llama.java.patch | 18 ++-- .../world/entity/animal/wolf}/Wolf.java.patch | 42 ++++----- .../boss/enderdragon/EndCrystal.java.patch | 2 +- .../boss/enderdragon/EnderDragon.java.patch | 6 +- .../entity/boss/wither/WitherBoss.java.patch | 18 ++-- .../entity/decoration/ArmorStand.java.patch | 6 +- .../world/entity/item/ItemEntity.java.patch | 6 +- .../world/entity/item/PrimedTnt.java.patch | 2 +- .../monster/AbstractSkeleton.java.patch | 2 +- .../world/entity/monster/Creeper.java.patch | 15 +-- .../world/entity/monster/Drowned.java.patch | 0 .../world/entity/monster/EnderMan.java.patch | 26 +++--- .../world/entity/monster/Endermite.java.patch | 12 +-- .../world/entity/monster/Monster.java.patch | 0 .../world/entity/monster/Phantom.java.patch | 2 +- .../world/entity/monster/Ravager.java.patch | 4 +- .../world/entity/monster/Shulker.java.patch | 12 +-- .../world/entity/monster/Skeleton.java.patch | 2 +- .../world/entity/monster/Strider.java.patch | 2 +- .../entity/monster/Vindicator.java.patch | 2 +- .../world/entity/monster/Zombie.java.patch | 6 +- .../entity/monster/ZombieVillager.java.patch | 2 +- .../entity/monster/ZombifiedPiglin.java.patch | 28 ++++++ .../entity/monster/piglin/PiglinAi.java.patch | 19 ++-- .../world/entity/npc/CatSpawner.java.patch | 41 +++++++++ .../world/entity/npc/Villager.java.patch | 20 ++-- .../entity/npc/WanderingTrader.java.patch | 10 +- .../npc/WanderingTraderSpawner.java.patch | 2 +- .../world/entity/player/Player.java.patch | 20 ++-- .../projectile/AbstractArrow.java.patch | 12 +-- .../entity/projectile/Snowball.java.patch | 0 .../projectile/ThrownEnderpearl.java.patch | 6 +- .../projectile/ThrownTrident.java.patch | 2 +- .../entity/projectile/WitherSkull.java.patch | 10 +- .../world/entity/raid/Raids.java.patch | 42 +++++++++ .../entity/vehicle/AbstractBoat.java.patch | 2 +- .../vehicle/NewMinecartBehavior.java.patch | 0 .../vehicle/OldMinecartBehavior.java.patch | 2 +- .../minecraft/world/food/FoodData.java.patch | 4 +- .../world/food/FoodProperties.java.patch | 0 .../AbstractContainerMenu.java.patch | 0 .../inventory/AbstractFurnaceMenu.java.patch | 0 .../world/inventory/AnvilMenu.java.patch | 16 ++-- .../world/inventory/ArmorSlot.java.patch | 2 +- .../inventory/EnchantmentMenu.java.patch | 2 +- .../world/inventory/GrindstoneMenu.java.patch | 0 .../inventory/ItemCombinerMenu.java.patch | 0 .../minecraft/world/item/AxeItem.java.patch | 6 +- .../minecraft/world/item/BlockItem.java.patch | 6 +- .../minecraft/world/item/BowItem.java.patch | 0 .../world/item/BucketItem.java.patch | 2 +- .../world/item/CrossbowItem.java.patch | 2 +- .../minecraft/world/item/DyeColor.java.patch | 2 +- .../minecraft/world/item/EggItem.java.patch | 11 +++ .../world/item/EndCrystalItem.java.patch | 2 +- .../world/item/EnderpearlItem.java.patch | 0 .../minecraft/world/item/HoeItem.java.patch | 2 +- .../minecraft/world/item/ItemStack.java.patch | 20 ++-- .../net/minecraft/world/item/Items.java.patch | 4 +- .../minecraft/world/item/MapItem.java.patch | 2 +- .../world/item/NameTagItem.java.patch | 0 .../item/ProjectileWeaponItem.java.patch | 0 .../world/item/ShovelItem.java.patch | 2 +- .../world/item/SnowballItem.java.patch | 0 .../world/item/SpawnEggItem.java.patch | 0 .../world/item/ThrowablePotionItem.java.patch | 6 +- .../world/item/TridentItem.java.patch | 18 ++-- ...arAllStatusEffectsConsumeEffect.java.patch | 0 .../world/item/crafting/Ingredient.java.patch | 8 +- .../enchantment/EnchantmentHelper.java.patch | 0 .../enchantment/ItemEnchantments.java.patch | 14 +-- .../item/trading/MerchantOffer.java.patch | 0 .../world/level/BaseSpawner.java.patch | 2 +- .../world/level/EntityGetter.java.patch | 2 +- .../minecraft/world/level/Level.java.patch | 18 ++-- .../world/level/NaturalSpawner.java.patch | 2 +- .../world/level/ServerExplosion.java.patch | 10 +- .../world/level/block/AnvilBlock.java.patch | 2 +- .../world/level/block/AzaleaBlock.java.patch | 0 .../block/BaseCoralPlantTypeBlock.java.patch | 0 .../world/level/block/BedBlock.java.patch | 10 +- .../level/block/BigDripleafBlock.java.patch | 2 +- .../world/level/block/Block.java.patch | 24 ++--- .../world/level/block/Blocks.java.patch | 4 +- .../level/block/BubbleColumnBlock.java.patch | 14 +++ .../world/level/block/BushBlock.java.patch | 6 +- .../world/level/block/CactusBlock.java.patch | 6 +- .../world/level/block/CakeBlock.java.patch | 2 +- .../level/block/CampfireBlock.java.patch | 11 +++ .../level/block/CarvedPumpkinBlock.java.patch | 6 +- .../level/block/CauldronBlock.java.patch | 0 .../level/block/CaveVinesBlock.java.patch | 2 +- .../block/ChangeOverTimeBlock.java.patch | 0 .../world/level/block/ChestBlock.java.patch | 2 +- .../level/block/ComposterBlock.java.patch | 2 +- .../world/level/block/CoralBlock.java.patch | 0 .../world/level/block/CropBlock.java.patch | 6 +- .../world/level/block/DoorBlock.java.patch | 4 +- .../level/block/DragonEggBlock.java.patch | 0 .../block/EnchantingTableBlock.java.patch | 0 .../world/level/block/FarmBlock.java.patch | 8 +- .../block/GrowingPlantHeadBlock.java.patch | 14 +-- .../world/level/block/HayBlock.java.patch | 2 +- .../world/level/block/IceBlock.java.patch | 0 .../world/level/block/KelpBlock.java.patch | 0 .../world/level/block/LiquidBlock.java.patch | 0 .../world/level/block/MagmaBlock.java.patch | 0 .../level/block/NetherPortalBlock.java.patch | 8 +- .../level/block/NetherWartBlock.java.patch | 6 +- .../world/level/block/NoteBlock.java.patch | 2 +- .../level/block/ObserverBlock.java.patch | 0 .../block/PointedDripstoneBlock.java.patch | 2 +- .../level/block/PoweredRailBlock.java.patch | 2 +- .../level/block/RespawnAnchorBlock.java.patch | 2 +- .../level/block/SculkShriekerBlock.java.patch | 11 +++ .../world/level/block/SlabBlock.java.patch | 2 +- .../level/block/SnowLayerBlock.java.patch | 2 +- .../world/level/block/SpawnerBlock.java.patch | 4 +- .../world/level/block/SpongeBlock.java.patch | 0 .../level/block/StonecutterBlock.java.patch | 0 .../level/block/SugarCaneBlock.java.patch | 4 +- .../level/block/TurtleEggBlock.java.patch | 4 +- .../level/block/TwistingVinesBlock.java.patch | 0 .../level/block/WeepingVinesBlock.java.patch | 0 .../level/block/WitherSkullBlock.java.patch | 0 .../AbstractFurnaceBlockEntity.java.patch | 4 +- .../block/entity/BeaconBlockEntity.java.patch | 10 +- .../entity/BeehiveBlockEntity.java.patch | 6 +- .../level/block/entity/BlockEntity.java.patch | 11 ++- .../entity/ConduitBlockEntity.java.patch | 8 +- .../EnchantingTableBlockEntity.java.patch | 17 ++-- .../block/entity/SignBlockEntity.java.patch | 4 +- .../piston/PistonStructureResolver.java.patch | 0 .../chunk/storage/EntityStorage.java.patch | 6 +- .../storage/RegionFileStorage.java.patch | 2 +- .../level/levelgen/PhantomSpawner.java.patch | 28 ++++++ .../level/material/FlowingFluid.java.patch | 4 +- .../world/level/material/LavaFluid.java.patch | 4 +- .../level/material/WaterFluid.java.patch | 5 +- .../pathfinder/WalkNodeEvaluator.java.patch | 0 .../world/level/portal/PortalShape.java.patch | 0 .../maps/MapItemSavedData.java.patch | 2 +- .../EnchantedCountIncreaseFunction.java.patch | 0 .../net/minecraft/world/phys/AABB.java.patch | 6 +- .../org/purpurmc/purpur/PurpurConfig.java | 4 +- .../purpurmc/purpur/PurpurWorldConfig.java | 5 +- 234 files changed, 856 insertions(+), 875 deletions(-) delete mode 100644 purpur-server/minecraft-patches/rejected/net/minecraft/stats/ServerRecipeBook.java.patch delete mode 100644 purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch delete mode 100644 purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch delete mode 100644 purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch delete mode 100644 purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/CatSpawner.java.patch delete mode 100644 purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/raid/Raids.java.patch delete mode 100644 purpur-server/minecraft-patches/rejected/net/minecraft/world/item/EggItem.java.patch delete mode 100644 purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BubbleColumnBlock.java.patch delete mode 100644 purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CampfireBlock.java.patch delete mode 100644 purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SculkShriekerBlock.java.patch delete mode 100644 purpur-server/minecraft-patches/rejected/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch rename purpur-server/minecraft-patches/{rejected => sources}/io/papermc/paper/entity/activation/ActivationRange.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/CrashReport.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/commands/CommandSourceStack.java.patch (99%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/commands/Commands.java.patch (90%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/commands/arguments/selector/EntitySelector.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/core/BlockPos.java.patch (64%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/gametest/framework/GameTestHelper.java.patch (62%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/network/Connection.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/network/chat/SignedMessageChain.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/Main.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/MinecraftServer.java.patch (94%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/PlayerAdvancements.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/commands/EnchantCommand.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/commands/GameModeCommand.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/commands/GiveCommand.java.patch (87%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/dedicated/DedicatedServer.java.patch (90%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/gui/MinecraftServerGui.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/gui/StatsComponent.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/level/ServerLevel.java.patch (95%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/level/ServerPlayer.java.patch (87%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/level/ServerPlayerGameMode.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/level/WorldGenRegion.java.patch (96%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch (95%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch (78%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/players/PlayerList.java.patch (93%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/server/players/SleepStatus.java.patch (100%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/util/StringUtil.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/damagesource/CombatRules.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/damagesource/CombatTracker.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/damagesource/DamageSource.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/damagesource/DamageSources.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/effect/HungerMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/effect/PoisonMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/effect/RegenerationMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/effect/SaturationMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/effect/WitherMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/Entity.java.patch (86%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/EntitySelector.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/EntityType.java.patch (74%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/ExperienceOrb.java.patch (64%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/GlowSquid.java.patch (96%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/LivingEntity.java.patch (78%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/Mob.java.patch (83%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch (100%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch (100%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/ambient/Bat.java.patch (96%) rename purpur-server/minecraft-patches/{rejected/net/minecraft/world/entity/animal/Cow.java.patch => sources/net/minecraft/world/entity/animal/AbstractCow.java.patch} (90%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/Animal.java.patch (90%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/Bee.java.patch (89%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/Cat.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/Dolphin.java.patch (89%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/Fox.java.patch (95%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/IronGolem.java.patch (83%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/MushroomCow.java.patch (75%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/Ocelot.java.patch (96%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/Parrot.java.patch (96%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/Pig.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/PolarBear.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/Rabbit.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/SnowGolem.java.patch (81%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/Squid.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/WaterAnimal.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/goat/Goat.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/animal/horse/Llama.java.patch (76%) rename purpur-server/minecraft-patches/{rejected/net/minecraft/world/entity/animal => sources/net/minecraft/world/entity/animal/wolf}/Wolf.java.patch (85%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch (99%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch (85%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch (88%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/decoration/ArmorStand.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/item/ItemEntity.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/item/PrimedTnt.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch (95%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/monster/Creeper.java.patch (93%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/monster/Drowned.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/monster/EnderMan.java.patch (80%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/monster/Endermite.java.patch (81%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/monster/Monster.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/monster/Phantom.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/monster/Ravager.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/monster/Shulker.java.patch (96%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/monster/Skeleton.java.patch (99%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/monster/Strider.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/monster/Vindicator.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/monster/Zombie.java.patch (95%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/monster/ZombieVillager.java.patch (98%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch (66%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/npc/Villager.java.patch (95%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/npc/WanderingTrader.java.patch (82%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/player/Player.java.patch (94%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/projectile/AbstractArrow.java.patch (86%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/projectile/Snowball.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch (94%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/projectile/ThrownTrident.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/projectile/WitherSkull.java.patch (81%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch (96%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/food/FoodData.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/food/FoodProperties.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/inventory/AbstractContainerMenu.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/inventory/AnvilMenu.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/inventory/ArmorSlot.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/inventory/EnchantmentMenu.java.patch (99%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/inventory/GrindstoneMenu.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/inventory/ItemCombinerMenu.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/AxeItem.java.patch (95%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/BlockItem.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/BowItem.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/BucketItem.java.patch (85%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/CrossbowItem.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/DyeColor.java.patch (96%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/EndCrystalItem.java.patch (92%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/EnderpearlItem.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/HoeItem.java.patch (99%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/ItemStack.java.patch (76%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/Items.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/MapItem.java.patch (96%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/NameTagItem.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/ProjectileWeaponItem.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/ShovelItem.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/SnowballItem.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/SpawnEggItem.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/ThrowablePotionItem.java.patch (58%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/TridentItem.java.patch (66%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/crafting/Ingredient.java.patch (72%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch (81%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/item/trading/MerchantOffer.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/BaseSpawner.java.patch (96%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/EntityGetter.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/Level.java.patch (88%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/NaturalSpawner.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/ServerExplosion.java.patch (89%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/AnvilBlock.java.patch (99%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/AzaleaBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/BedBlock.java.patch (94%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/BigDripleafBlock.java.patch (96%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/Block.java.patch (86%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/Blocks.java.patch (94%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/BushBlock.java.patch (84%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/CactusBlock.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/CakeBlock.java.patch (97%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch (84%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/CauldronBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/CaveVinesBlock.java.patch (86%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/ChestBlock.java.patch (96%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/ComposterBlock.java.patch (99%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/CoralBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/CropBlock.java.patch (95%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/DoorBlock.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/DragonEggBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/EnchantingTableBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/FarmBlock.java.patch (92%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch (83%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/HayBlock.java.patch (90%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/IceBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/KelpBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/LiquidBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/MagmaBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/NetherPortalBlock.java.patch (85%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/NetherWartBlock.java.patch (92%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/NoteBlock.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/ObserverBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/PoweredRailBlock.java.patch (96%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch (97%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/SlabBlock.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/SnowLayerBlock.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/SpawnerBlock.java.patch (99%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/SpongeBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/StonecutterBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/SugarCaneBlock.java.patch (95%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/TurtleEggBlock.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/TwistingVinesBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/WeepingVinesBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/WitherSkullBlock.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch (91%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch (97%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/entity/BlockEntity.java.patch (93%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch (98%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch (69%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch (99%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch (77%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch (98%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/material/FlowingFluid.java.patch (96%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/material/LavaFluid.java.patch (96%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/material/WaterFluid.java.patch (88%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/portal/PortalShape.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch (96%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch (100%) rename purpur-server/minecraft-patches/{rejected => sources}/net/minecraft/world/phys/AABB.java.patch (67%) diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/stats/ServerRecipeBook.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/stats/ServerRecipeBook.java.patch deleted file mode 100644 index 384d2c33b..000000000 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/stats/ServerRecipeBook.java.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/net/minecraft/stats/ServerRecipeBook.java -+++ b/net/minecraft/stats/ServerRecipeBook.java -@@ -138,6 +_,7 @@ - try { - ResourceKey> resourceKey = ResourceKey.create(Registries.RECIPE, ResourceLocation.parse(string)); - if (!isRecognized.test(resourceKey)) { -+ if (!org.purpurmc.purpur.PurpurConfig.loggerSuppressUnrecognizedRecipeErrors) // Purpur - Logger settings (suppressing pointless logs) - LOGGER.error("Tried to load unrecognized recipe: {} removed now.", resourceKey); - } else { - output.accept(resourceKey); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch deleted file mode 100644 index c457ae742..000000000 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -+++ b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -@@ -86,7 +_,7 @@ - }; - // Paper start - optimise POI access - final java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); -- io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, acquirablePois, predicate1, mob.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); -+ io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, acquirablePois, predicate1, mob.blockPosition(), level.purpurConfig.villagerAcquirePoiSearchRadius, level.purpurConfig.villagerAcquirePoiSearchRadius*level.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); // Purpur - Configurable villager search radius - final Set, BlockPos>> set = new java.util.HashSet<>(poiposes.size()); - for (final Pair, BlockPos> poiPose : poiposes) { - if (predicate.test(level, poiPose.getSecond())) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch deleted file mode 100644 index 7e2366a32..000000000 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -+++ b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -@@ -56,7 +_,7 @@ - // 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(), level.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); // Purpur - Configurable villager search radius - Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes)); - // Paper end - optimise POI access - if (path != null && path.canReach()) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch deleted file mode 100644 index e1a87265f..000000000 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java -+++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -112,7 +_,7 @@ - this.maybeAlertOthers(); - } - -- if (this.isAngry()) { -+ if (this.isAngry() && this.level().purpurConfig.zombifiedPiglinCountAsPlayerKillWhenAngry) { // Purpur - Toggle for Zombified Piglin death always counting as player kill when angry - this.lastHurtByPlayerTime = this.tickCount; - } - -@@ -163,7 +_,7 @@ - this.ticksUntilNextAlert = ALERT_INTERVAL.sample(this.random); - } - -- if (livingEntity instanceof Player) { -+ if (livingEntity instanceof Player && this.level().purpurConfig.zombifiedPiglinCountAsPlayerKillWhenAngry) { // Purpur - Toggle for Zombified Piglin death always counting as player kill when angry - this.setLastHurtByPlayer((Player)livingEntity); - } - diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/CatSpawner.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/CatSpawner.java.patch deleted file mode 100644 index d5c870866..000000000 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/CatSpawner.java.patch +++ /dev/null @@ -1,39 +0,0 @@ ---- a/net/minecraft/world/entity/npc/CatSpawner.java -+++ b/net/minecraft/world/entity/npc/CatSpawner.java -@@ -27,7 +_,7 @@ - if (this.nextTick > 0) { - return 0; - } else { -- this.nextTick = 1200; -+ this.nextTick = level.purpurConfig.catSpawnDelay; // Purpur - Cat spawning options - Player randomPlayer = level.getRandomPlayer(); - if (randomPlayer == null) { - return 0; -@@ -61,8 +_,12 @@ - - private int spawnInVillage(ServerLevel serverLevel, BlockPos pos) { - int i = 48; -- if (serverLevel.getPoiManager().getCountInRange(holder -> holder.is(PoiTypes.HOME), pos, 48, PoiManager.Occupancy.IS_OCCUPIED) > 4L) { -- List entitiesOfClass = serverLevel.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(48.0, 8.0, 48.0)); -+ // Purpur start - Cat spawning options -+ int range = serverLevel.purpurConfig.catSpawnVillageScanRange; -+ if (range <= 0) return 0; -+ if (serverLevel.getPoiManager().getCountInRange(holder -> holder.is(PoiTypes.HOME), pos, range, PoiManager.Occupancy.IS_OCCUPIED) > 4L) { -+ List entitiesOfClass = serverLevel.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(range, 8.0, range)); -+ // Purpur end - Cat spawning options - if (entitiesOfClass.size() < 5) { - return this.spawnCat(pos, serverLevel); - } -@@ -73,7 +_,11 @@ - - private int spawnInHut(ServerLevel serverLevel, BlockPos pos) { - int i = 16; -- List entitiesOfClass = serverLevel.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(16.0, 8.0, 16.0)); -+ // Purpur start - Cat spawning options -+ int range = serverLevel.purpurConfig.catSpawnSwampHutScanRange; -+ if (range <= 0) return 0; -+ List entitiesOfClass = serverLevel.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(range, 8.0, range)); -+ // Purpur end - Cat spawning options - return entitiesOfClass.size() < 1 ? this.spawnCat(pos, serverLevel) : 0; - } - diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/raid/Raids.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/raid/Raids.java.patch deleted file mode 100644 index de4dbac7a..000000000 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/raid/Raids.java.patch +++ /dev/null @@ -1,42 +0,0 @@ ---- a/net/minecraft/world/entity/raid/Raids.java -+++ b/net/minecraft/world/entity/raid/Raids.java -@@ -25,6 +_,7 @@ - - public class Raids extends SavedData { - private static final String RAID_FILE_ID = "raids"; -+ public final Map playerCooldowns = Maps.newHashMap(); // Purpur - Raid cooldown setting - public final Map raidMap = Maps.newHashMap(); - private final ServerLevel level; - private int nextAvailableID; -@@ -46,6 +_,17 @@ - - public void tick() { - this.tick++; -+ // Purpur start - Raid cooldown setting -+ if (level.purpurConfig.raidCooldownSeconds != 0 && this.tick % 20 == 0) { -+ com.google.common.collect.ImmutableMap.copyOf(playerCooldowns).forEach((uuid, i) -> { -+ if (i < 1) { -+ playerCooldowns.remove(uuid); -+ } else { -+ playerCooldowns.put(uuid, i - 1); -+ } -+ }); -+ } -+ // Purpur end - Raid cooldown setting - Iterator iterator = this.raidMap.values().iterator(); - - while (iterator.hasNext()) { -@@ -119,11 +_,13 @@ - */ - - 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 - Raid cooldown setting - // CraftBukkit start - if (!org.bukkit.craftbukkit.event.CraftEventFactory.callRaidTriggerEvent(raid, player)) { - player.removeEffect(net.minecraft.world.effect.MobEffects.RAID_OMEN); - return null; - } -+ if (level.purpurConfig.raidCooldownSeconds != 0) playerCooldowns.put(player.getUUID(), level.purpurConfig.raidCooldownSeconds); // Purpur - Raid cooldown setting - - if (!raid.isStarted() && !this.raidMap.containsKey(raid.getId())) { - this.raidMap.put(raid.getId(), raid); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/EggItem.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/EggItem.java.patch deleted file mode 100644 index fe21990b3..000000000 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/EggItem.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/net/minecraft/world/item/EggItem.java -+++ b/net/minecraft/world/item/EggItem.java -@@ -26,7 +_,7 @@ - if (level instanceof ServerLevel serverLevel) { - // CraftBukkit start - // Paper start - PlayerLaunchProjectileEvent -- final Projectile.Delayed thrownEgg = Projectile.spawnProjectileFromRotationDelayed(ThrownEgg::new, serverLevel, itemInHand, player, 0.0F, EggItem.PROJECTILE_SHOOT_POWER, 1.0F); -+ final Projectile.Delayed thrownEgg = Projectile.spawnProjectileFromRotationDelayed(ThrownEgg::new, serverLevel, itemInHand, player, 0.0F, EggItem.PROJECTILE_SHOOT_POWER, (float) serverLevel.purpurConfig.eggProjectileOffset); // Purpur - Projectile offset config - com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemInHand), (org.bukkit.entity.Projectile) thrownEgg.projectile().getBukkitEntity()); - if (event.callEvent() && thrownEgg.attemptSpawn()) { - if (event.shouldConsume()) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BubbleColumnBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BubbleColumnBlock.java.patch deleted file mode 100644 index 5b62f1261..000000000 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BubbleColumnBlock.java.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- a/net/minecraft/world/level/block/BubbleColumnBlock.java -+++ b/net/minecraft/world/level/block/BubbleColumnBlock.java -@@ -124,10 +_,10 @@ - if (blockState.is(Blocks.BUBBLE_COLUMN)) { - return blockState; - } else if (blockState.is(Blocks.SOUL_SAND)) { -- return Blocks.BUBBLE_COLUMN.defaultBlockState().setValue(DRAG_DOWN, Boolean.valueOf(false)); -+ return Blocks.BUBBLE_COLUMN.defaultBlockState().setValue(DRAG_DOWN, Boolean.valueOf(org.purpurmc.purpur.PurpurConfig.soulSandBlockReverseBubbleColumnFlow)); // Purpur - Config to reverse bubble column flow - } else { - return blockState.is(Blocks.MAGMA_BLOCK) -- ? Blocks.BUBBLE_COLUMN.defaultBlockState().setValue(DRAG_DOWN, Boolean.valueOf(true)) -+ ? Blocks.BUBBLE_COLUMN.defaultBlockState().setValue(DRAG_DOWN, Boolean.valueOf(!org.purpurmc.purpur.PurpurConfig.magmaBlockReverseBubbleColumnFlow)) // Purpur - Config to reverse bubble column flow - : Blocks.WATER.defaultBlockState(); - } - } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CampfireBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CampfireBlock.java.patch deleted file mode 100644 index d15f9f5a9..000000000 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CampfireBlock.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/net/minecraft/world/level/block/CampfireBlock.java -+++ b/net/minecraft/world/level/block/CampfireBlock.java -@@ -141,7 +_,7 @@ - return this.defaultBlockState() - .setValue(WATERLOGGED, Boolean.valueOf(flag)) - .setValue(SIGNAL_FIRE, Boolean.valueOf(this.isSmokeSource(level.getBlockState(clickedPos.below())))) -- .setValue(LIT, Boolean.valueOf(!flag)) -+ .setValue(LIT, Boolean.valueOf(level.getMinecraftWorld().purpurConfig.campFireLitWhenPlaced && !flag)) // Purpur - Campfire option for lit when placed - .setValue(FACING, context.getHorizontalDirection()); - } - diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SculkShriekerBlock.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SculkShriekerBlock.java.patch deleted file mode 100644 index db79f0f16..000000000 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SculkShriekerBlock.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/net/minecraft/world/level/block/SculkShriekerBlock.java -+++ b/net/minecraft/world/level/block/SculkShriekerBlock.java -@@ -134,7 +_,7 @@ - @Override - public BlockState getStateForPlacement(BlockPlaceContext context) { - return this.defaultBlockState() -- .setValue(WATERLOGGED, Boolean.valueOf(context.getLevel().getFluidState(context.getClickedPos()).getType() == Fluids.WATER)); -+ .setValue(WATERLOGGED, Boolean.valueOf(context.getLevel().getFluidState(context.getClickedPos()).getType() == Fluids.WATER)).setValue(SculkShriekerBlock.CAN_SUMMON, context.getLevel().purpurConfig.sculkShriekerCanSummonDefault); // Purpur - Config for sculk shrieker can_summon state - } - - @Override diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch b/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch deleted file mode 100644 index 8c587ee00..000000000 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- a/net/minecraft/world/level/levelgen/PhantomSpawner.java -+++ b/net/minecraft/world/level/levelgen/PhantomSpawner.java -@@ -43,7 +_,7 @@ - int spawnAttemptMaxSeconds = level.paperConfig().entities.behavior.phantomsSpawnAttemptMaxSeconds; - this.nextTick += (spawnAttemptMinSeconds + randomSource.nextInt(spawnAttemptMaxSeconds - spawnAttemptMinSeconds + 1)) * 20; - // Paper end - Ability to control player's insomnia and phantoms -- if (level.getSkyDarken() < 5 && level.dimensionType().hasSkyLight()) { -+ if (level.getSkyDarken() < level.purpurConfig.phantomSpawnMinSkyDarkness && level.dimensionType().hasSkyLight()) { // Purpur - Add phantom spawning options - return 0; - } else { - int i = 0; -@@ -51,9 +_,9 @@ - for (ServerPlayer serverPlayer : level.players()) { - if (!serverPlayer.isSpectator() && (!level.paperConfig().entities.behavior.phantomsDoNotSpawnOnCreativePlayers || !serverPlayer.isCreative())) { // Paper - Add phantom creative and insomniac controls - BlockPos blockPos = serverPlayer.blockPosition(); -- if (!level.dimensionType().hasSkyLight() || blockPos.getY() >= level.getSeaLevel() && level.canSeeSky(blockPos)) { -+ if (!level.dimensionType().hasSkyLight() || (!level.purpurConfig.phantomSpawnOnlyAboveSeaLevel || blockPos.getY() >= level.getSeaLevel()) && (!level.purpurConfig.phantomSpawnOnlyWithVisibleSky || level.canSeeSky(blockPos))) { // Purpur - Add phantom spawning options - DifficultyInstance currentDifficultyAt = level.getCurrentDifficultyAt(blockPos); -- if (currentDifficultyAt.isHarderThan(randomSource.nextFloat() * 3.0F)) { -+ if (currentDifficultyAt.isHarderThan(randomSource.nextFloat() * (float) level.purpurConfig.phantomSpawnLocalDifficultyChance)) { // Purpur - Add phantom spawning options - ServerStatsCounter stats = serverPlayer.getStats(); - int i1 = Mth.clamp(stats.getValue(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE); - int i2 = 24000; -@@ -65,7 +_,7 @@ - FluidState fluidState = level.getFluidState(blockPos1); - if (NaturalSpawner.isValidEmptySpawnBlock(level, blockPos1, blockState, fluidState, EntityType.PHANTOM)) { - SpawnGroupData spawnGroupData = null; -- int i3 = 1 + randomSource.nextInt(currentDifficultyAt.getDifficulty().getId() + 1); -+ int i3 = level.purpurConfig.phantomSpawnMinPerAttempt + level.random.nextInt((level.purpurConfig.phantomSpawnMaxPerAttempt < 0 ? currentDifficultyAt.getDifficulty().getId() : level.purpurConfig.phantomSpawnMaxPerAttempt - level.purpurConfig.phantomSpawnMinPerAttempt) + 1); // Purpur - Add phantom spawning options - - for (int i4 = 0; i4 < i3; i4++) { - // Paper start - PhantomPreSpawnEvent diff --git a/purpur-server/minecraft-patches/rejected/io/papermc/paper/entity/activation/ActivationRange.java.patch b/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/io/papermc/paper/entity/activation/ActivationRange.java.patch rename to purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/CrashReport.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/CrashReport.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/commands/CommandSourceStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch similarity index 99% rename from purpur-server/minecraft-patches/rejected/net/minecraft/commands/CommandSourceStack.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch index 1a48edcf9..cfbdec120 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/commands/CommandSourceStack.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch @@ -20,7 +20,7 @@ public Vec3 getPosition() { return this.worldPosition; } -@@ -540,6 +_,30 @@ +@@ -539,6 +_,30 @@ } } } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/commands/Commands.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch similarity index 90% rename from purpur-server/minecraft-patches/rejected/net/minecraft/commands/Commands.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch index 911afeeed..bcd3caac9 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/commands/Commands.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch @@ -1,13 +1,11 @@ --- a/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java -@@ -221,8 +_,8 @@ +@@ -222,7 +_,7 @@ 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 - register minecraft debug commands -+ if (!org.purpurmc.purpur.PurpurConfig.registerMinecraftDebugCommands) TestCommand.register(this.dispatcher); // Purpur - register minecraft debug commands RaidCommand.register(this.dispatcher, context); DebugPathCommand.register(this.dispatcher); DebugMobSpawningCommand.register(this.dispatcher); @@ -26,7 +24,7 @@ } if (selection.includeIntegrated) { -@@ -503,6 +_,7 @@ +@@ -502,6 +_,7 @@ private void runSync(ServerPlayer player, java.util.Collection bukkit, RootCommandNode rootCommandNode) { // Paper end - Perf: Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootCommandNode, true).callEvent(); // Paper - Brigadier API @@ -34,7 +32,7 @@ org.bukkit.event.player.PlayerCommandSendEvent event = new org.bukkit.event.player.PlayerCommandSendEvent(player.getBukkitEntity(), new java.util.LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -513,6 +_,7 @@ +@@ -512,6 +_,7 @@ } } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/commands/arguments/selector/EntitySelector.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/commands/arguments/selector/EntitySelector.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/core/BlockPos.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch similarity index 64% rename from purpur-server/minecraft-patches/rejected/net/minecraft/core/BlockPos.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch index 8b669b1d6..50faf5263 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/core/BlockPos.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch @@ -1,8 +1,8 @@ --- a/net/minecraft/core/BlockPos.java +++ b/net/minecraft/core/BlockPos.java -@@ -63,6 +_,12 @@ - public static final int MAX_HORIZONTAL_COORDINATE = 33554431; - // Paper end - Optimize Bit Operations by inlining +@@ -61,6 +_,12 @@ + private static final int X_OFFSET = PACKED_Y_LENGTH + PACKED_HORIZONTAL_LENGTH; + public static final int MAX_HORIZONTAL_COORDINATE = (1 << PACKED_HORIZONTAL_LENGTH) / 2 - 1; + // Purpur start - Ridables + public BlockPos(net.minecraft.world.entity.Entity entity) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch index 067298651..15ad30cf2 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/net/minecraft/core/dispenser/DispenseItemBehavior.java -@@ -892,5 +_,22 @@ +@@ -735,5 +_,22 @@ DispenserBlock.registerBehavior(Items.TNT_MINECART, new MinecartDispenseItemBehavior(EntityType.TNT_MINECART)); DispenserBlock.registerBehavior(Items.HOPPER_MINECART, new MinecartDispenseItemBehavior(EntityType.HOPPER_MINECART)); DispenserBlock.registerBehavior(Items.COMMAND_BLOCK_MINECART, new MinecartDispenseItemBehavior(EntityType.COMMAND_BLOCK_MINECART)); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch index c0e69aa51..9a2c1e083 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java +++ b/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java -@@ -31,7 +_,7 @@ +@@ -32,7 +_,7 @@ return false; } else { LivingEntity livingEntity = entitiesOfClass.getFirst(); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/gametest/framework/GameTestHelper.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch similarity index 62% rename from purpur-server/minecraft-patches/rejected/net/minecraft/gametest/framework/GameTestHelper.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch index 2076037b3..870429942 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/gametest/framework/GameTestHelper.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/gametest/framework/GameTestHelper.java +++ b/net/minecraft/gametest/framework/GameTestHelper.java -@@ -279,6 +_,8 @@ - return gameType.isCreative(); +@@ -292,6 +_,8 @@ + return gameType; } + public void setAfk(final boolean afk) {} // Purpur - AFK API + @Override - public boolean isLocalPlayer() { - return true; + public boolean isClientAuthoritative() { + return false; diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/network/Connection.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/network/Connection.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/network/chat/SignedMessageChain.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/network/chat/SignedMessageChain.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/Main.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/Main.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/MinecraftServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch similarity index 94% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/MinecraftServer.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch index a3769afc7..d8bcaa293 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/server/MinecraftServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -284,6 +_,7 @@ +@@ -283,6 +_,7 @@ public joptsimple.OptionSet options; public org.bukkit.command.ConsoleCommandSender console; public static int currentTick; // Paper - improve tick loop @@ -8,7 +8,7 @@ public java.util.Queue processQueue = new java.util.concurrent.ConcurrentLinkedQueue(); public int autosavePeriod; // Paper - don't store the vanilla dispatcher -@@ -294,7 +_,7 @@ +@@ -293,7 +_,7 @@ public static final int TICK_TIME = 1000000000 / MinecraftServer.TPS; private static final int SAMPLE_INTERVAL = 20; // Paper - improve server tick loop @Deprecated(forRemoval = true) // Paper @@ -17,17 +17,16 @@ // Spigot end public volatile boolean hasFullyShutdown; // Paper - Improved watchdog support public volatile boolean abnormalExit; // Paper - Improved watchdog support -@@ -302,7 +_,9 @@ - public final io.papermc.paper.configuration.PaperConfigurations paperConfigurations; // Paper - add paper configuration files +@@ -302,6 +_,8 @@ public boolean isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked private final Set pluginsBlockingSleep = new java.util.HashSet<>(); // Paper - API to allow/disallow tick sleeping -+ public boolean lagging = false; // Purpur - Lagging threshold public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation ++ public boolean lagging = false; // Purpur - Lagging threshold + protected boolean upnp = false; // Purpur - UPnP Port Forwarding public static S spin(Function threadFunction) { - ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system -@@ -1001,6 +_,15 @@ + AtomicReference atomicReference = new AtomicReference<>(); +@@ -917,6 +_,15 @@ LOGGER.info("Stopping server"); Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing @@ -43,7 +42,7 @@ // CraftBukkit start if (this.server != null) { this.server.spark.disable(); // Paper - spark -@@ -1093,6 +_,8 @@ +@@ -1011,6 +_,8 @@ this.safeShutdown(waitForServer, false); } public void safeShutdown(boolean waitForServer, boolean isRestarting) { @@ -52,7 +51,7 @@ this.isRestarting = isRestarting; this.hasLoggedStop = true; // Paper - Debugging if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging -@@ -1112,6 +_,7 @@ +@@ -1030,6 +_,7 @@ private static final long MAX_CATCHUP_BUFFER = TICK_TIME * TPS * 60L; private long lastTick = 0; private long catchupTime = 0; @@ -60,7 +59,7 @@ public final RollingAverage tps1 = new RollingAverage(60); public final RollingAverage tps5 = new RollingAverage(60 * 5); public final RollingAverage tps15 = new RollingAverage(60 * 15); -@@ -1197,6 +_,16 @@ +@@ -1115,6 +_,16 @@ } // Paper end - Add onboarding message for initial server start @@ -77,7 +76,7 @@ while (this.running) { long l; if (!this.isPaused() && this.tickRateManager.isSprinting() && this.tickRateManager.checkShouldSprintThisTick()) { -@@ -1221,14 +_,19 @@ +@@ -1139,14 +_,19 @@ if (++MinecraftServer.currentTick % MinecraftServer.SAMPLE_INTERVAL == 0) { final long diff = currentTime - tickSection; final java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP); @@ -100,7 +99,7 @@ tickSection = currentTime; } // Paper end - further improve server tick loop -@@ -1260,6 +_,12 @@ +@@ -1171,6 +_,12 @@ profilerFiller.popPush("nextTickWait"); this.mayHaveDelayedTasks = true; this.delayedTasksMaxNextTickTimeNanos = Math.max(Util.getNanos() + l, this.nextTickTimeNanos); @@ -113,7 +112,7 @@ this.startMeasuringTaskExecutionTime(); this.waitUntilNextTick(); this.finishMeasuringTaskExecutionTime(); -@@ -1690,7 +_,7 @@ +@@ -1580,7 +_,7 @@ long worldTime = level.getGameTime(); final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight); for (Player entityhuman : level.players()) { @@ -122,7 +121,7 @@ continue; } ServerPlayer entityplayer = (ServerPlayer) entityhuman; -@@ -1855,7 +_,7 @@ +@@ -1744,7 +_,7 @@ @DontObfuscate public String getServerModName() { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/PlayerAdvancements.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/PlayerAdvancements.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/PlayerAdvancements.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/PlayerAdvancements.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/commands/EnchantCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/commands/EnchantCommand.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch index 74bd1f710..6379c1d94 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/server/commands/EnchantCommand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch @@ -9,7 +9,7 @@ throw ERROR_LEVEL_TOO_HIGH.create(level, enchantment1.getMaxLevel()); } else { int i = 0; -@@ -81,7 +_,7 @@ +@@ -80,7 +_,7 @@ ItemStack mainHandItem = livingEntity.getMainHandItem(); if (!mainHandItem.isEmpty()) { if (enchantment1.canEnchant(mainHandItem) diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/commands/GameModeCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/commands/GameModeCommand.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/commands/GiveCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch similarity index 87% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/commands/GiveCommand.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch index 5cedf347f..557923162 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/server/commands/GiveCommand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch @@ -6,5 +6,5 @@ boolean flag = serverPlayer.getInventory().add(itemStack1); + if (org.purpurmc.purpur.PurpurConfig.disableGiveCommandDrops) continue; // Purpur - add config option for toggling give command dropping if (flag && itemStack1.isEmpty()) { - ItemEntity itemEntity = serverPlayer.drop(itemStack, false, false, false); // CraftBukkit - SPIGOT-2942: Add boolean to call event + ItemEntity itemEntity = serverPlayer.drop(itemStack, false); if (itemEntity != null) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/dedicated/DedicatedServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch similarity index 90% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/dedicated/DedicatedServer.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch index af8b6989d..696d6b2f1 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/server/dedicated/DedicatedServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch @@ -1,14 +1,14 @@ --- a/net/minecraft/server/dedicated/DedicatedServer.java +++ b/net/minecraft/server/dedicated/DedicatedServer.java -@@ -106,6 +_,7 @@ - // CraftBukkit start - if (!org.bukkit.craftbukkit.Main.useConsole) return; +@@ -105,6 +_,7 @@ + public void run() { + if (!org.bukkit.craftbukkit.Main.useConsole) return; // CraftBukkit // Paper start - Use TerminalConsoleAppender + if (DedicatedServer.this.gui == null || System.console() != null) // Purpur - GUI Improvements - has no GUI or has console (did not double-click) new com.destroystokyo.paper.console.PaperConsole(DedicatedServer.this).start(); /* - jline.console.ConsoleReader bufferedreader = DedicatedServer.this.reader; -@@ -224,6 +_,15 @@ + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); +@@ -183,6 +_,15 @@ io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics @@ -24,7 +24,7 @@ com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now this.setPvpAllowed(properties.pvp); -@@ -271,6 +_,30 @@ +@@ -230,6 +_,30 @@ if (true) throw new IllegalStateException("Failed to bind to port", var10); // Paper - Propagate failed to bind to port error return false; } @@ -54,8 +54,8 @@ + // Purpur end - UPnP Port Forwarding // CraftBukkit start - // this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage)); // Spigot - moved up -@@ -350,6 +_,8 @@ + this.server.loadPlugins(); +@@ -308,6 +_,8 @@ LOGGER.info("JMX monitoring enabled"); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/gui/MinecraftServerGui.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/MinecraftServerGui.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/gui/MinecraftServerGui.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/gui/MinecraftServerGui.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/gui/StatsComponent.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/gui/StatsComponent.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch similarity index 95% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/level/ServerLevel.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch index cced43f51..ce52c7d37 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/server/level/ServerLevel.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -207,6 +_,8 @@ +@@ -203,6 +_,8 @@ private final StructureManager structureManager; private final StructureCheck structureCheck; private final boolean tickTime; @@ -9,7 +9,7 @@ private final RandomSequences randomSequences; // CraftBukkit start -@@ -595,7 +_,24 @@ +@@ -350,7 +_,24 @@ // CraftBukkit end this.tickTime = tickTime; this.server = server; @@ -35,15 +35,15 @@ this.serverLevelData = serverLevelData; ChunkGenerator chunkGenerator = levelStem.generator(); // CraftBukkit start -@@ -681,6 +_,7 @@ - this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler); - // Paper end - rewrite chunk system +@@ -431,6 +_,7 @@ + this.gameEventDispatcher = new GameEventDispatcher(this); + this.randomSequences = Objects.requireNonNullElseGet(randomSequences, () -> this.getDataStorage().computeIfAbsent(RandomSequences.TYPE)); this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit + this.preciseTime = this.serverLevelData.getDayTime(); // Purpur - Configurable daylight cycle } // Paper start -@@ -727,7 +_,7 @@ +@@ -477,7 +_,7 @@ } int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); @@ -52,7 +52,7 @@ // Paper start - create time skip event - move up calculations final long newDayTime = this.levelData.getDayTime() + 24000L; org.bukkit.event.world.TimeSkipEvent event = new org.bukkit.event.world.TimeSkipEvent( -@@ -846,6 +_,13 @@ +@@ -594,6 +_,13 @@ this.serverLevelData.getScheduledEvents().tick(this.server, l); Profiler.get().pop(); if (this.serverLevelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { @@ -66,7 +66,7 @@ this.setDayTime(this.levelData.getDayTime() + 1L); } } -@@ -853,7 +_,21 @@ +@@ -601,7 +_,21 @@ public void setDayTime(long time) { this.serverLevelData.setDayTime(time); @@ -89,7 +89,7 @@ public void tickCustomSpawners(boolean spawnEnemies, boolean spawnFriendlies) { for (CustomSpawner customSpawner : this.customSpawners) { -@@ -934,9 +_,17 @@ +@@ -678,9 +_,17 @@ && this.random.nextDouble() < currentDifficultyAt.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01) // Paper - Configurable spawn chances for skeleton horses && !this.getBlockState(blockPos.below()).is(Blocks.LIGHTNING_ROD); if (flag) { @@ -109,7 +109,7 @@ skeletonHorse.setAge(0); skeletonHorse.setPos(blockPos.getX(), blockPos.getY(), blockPos.getZ()); this.addFreshEntity(skeletonHorse, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit -@@ -1009,7 +_,7 @@ +@@ -738,7 +_,7 @@ pointOfInterestType -> pointOfInterestType.is(PoiTypes.LIGHTNING_ROD), blockPos -> blockPos.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockPos.getX(), blockPos.getZ()) - 1, pos, @@ -118,7 +118,7 @@ PoiManager.Occupancy.ANY ); return optional.map(blockPos -> blockPos.above(1)); -@@ -1057,8 +_,26 @@ +@@ -787,8 +_,26 @@ int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); Component component; if (this.sleepStatus.areEnoughSleeping(_int)) { @@ -145,7 +145,7 @@ component = Component.translatable("sleep.players_sleeping", this.sleepStatus.amountSleeping(), this.sleepStatus.sleepersNeeded(_int)); } -@@ -1191,6 +_,7 @@ +@@ -921,6 +_,7 @@ @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -153,7 +153,7 @@ 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.... -@@ -1198,6 +_,7 @@ +@@ -928,6 +_,7 @@ this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -161,7 +161,7 @@ this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. -@@ -2679,7 +_,7 @@ +@@ -2331,7 +_,7 @@ // 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/purpur-server/minecraft-patches/rejected/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch similarity index 87% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/level/ServerPlayer.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index fdfe657ec..43e16e495 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -1,38 +1,38 @@ --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -400,6 +_,10 @@ - public com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent +@@ -422,6 +_,10 @@ + public @Nullable 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 + public @Nullable 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 - Purpur client support + private boolean tpsBar = false; // Purpur - Implement TPSBar + private boolean compassBar = false; // Purpur - Add compass command + private boolean ramBar = false; // Purpur - Implement rambar commands - // Paper start - rewrite chunk system - private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; -@@ -568,6 +_,10 @@ - if (tag != null) { - BlockPos.CODEC.parse(NbtOps.INSTANCE, tag).resultOrPartial(LOGGER::error).ifPresent(pos -> this.raidOmenPosition = pos); - } + public ServerPlayer(MinecraftServer server, ServerLevel level, GameProfile gameProfile, ClientInformation clientInformation) { + super(level, level.getSharedSpawnPos(), level.getSharedSpawnAngle(), gameProfile); +@@ -525,6 +_,10 @@ + this.respawnConfig = compound.read("respawn", ServerPlayer.RespawnConfig.CODEC).orElse(null); + this.spawnExtraParticlesOnFall = compound.getBooleanOr("spawn_extra_particles_on_fall", false); + this.raidOmenPosition = compound.read("raid_omen_position", BlockPos.CODEC).orElse(null); + -+ if (compound.contains("Purpur.TPSBar")) { this.tpsBar = compound.getBoolean("Purpur.TPSBar"); } // Purpur - Implement TPSBar -+ if (compound.contains("Purpur.CompassBar")) { this.compassBar = compound.getBoolean("Purpur.CompassBar"); } // Purpur - Add compass command -+ if (compound.contains("Purpur.RamBar")) { this.ramBar = compound.getBoolean("Purpur.RamBar"); } // Purpur - Implement rambar command ++ this.tpsBar = compound.getBooleanOr("Purpur.TPSBar", false); // Purpur - Implement TPSBar ++ this.compassBar = compound.getBooleanOr("Purpur.CompassBar", false); // Purpur - Add compass command ++ this.ramBar = compound.getBooleanOr("Purpur.RamBar", false); // Purpur - Implement rambar command } @Override -@@ -612,6 +_,9 @@ - } - +@@ -542,6 +_,9 @@ + compound.storeNullable("raid_omen_position", BlockPos.CODEC, this.raidOmenPosition); this.saveEnderPearls(compound); + this.getBukkitEntity().setExtraData(compound); // CraftBukkit + compound.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur - Implement TPSBar + compound.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur - Add compass command + compound.putBoolean("Purpur.RamBar", this.ramBar); // Purpur - Add rambar command } private void saveParentVehicle(CompoundTag tag) { -@@ -1131,6 +_,7 @@ +@@ -1029,6 +_,7 @@ ) ); Team team = this.getTeam(); @@ -40,7 +40,7 @@ if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) { this.server.getPlayerList().broadcastSystemMessage(deathMessage, false); } else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { -@@ -1224,6 +_,13 @@ +@@ -1126,6 +_,13 @@ if (this.isInvulnerableTo(level, damageSource)) { return false; } else { @@ -54,7 +54,7 @@ Entity entity = damageSource.getEntity(); if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. !(entity instanceof Player player && !this.canHarmPlayer(player)) -@@ -1453,6 +_,7 @@ +@@ -1356,6 +_,7 @@ serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -62,7 +62,7 @@ this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1571,7 +_,7 @@ +@@ -1473,7 +_,7 @@ new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), monster -> monster.isPreventingPlayerRest(this.serverLevel(), this) ); @@ -71,7 +71,7 @@ return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1608,7 +_,19 @@ +@@ -1510,7 +_,19 @@ CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); if (!this.serverLevel().canSleepThroughNights()) { @@ -92,7 +92,7 @@ } ((ServerLevel)this.level()).updateSleepingPlayerList(); -@@ -1716,6 +_,7 @@ +@@ -1602,6 +_,7 @@ @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -100,7 +100,7 @@ this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -2021,6 +_,26 @@ +@@ -1904,6 +_,26 @@ this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -127,7 +127,7 @@ @Override public void displayClientMessage(Component chatComponent, boolean actionBar) { this.sendSystemMessage(chatComponent, actionBar); -@@ -2242,6 +_,20 @@ +@@ -2121,6 +_,20 @@ ); } @@ -148,7 +148,7 @@ public void sendSystemMessage(Component mesage) { this.sendSystemMessage(mesage, false); } -@@ -2380,7 +_,67 @@ +@@ -2259,7 +_,67 @@ public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -217,7 +217,7 @@ public ServerStatsCounter getStats() { return this.stats; -@@ -3085,4 +_,56 @@ +@@ -2887,4 +_,56 @@ return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/level/ServerPlayerGameMode.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/level/ServerPlayerGameMode.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch index 2586f46df..dade16acd 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/server/level/ServerPlayerGameMode.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -351,6 +_,7 @@ +@@ -347,6 +_,7 @@ } return false; } @@ -8,7 +8,7 @@ } // CraftBukkit end -@@ -464,6 +_,7 @@ +@@ -460,6 +_,7 @@ public InteractionHand interactHand; public ItemStack interactItemStack; public InteractionResult useItemOn(ServerPlayer player, Level level, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) { @@ -16,7 +16,7 @@ BlockPos blockPos = hitResult.getBlockPos(); BlockState blockState = level.getBlockState(blockPos); boolean cancelledBlock = false; -@@ -506,7 +_,7 @@ +@@ -502,7 +_,7 @@ boolean flag = !player.getMainHandItem().isEmpty() || !player.getOffhandItem().isEmpty(); boolean flag1 = player.isSecondaryUseActive() && flag; ItemStack itemStack = stack.copy(); @@ -25,7 +25,7 @@ InteractionResult interactionResult = blockState.useItemOn(player.getItemInHand(hand), level, player, hand, hitResult); if (interactionResult.consumesAction()) { CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger(player, blockPos, itemStack); -@@ -552,4 +_,18 @@ +@@ -548,4 +_,18 @@ public void setLevel(ServerLevel serverLevel) { this.level = serverLevel; } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/level/WorldGenRegion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch similarity index 96% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/level/WorldGenRegion.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch index fe8a95124..fb3d981ba 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/server/level/WorldGenRegion.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/level/WorldGenRegion.java +++ b/net/minecraft/server/level/WorldGenRegion.java -@@ -312,6 +_,7 @@ +@@ -284,6 +_,7 @@ return true; } else { // Paper start - Buffer OOB setBlock calls diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch similarity index 95% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch index 4405b9245..4af510735 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch @@ -33,20 +33,17 @@ if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) { int i = (int)(Util.getMillis() - this.keepAliveTime); this.latency = (this.latency * 3 + i) / 4; -@@ -159,6 +_,13 @@ +@@ -159,6 +_,10 @@ ServerGamePacketListenerImpl.LOGGER.error("Couldn't register custom payload", ex); this.disconnect(Component.literal("Invalid payload REGISTER!"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause } + // Purpur start - Purpur client support + } else if (identifier.equals(PURPUR_CLIENT)) { -+ try { -+ player.purpurClient = true; -+ } catch (Exception ignore) { -+ } ++ player.purpurClient = true; + // Purpur end - Purpur client support } else if (identifier.equals(ServerCommonPacketListenerImpl.CUSTOM_UNREGISTER)) { try { - String channels = payload.toString(com.google.common.base.Charsets.UTF_8); + String channels = payload.toString(java.nio.charset.StandardCharsets.UTF_8); @@ -238,6 +_,22 @@ // 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 diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch similarity index 78% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index b4401a637..d47e5e7b1 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -328,6 +_,20 @@ +@@ -321,6 +_,20 @@ this.tickEndEvent = new io.papermc.paper.event.packet.ClientTickEndEvent(player.getBukkitEntity()); // Paper - add client tick end event } @@ -21,7 +21,7 @@ @Override public void tick() { if (this.ackBlockChangesUpTo > -1) { -@@ -386,6 +_,12 @@ +@@ -379,6 +_,12 @@ if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits @@ -34,7 +34,7 @@ this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854 this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause } -@@ -631,6 +_,8 @@ +@@ -615,6 +_,8 @@ this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -43,7 +43,7 @@ Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -711,6 +_,7 @@ +@@ -671,6 +_,7 @@ PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); if (packet.getId() == this.awaitingTeleport) { if (this.awaitingPositionFromClient == null) { @@ -51,7 +51,7 @@ this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause return; } -@@ -1179,6 +_,10 @@ +@@ -1199,6 +_,10 @@ final int maxBookPageSize = pageMax.intValue(); final double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D); long byteAllowed = maxBookPageSize; @@ -62,7 +62,7 @@ for (final String page : pageList) { final int byteLength = page.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; byteTotal += byteLength; -@@ -1203,7 +_,8 @@ +@@ -1223,7 +_,8 @@ } if (byteTotal > byteAllowed) { @@ -72,7 +72,7 @@ this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect return; } -@@ -1222,31 +_,45 @@ +@@ -1242,31 +_,45 @@ Optional optional = packet.title(); optional.ifPresent(list::add); list.addAll(packet.pages()); @@ -82,9 +82,9 @@ + // Purpur end - Allow color codes in books Consumer> consumer = optional.isPresent() - ? texts -> this.signBook(texts.get(0), texts.subList(1, texts.size()), slot) -- : texts -> this.updateBookContents(texts, slot); +- : list1 -> this.updateBookContents(list1, slot); + ? texts -> this.signBook(texts.get(0), texts.subList(1, texts.size()), slot, hasSignPerm) // Purpur - Allow color codes in books -+ : texts -> this.updateBookContents(texts, slot, hasEditPerm); // Purpur - Allow color codes in books ++ : list1 -> this.updateBookContents(list1, slot, hasEditPerm); // Purpur - Allow color codes in books this.filterTextPacket(list).thenAcceptAsync(consumer, this.server); } } @@ -122,7 +122,7 @@ itemStack.set( DataComponents.WRITTEN_BOOK_CONTENT, new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list, true) -@@ -1260,6 +_,16 @@ +@@ -1280,6 +_,16 @@ return this.player.isTextFilteringEnabled() ? Filterable.passThrough(filteredText.filteredOrEmpty()) : Filterable.from(filteredText); } @@ -139,7 +139,7 @@ @Override public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); -@@ -1295,7 +_,15 @@ +@@ -1315,7 +_,15 @@ @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); @@ -156,39 +156,39 @@ this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause } else { ServerLevel serverLevel = this.player.serverLevel(); -@@ -1470,7 +_,7 @@ - movedWrongly = true; - if (event.getLogWarning()) - // Paper end -- LOGGER.warn("{} moved wrongly!", this.player.getName().getString()); -+ LOGGER.warn("{} moved wrongly!, ({})", this.player.getName().getString(), verticalDelta); // Purpur - AFK API - } // Paper - } - -@@ -1536,6 +_,8 @@ - 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 - AFK API -+ - Location oldTo = to.clone(); - PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); - this.cserver.getPluginManager().callEvent(event); -@@ -1592,6 +_,13 @@ - this.player.tryResetCurrentImpulseContext(); +@@ -1496,7 +_,7 @@ + movedWrongly = true; + if (event.getLogWarning()) + // Paper end +- LOGGER.warn("{} moved wrongly!", this.player.getName().getString()); ++ LOGGER.warn("{} moved wrongly!, ({})", this.player.getName().getString(), verticalDelta); // Purpur - AFK API + } // Paper } -+ // Purpur start - Dont run with scissors! -+ if (this.player.serverLevel().purpurConfig.dontRunWithScissors && this.player.isSprinting() && !(this.player.serverLevel().purpurConfig.ignoreScissorsInWater && this.player.isInWater()) && !(this.player.serverLevel().purpurConfig.ignoreScissorsInLava && this.player.isInLava()) && (isScissors(this.player.getItemInHand(InteractionHand.MAIN_HAND)) || isScissors(this.player.getItemInHand(InteractionHand.OFF_HAND))) && (int) (Math.random() * 10) == 0) { -+ this.player.hurtServer(this.player.serverLevel(), this.player.damageSources().scissors(), (float) this.player.serverLevel().purpurConfig.scissorsRunningDamage); -+ if (!org.purpurmc.purpur.PurpurConfig.dontRunWithScissors.isBlank()) this.player.sendActionBarMessage(org.purpurmc.purpur.PurpurConfig.dontRunWithScissors); -+ } -+ // Purpur end - Dont run with scissors! +@@ -1552,6 +_,8 @@ + 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 - AFK API + - this.player.checkMovementStatistics(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z); - this.lastGoodX = this.player.getX(); - this.lastGoodY = this.player.getY(); -@@ -1640,6 +_,17 @@ + Location oldTo = to.clone(); + PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); + this.cserver.getPluginManager().callEvent(event); +@@ -1607,6 +_,13 @@ + this.player.tryResetCurrentImpulseContext(); + } + ++ // Purpur start - Dont run with scissors! ++ if (this.player.serverLevel().purpurConfig.dontRunWithScissors && this.player.isSprinting() && !(this.player.serverLevel().purpurConfig.ignoreScissorsInWater && this.player.isInWater()) && !(this.player.serverLevel().purpurConfig.ignoreScissorsInLava && this.player.isInLava()) && (isScissors(this.player.getItemInHand(InteractionHand.MAIN_HAND)) || isScissors(this.player.getItemInHand(InteractionHand.OFF_HAND))) && (int) (Math.random() * 10) == 0) { ++ this.player.hurtServer(this.player.serverLevel(), this.player.damageSources().scissors(), (float) this.player.serverLevel().purpurConfig.scissorsRunningDamage); ++ if (!org.purpurmc.purpur.PurpurConfig.dontRunWithScissors.isBlank()) this.player.sendActionBarMessage(org.purpurmc.purpur.PurpurConfig.dontRunWithScissors); ++ } ++ // Purpur end - Dont run with scissors! ++ + this.player.checkMovementStatistics(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z); + this.lastGoodX = this.player.getX(); + this.lastGoodY = this.player.getY(); +@@ -1657,6 +_,17 @@ } } @@ -203,10 +203,10 @@ + } + // Purpur end - Dont run with scissors! + - // Paper start - optimise out extra getCubes - private boolean hasNewCollision(final ServerLevel level, final Entity entity, final AABB oldBox, final AABB newBox) { - final List collisionsBB = new java.util.ArrayList<>(); -@@ -2010,6 +_,7 @@ + private boolean isPlayerCollidingWithAnythingNew(LevelReader level, AABB box, double x, double y, double z) { + AABB aabb = this.player.getBoundingBox().move(x - this.player.getX(), y - this.player.getY(), z - this.player.getZ()); + Iterable collisions = level.getCollisions(this.player, aabb.deflate(1.0E-5F)); +@@ -2000,6 +_,7 @@ boolean cancelled; if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) { @@ -214,7 +214,7 @@ org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { -@@ -2751,6 +_,7 @@ +@@ -2672,6 +_,7 @@ AABB boundingBox = target.getBoundingBox(); if (this.player.canInteractWithEntity(boundingBox, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience value for interact range diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch index 5b3bc1b3f..06b474c18 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -307,7 +_,7 @@ +@@ -308,7 +_,7 @@ ServerLoginPacketListenerImpl.LOGGER.warn("Failed to verify username but will let them in anyway!"); ServerLoginPacketListenerImpl.this.startClientVerification(ServerLoginPacketListenerImpl.this.createOfflineProfile(string1)); // Spigot } else { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/players/PlayerList.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch similarity index 93% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/players/PlayerList.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch index 1818a74df..4617cc721 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/server/players/PlayerList.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -396,6 +_,7 @@ +@@ -400,6 +_,7 @@ scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam); } // Paper end - Configurable player collision @@ -8,15 +8,15 @@ PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), loggableAddress, player.getId(), serverLevel.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); // Paper start - Send empty chunk, so players aren't stuck in the world loading screen with our chunk system not sending chunks when dead if (player.isDeadOrDying()) { -@@ -501,6 +_,7 @@ +@@ -504,6 +_,7 @@ } - public net.kyori.adventure.text.Component remove(ServerPlayer player, net.kyori.adventure.text.Component leaveMessage) { + public @Nullable net.kyori.adventure.text.Component remove(ServerPlayer player, net.kyori.adventure.text.Component leaveMessage) { // Paper end - Fix kick event leave message not being sent + org.purpurmc.purpur.task.BossBarTask.removeFromAll(player.getBukkitEntity()); // Purpur - Implement TPSBar ServerLevel serverLevel = player.serverLevel(); player.awardStat(Stats.LEAVE_GAME); // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it -@@ -665,7 +_,7 @@ +@@ -662,7 +_,7 @@ // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameProfile) // ? Component.translatable("multiplayer.disconnect.server_full") // : null; @@ -25,7 +25,7 @@ event.disallow(org.bukkit.event.player.PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure } } -@@ -919,6 +_,20 @@ +@@ -920,6 +_,20 @@ } } @@ -46,7 +46,7 @@ public void broadcastAll(Packet packet, ResourceKey dimension) { for (ServerPlayer serverPlayer : this.players) { if (serverPlayer.level().dimension() == dimension) { -@@ -1002,6 +_,7 @@ +@@ -1004,6 +_,7 @@ } else { b = (byte)(24 + permLevel); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/server/players/SleepStatus.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/server/players/SleepStatus.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch new file mode 100644 index 000000000..f4855d61c --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch @@ -0,0 +1,10 @@ +--- a/net/minecraft/stats/ServerRecipeBook.java ++++ b/net/minecraft/stats/ServerRecipeBook.java +@@ -133,6 +_,7 @@ + private void loadRecipes(List>> recipes, Consumer>> output, Predicate>> isRecognized) { + for (ResourceKey> resourceKey : recipes) { + if (!isRecognized.test(resourceKey)) { ++ if (!org.purpurmc.purpur.PurpurConfig.loggerSuppressUnrecognizedRecipeErrors) // Purpur - Logger settings (suppressing pointless logs) + LOGGER.error("Tried to load unrecognized recipe: {} removed now.", resourceKey); + } else { + output.accept(resourceKey); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/util/StringUtil.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/util/StringUtil.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/CombatRules.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/CombatRules.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/CombatTracker.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/CombatTracker.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch index 0994f6fcd..fa544e5d2 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/CombatTracker.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/damagesource/CombatTracker.java +++ b/net/minecraft/world/damagesource/CombatTracker.java -@@ -54,7 +_,7 @@ +@@ -55,7 +_,7 @@ private Component getMessageForAssistedFall(Entity entity, Component entityDisplayName, String hasWeaponTranslationKey, String noWeaponTranslationKey) { ItemStack itemStack = entity instanceof LivingEntity livingEntity ? livingEntity.getMainHandItem() : ItemStack.EMPTY; @@ -9,7 +9,7 @@ ? Component.translatable(hasWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName, itemStack.getDisplayName()) : Component.translatable(noWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName); } -@@ -98,6 +_,15 @@ +@@ -99,6 +_,15 @@ 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/purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/DamageSource.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/DamageSource.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/DamageSources.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/damagesource/DamageSources.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/HungerMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/HungerMobEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/PoisonMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/PoisonMobEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/RegenerationMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/RegenerationMobEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/SaturationMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/SaturationMobEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/WitherMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/effect/WitherMobEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch similarity index 86% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/Entity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index e6c4d0019..92eed85bd 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -1,27 +1,25 @@ --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -136,7 +_,7 @@ - import org.slf4j.Logger; +@@ -141,6 +_,7 @@ + import org.jetbrains.annotations.Contract; - public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, ScoreHolder, ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity, ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerEntity { // Paper - rewrite chunk system // Paper - optimise entity tracker -- + public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, ScoreHolder, DataComponentGetter { + public static javax.script.ScriptEngine scriptEngine = new javax.script.ScriptEngineManager().getEngineByName("rhino"); // Purpur - Configurable entity base attributes // CraftBukkit start + private static final org.slf4j.Logger LOGGER = com.mojang.logging.LogUtils.getLogger(); 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 -@@ -253,9 +_,10 @@ +@@ -303,8 +_,9 @@ public double xOld; public double yOld; public double zOld; + public float maxUpStep; // Purpur - Add option to set armorstand step height public boolean noPhysics; - private boolean wasOnFire; - public final RandomSource random = SHARED_RANDOM; // Paper - Share random for entities to make them more random + public final RandomSource random; // Paper - Share random for entities to make them more random // Add toggle for RNG manipulation public int tickCount; private int remainingFireTicks = -this.getFireImmuneTicks(); public boolean wasTouchingWater; -@@ -289,8 +_,8 @@ +@@ -338,8 +_,8 @@ public PortalProcessor portalProcess; public int portalCooldown; private boolean invulnerable; @@ -32,7 +30,7 @@ private boolean hasGlowingTag; private final Set tags = new io.papermc.paper.util.SizeLimitedSet<>(new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(), MAX_ENTITY_TAG_COUNT); // Paper - fully limit tag size - replace set impl private final double[] pistonDeltas = new double[]{0.0, 0.0, 0.0}; -@@ -343,6 +_,7 @@ +@@ -393,6 +_,7 @@ public long activatedTick = Integer.MIN_VALUE; public boolean isTemporarilyActive; public long activatedImmunityTick = Integer.MIN_VALUE; @@ -40,9 +38,9 @@ public void inactiveTick() { } -@@ -523,10 +_,21 @@ +@@ -405,10 +_,21 @@ } - // Paper end - optimise entity tracker + // Paper end + // Purpur start - Add canSaveToDisk to Entity + public boolean canSaveToDisk() { @@ -62,7 +60,7 @@ this.position = Vec3.ZERO; this.blockPosition = BlockPos.ZERO; this.chunkPosition = ChunkPos.ZERO; -@@ -905,6 +_,7 @@ +@@ -778,6 +_,7 @@ && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage @@ -70,7 +68,7 @@ this.onBelowWorld(); } } -@@ -1827,7 +_,7 @@ +@@ -1681,7 +_,7 @@ } public boolean fireImmune() { @@ -78,8 +76,8 @@ + return this.immuneToFire != null ? immuneToFire : this.getType().fireImmune(); // Purpur - add fire immune API } - public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource source) { -@@ -1896,7 +_,7 @@ + public boolean causeFallDamage(double fallDistance, float damageMultiplier, DamageSource damageSource) { +@@ -1747,7 +_,7 @@ return this.isInWater() || flag; } @@ -88,7 +86,7 @@ if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { this.wasTouchingWater = false; } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) { -@@ -2522,6 +_,13 @@ +@@ -2369,6 +_,13 @@ compound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -100,10 +98,10 @@ + // Purpur end - Fire immune API + return compound; - } catch (Throwable var9) { - CrashReport crashReport = CrashReport.forThrowable(var9, "Saving entity NBT"); -@@ -2671,6 +_,13 @@ - freezeLocked = compound.getBoolean("Paper.FreezeLock"); + } catch (Throwable var8) { + CrashReport crashReport = CrashReport.forThrowable(var8, "Saving entity NBT"); +@@ -2486,6 +_,13 @@ + freezeLocked = compound.getBooleanOr("Paper.FreezeLock", false); } // Paper end + @@ -113,10 +111,10 @@ + } + // Purpur end - Fire immune API + - } catch (Throwable var17) { - CrashReport crashReport = CrashReport.forThrowable(var17, "Loading entity NBT"); + } catch (Throwable var8) { + CrashReport crashReport = CrashReport.forThrowable(var8, "Loading entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); -@@ -2917,6 +_,7 @@ +@@ -2625,6 +_,7 @@ if (this.isAlive() && this instanceof Leashable leashable) { if (leashable.getLeashHolder() == player) { if (!this.level().isClientSide()) { @@ -124,7 +122,7 @@ // CraftBukkit start - fire PlayerUnleashEntityEvent // Paper start - Expand EntityUnleashEvent org.bukkit.event.player.PlayerUnleashEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials()); -@@ -3242,15 +_,18 @@ +@@ -2941,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } @@ -144,7 +142,7 @@ } } } -@@ -3455,7 +_,7 @@ +@@ -3154,7 +_,7 @@ } public int getMaxAirSupply() { @@ -153,7 +151,7 @@ } public int getAirSupply() { -@@ -3950,7 +_,7 @@ +@@ -3682,7 +_,7 @@ // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -162,7 +160,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4482,6 +_,12 @@ +@@ -4217,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -172,10 +170,10 @@ + } + // Purpur end - Stop squids floating on top of water + - // Paper start - optimise collisions - public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { + public boolean updateFluidHeightAndDoFluidPushing(TagKey fluidTag, double motionScale) { if (this.touchingUnloadedChunk()) { -@@ -4880,7 +_,7 @@ + return false; +@@ -4557,7 +_,7 @@ } public float maxUpStep() { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/EntitySelector.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/EntitySelector.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/EntityType.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch similarity index 74% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/EntityType.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch index 6b937ec99..5fb68cfd6 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/EntityType.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/EntityType.java +++ b/net/minecraft/world/entity/EntityType.java -@@ -1083,6 +_,16 @@ +@@ -1095,6 +_,16 @@ return register(vanillaEntityId(key), builder); } @@ -17,7 +17,7 @@ public static ResourceLocation getKey(EntityType entityType) { return BuiltInRegistries.ENTITY_TYPE.getKey(entityType); } -@@ -1312,6 +_,16 @@ +@@ -1325,6 +_,16 @@ return this.category; } @@ -34,17 +34,14 @@ public String getDescriptionId() { return this.descriptionId; } -@@ -1370,7 +_,14 @@ - entity.load(tag); - }, - // Paper end - Don't fire sync event during generation -- () -> LOGGER.warn("Skipping Entity with id {}", tag.getString("id")) +@@ -1384,7 +_,11 @@ + entity.load(tag); + }, + // Paper end - Don't fire sync event during generation +- () -> LOGGER.warn("Skipping Entity with id {}", tag.getStringOr("id", "[invalid]")) + // Purpur start - log skipped entity's position -+ () -> {LOGGER.warn("Skipping Entity with id {}", tag.getString("id")); -+ try { -+ ListTag pos = tag.getList("Pos", 6); -+ EntityType.LOGGER.warn("Location: {} {},{},{}", level.getWorld().getName(), pos.getDouble(0), pos.getDouble(1), pos.getDouble(2)); -+ } catch (Throwable ignore) {} ++ () -> {LOGGER.warn("Skipping Entity with id {}", tag.getStringOr("id", "[invalid]")); ++ EntityType.LOGGER.warn("Location: {} {}", level.getWorld().getName(), tag.read("Pos", net.minecraft.world.phys.Vec3.CODEC).orElse(net.minecraft.world.phys.Vec3.ZERO)); + } + // Purpur end - log skipped entity's position ); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ExperienceOrb.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch similarity index 64% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ExperienceOrb.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch index a14e7f6a5..f77455e12 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ExperienceOrb.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch @@ -1,15 +1,15 @@ --- a/net/minecraft/world/entity/ExperienceOrb.java +++ b/net/minecraft/world/entity/ExperienceOrb.java -@@ -323,7 +_,7 @@ +@@ -328,7 +_,7 @@ public void playerTouch(Player entity) { if (entity instanceof ServerPlayer serverPlayer) { if (entity.takeXpDelay == 0 && new com.destroystokyo.paper.event.player.PlayerPickupExperienceEvent(serverPlayer.getBukkitEntity(), (org.bukkit.entity.ExperienceOrb) this.getBukkitEntity()).callEvent()) { // Paper - PlayerPickupExperienceEvent -- entity.takeXpDelay = CraftEventFactory.callPlayerXpCooldownEvent(entity, 2, PlayerExpCooldownChangeEvent.ChangeReason.PICKUP_ORB).getNewCooldown(); // CraftBukkit - entityhuman.takeXpDelay = 2; -+ entity.takeXpDelay = CraftEventFactory.callPlayerXpCooldownEvent(entity, this.level().purpurConfig.playerExpPickupDelay, PlayerExpCooldownChangeEvent.ChangeReason.PICKUP_ORB).getNewCooldown(); // CraftBukkit - entityhuman.takeXpDelay = 2; // Purpur - Configurable player pickup exp delay +- entity.takeXpDelay = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerXpCooldownEvent(entity, 2, org.bukkit.event.player.PlayerExpCooldownChangeEvent.ChangeReason.PICKUP_ORB).getNewCooldown(); // CraftBukkit - entityhuman.takeXpDelay = 2; ++ entity.takeXpDelay = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerXpCooldownEvent(entity, this.level().purpurConfig.playerExpPickupDelay, org.bukkit.event.player.PlayerExpCooldownChangeEvent.ChangeReason.PICKUP_ORB).getNewCooldown(); // CraftBukkit - entityhuman.takeXpDelay = 2; // Purpur - Configurable player pickup exp delay entity.take(this, 1); - int i = this.repairPlayerItems(serverPlayer, this.value); + int i = this.repairPlayerItems(serverPlayer, this.getValue()); if (i > 0) { -@@ -339,7 +_,7 @@ +@@ -344,7 +_,7 @@ } private int repairPlayerItems(ServerPlayer player, int value) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/GlowSquid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch similarity index 96% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/GlowSquid.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch index 61c07231e..932024a00 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/GlowSquid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java -@@ -25,6 +_,13 @@ +@@ -26,6 +_,13 @@ super(entityType, level); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch similarity index 78% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/LivingEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch index 791b9b8ef..6a8ccadb8 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/LivingEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch @@ -1,37 +1,32 @@ --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -459,6 +_,12 @@ - if (d < 0.0) { - double damagePerBlock = this.level().getWorldBorder().getDamagePerBlock(); - if (damagePerBlock > 0.0) { -+ // Purpur start - Add option to teleport to spawn if outside world border -+ if (this.level().purpurConfig.teleportIfOutsideBorder && this instanceof ServerPlayer serverPlayer) { -+ serverPlayer.teleport(io.papermc.paper.util.MCUtil.toLocation(this.level(), this.level().getSharedSpawnPos())); -+ return; -+ } -+ // Purpur end - Add option to teleport to spawn if outside world border - this.hurtServer(serverLevel1, this.damageSources().outOfBorder(), Math.max(1, Mth.floor(-d * damagePerBlock))); - } +@@ -430,6 +_,12 @@ + if (d < 0.0) { + double damagePerBlock = serverLevel1.getWorldBorder().getDamagePerBlock(); + if (damagePerBlock > 0.0) { ++ // Purpur start - Add option to teleport to spawn if outside world border ++ if (this.level().purpurConfig.teleportIfOutsideBorder && this instanceof ServerPlayer serverPlayer) { ++ serverPlayer.teleport(io.papermc.paper.util.MCUtil.toLocation(this.level(), this.level().getSharedSpawnPos())); ++ return; ++ } ++ // Purpur end - Add option to teleport to spawn if outside world border + this.hurtServer(serverLevel1, this.damageSources().outOfBorder(), Math.max(1, Mth.floor(-d * damagePerBlock))); } -@@ -472,7 +_,7 @@ + } +@@ -442,10 +_,10 @@ && (!flag || !((Player)this).getAbilities().invulnerable); if (flag1) { this.setAirSupply(this.decreaseAirSupply(this.getAirSupply())); - if (this.getAirSupply() == -20) { + if (this.getAirSupply() == -this.level().purpurConfig.drowningDamageInterval) { // Purpur - Drowning Settings this.setAirSupply(0); - Vec3 deltaMovement = this.getDeltaMovement(); - -@@ -492,7 +_,7 @@ - ); - } - -- this.hurt(this.damageSources().drown(), 2.0F); -+ this.hurt(this.damageSources().drown(), (float) this.level().purpurConfig.damageFromDrowning); // Purpur - Drowning Settings + serverLevel1.broadcastEntityEvent(this, (byte)67); +- this.hurtServer(serverLevel1, this.damageSources().drown(), 2.0F); ++ this.hurtServer(serverLevel1, this.damageSources().drown(), (float) this.level().purpurConfig.damageFromDrowning); // Purpur - Drowning Settings } } else if (this.getAirSupply() < this.getMaxAirSupply()) { this.setAirSupply(this.increaseAirSupply(this.getAirSupply())); -@@ -1009,14 +_,32 @@ +@@ -1014,14 +_,32 @@ if (lookingEntity != null) { ItemStack itemBySlot = this.getItemBySlot(EquipmentSlot.HEAD); EntityType type = lookingEntity.getType(); @@ -72,7 +67,7 @@ return d; } -@@ -1063,6 +_,7 @@ +@@ -1068,6 +_,7 @@ Iterator iterator = this.activeEffects.values().iterator(); while (iterator.hasNext()) { MobEffectInstance effect = iterator.next(); @@ -80,7 +75,7 @@ EntityPotionEffectEvent event = CraftEventFactory.callEntityPotionEffectChangeEvent(this, effect, null, cause, EntityPotionEffectEvent.Action.CLEARED); if (event.isCancelled()) { continue; -@@ -1372,6 +_,24 @@ +@@ -1385,6 +_,24 @@ this.stopSleeping(); } @@ -105,27 +100,26 @@ this.noActionTime = 0; if (amount < 0.0F) { amount = 0.0F; -@@ -1536,11 +_,11 @@ +@@ -1647,10 +_,10 @@ protected Player resolvePlayerResponsibleForDamage(DamageSource damageSource) { Entity entity = damageSource.getEntity(); if (entity instanceof Player player) { -- this.lastHurtByPlayerTime = 100; -+ this.lastHurtByPlayerTime = this.level().purpurConfig.mobLastHurtByPlayerTime; // Purpur - Config for mob last hurt by player time - this.lastHurtByPlayer = player; - return player; +- this.setLastHurtByPlayer(player, 100); ++ this.setLastHurtByPlayer(player, this.level().purpurConfig.mobLastHurtByPlayerTime); // Purpur - Config for mob last hurt by player time } else if (entity instanceof Wolf wolf && wolf.isTame()) { -- this.lastHurtByPlayerTime = 100; -+ this.lastHurtByPlayerTime = this.level().purpurConfig.mobLastHurtByPlayerTime; // Purpur - Config for mob last hurt by player time - if (wolf.getOwner() instanceof Player player1) { - this.lastHurtByPlayer = player1; + if (wolf.getOwnerReference() != null) { +- this.setLastHurtByPlayer(wolf.getOwnerReference().getUUID(), 100); ++ this.setLastHurtByPlayer(wolf.getOwnerReference().getUUID(), this.level().purpurConfig.mobLastHurtByPlayerTime); // Purpur - Config for mob last hurt by player time } else { -@@ -1594,6 +_,18 @@ + this.lastHurtByPlayer = null; + this.lastHurtByPlayerMemoryTime = 0; +@@ -1701,6 +_,18 @@ } } + // Purpur start - Totems work in inventory + if (level().purpurConfig.totemOfUndyingWorksInInventory && this instanceof ServerPlayer player && (itemStack == null || itemStack.getItem() != Items.TOTEM_OF_UNDYING) && player.getBukkitEntity().hasPermission("purpur.inventory_totem")) { -+ for (ItemStack item : player.getInventory().items) { ++ for (ItemStack item : player.getInventory().getNonEquipmentItems()) { + if (item.getItem() == Items.TOTEM_OF_UNDYING) { + itemInHand = item; + itemStack = item.copy(); @@ -138,15 +132,15 @@ final org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null; final EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemStack == null); -@@ -1790,6 +_,7 @@ - boolean flag = this.lastHurtByPlayerTime > 0; +@@ -1876,6 +_,7 @@ + boolean flag = this.lastHurtByPlayerMemoryTime > 0; this.dropEquipment(level); // CraftBukkit - from below if (this.shouldDropLoot() && level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { + if (!(damageSource.is(net.minecraft.world.damagesource.DamageTypes.CRAMMING) && level().purpurConfig.disableDropsOnCrammingDeath)) { // Purpur - Disable loot drops on death by cramming this.dropFromLootTable(level, damageSource, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1798,6 +_,7 @@ +@@ -1884,6 +_,7 @@ // Paper end this.dropCustomDeathLoot(level, damageSource, flag); this.clearEquipmentSlots = prev; // Paper @@ -154,7 +148,7 @@ } // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment -@@ -2996,6 +_,7 @@ +@@ -3058,6 +_,7 @@ float f = (float)(d * 10.0 - 3.0); if (f > 0.0F) { this.playSound(this.getFallDamageSound((int)f), 1.0F, 1.0F); @@ -162,7 +156,7 @@ this.hurt(this.damageSources().flyIntoWall(), f); } } -@@ -4423,6 +_,12 @@ +@@ -4452,6 +_,12 @@ ? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND) : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType()); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/Mob.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch similarity index 83% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/Mob.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch index 60238f3b2..453f49b1b 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/Mob.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -145,6 +_,7 @@ +@@ -136,6 +_,7 @@ private BlockPos restrictCenter = BlockPos.ZERO; private float restrictRadius = -1.0F; public boolean aware = true; // CraftBukkit @@ -8,7 +8,7 @@ protected Mob(EntityType entityType, Level level) { super(entityType, level); -@@ -294,6 +_,7 @@ +@@ -281,6 +_,7 @@ target = null; } } @@ -16,7 +16,7 @@ this.target = target; return true; // CraftBukkit end -@@ -337,7 +_,27 @@ +@@ -324,7 +_,27 @@ } profilerFiller.pop(); @@ -45,7 +45,7 @@ @Override protected void playHurtSound(DamageSource source) { -@@ -486,6 +_,7 @@ +@@ -420,6 +_,7 @@ compound.putBoolean("NoAI", this.isNoAi()); } compound.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit @@ -53,19 +53,15 @@ } @Override -@@ -568,6 +_,11 @@ - this.aware = compound.getBoolean("Bukkit.Aware"); - } - // CraftBukkit end -+ // Purpur start - Entity lifespan -+ if (compound.contains("Purpur.ticksSinceLastInteraction")) { -+ this.ticksSinceLastInteraction = compound.getInt("Purpur.ticksSinceLastInteraction"); -+ } -+ // Purpur end - Entity lifespan +@@ -443,6 +_,7 @@ + this.lootTableSeed = compound.getLongOr("DeathLootTableSeed", 0L); + this.setNoAi(compound.getBooleanOr("NoAI", false)); + this.aware = compound.getBooleanOr("Bukkit.Aware", true); // CraftBukkit ++ this.ticksSinceLastInteraction = compound.getIntOr("Purpur.ticksSinceLastInteraction", 0); // Purpur- Entity lifespan } @Override -@@ -1282,7 +_,7 @@ +@@ -1167,7 +_,7 @@ ); } @@ -74,7 +70,7 @@ return spawnGroupData; } -@@ -1621,6 +_,7 @@ +@@ -1499,6 +_,7 @@ this.playAttackSound(); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch new file mode 100644 index 000000000..6e83d6019 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java ++++ b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +@@ -85,7 +_,7 @@ + } + }; + Set, BlockPos>> set = poiManager.findAllClosestFirstWithType( +- acquirablePois, predicate1, mob.blockPosition(), 48, PoiManager.Occupancy.HAS_SPACE ++ acquirablePois, predicate1, mob.blockPosition(), level.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE // Purpur - Configurable villager search radius + ) + .limit(5L) + .filter(pair1 -> predicate.test(level, pair1.getSecond())) diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch new file mode 100644 index 000000000..c9bc9b7c9 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java ++++ b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +@@ -54,7 +_,7 @@ + } + }; + Set, BlockPos>> set = poiManager.findAllWithType( +- holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY ++ holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), level.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY // Purpur - Configurable villager search radius + ) + .collect(Collectors.toSet()); + Path path = AcquirePoi.findPathToPois(entity, set); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ambient/Bat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch similarity index 96% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ambient/Bat.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch index fc1ce3bb3..7c4eddca7 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/ambient/Bat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java -@@ -231,7 +_,7 @@ +@@ -232,7 +_,7 @@ } else { int maxLocalRawBrightness = level.getMaxLocalRawBrightness(pos); int i = 4; @@ -9,7 +9,7 @@ i = 7; } else if (randomSource.nextBoolean()) { return false; -@@ -243,6 +_,11 @@ +@@ -244,6 +_,11 @@ } } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Cow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch similarity index 90% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Cow.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch index 61b3e9983..3c0826a05 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Cow.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch @@ -1,6 +1,6 @@ ---- a/net/minecraft/world/entity/animal/Cow.java -+++ b/net/minecraft/world/entity/animal/Cow.java -@@ -43,7 +_,7 @@ +--- a/net/minecraft/world/entity/animal/AbstractCow.java ++++ b/net/minecraft/world/entity/animal/AbstractCow.java +@@ -39,7 +_,7 @@ this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(1, new PanicGoal(this, 2.0)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0)); @@ -9,7 +9,7 @@ this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); -@@ -99,6 +_,10 @@ +@@ -95,6 +_,10 @@ ItemStack itemStack = ItemUtils.createFilledResult(itemInHand, player, org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getItemStack())); // CraftBukkit player.setItemInHand(hand, itemStack); return InteractionResult.SUCCESS; @@ -20,7 +20,7 @@ } else { return super.mobInteract(player, hand); } -@@ -114,4 +_,67 @@ +@@ -104,4 +_,67 @@ public EntityDimensions getDefaultDimensions(Pose pose) { return this.isBaby() ? BABY_DIMENSIONS : super.getDefaultDimensions(pose); } @@ -50,7 +50,7 @@ + } + return InteractionResult.CONSUME; // require 5 mushrooms to transform (prevents mushroom duping) + } -+ MushroomCow mooshroom = EntityType.MOOSHROOM.create(level(), EntitySpawnReason.CONVERSION); ++ MushroomCow mooshroom = EntityType.MOOSHROOM.create(level(), net.minecraft.world.entity.EntitySpawnReason.CONVERSION); + if (mooshroom == null) { + return InteractionResult.PASS; + } @@ -59,7 +59,7 @@ + } else { + mooshroom.setVariant(MushroomCow.Variant.RED); + } -+ mooshroom.moveTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); ++ mooshroom.snapTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); + mooshroom.setHealth(this.getHealth()); + mooshroom.setAge(getAge()); + mooshroom.copyPosition(this); @@ -79,7 +79,7 @@ + stack.shrink(1); + } + for (int i = 0; i < 15; ++i) { -+ ((ServerLevel) level()).sendParticlesSource(((ServerLevel) level()).players(), null, net.minecraft.core.particles.ParticleTypes.HAPPY_VILLAGER, ++ ((net.minecraft.server.level.ServerLevel) level()).sendParticlesSource(((net.minecraft.server.level.ServerLevel) level()).players(), null, net.minecraft.core.particles.ParticleTypes.HAPPY_VILLAGER, + false, true, + getX() + random.nextFloat(), getY() + (random.nextFloat() * 2), getZ() + random.nextFloat(), 1, + random.nextGaussian() * 0.05D, random.nextGaussian() * 0.05D, random.nextGaussian() * 0.05D, 0); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Animal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch similarity index 90% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Animal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch index 56a99c436..0f2339b09 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Animal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch @@ -14,10 +14,10 @@ AgeableMob breedOffspring = this.getBreedOffspring(level, mate); if (breedOffspring != null) { - breedOffspring.setBaby(true); -- breedOffspring.moveTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F); +- breedOffspring.snapTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F); + //breedOffspring.setBaby(true); // Purpur - Add adjustable breeding cooldown to config - moved down -+ //breedOffspring.moveTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F); // Purpur - Add adjustable breeding cooldown to config - moved down - // CraftBukkit start - call EntityBreedEvent ++ //breedOffspring.snapTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F); // Purpur - Add adjustable breeding cooldown to config - moved down + // CraftBukkit start - Call EntityBreedEvent ServerPlayer breeder = Optional.ofNullable(this.getLoveCause()).or(() -> Optional.ofNullable(mate.getLoveCause())).orElse(null); + // Purpur start - Add adjustable breeding cooldown to config + if (breeder != null && level.purpurConfig.animalBreedingCooldownSeconds > 0) { @@ -27,7 +27,7 @@ + level.addBreedingCooldown(breeder.getUUID(), this.getClass()); + } + breedOffspring.setBaby(true); -+ breedOffspring.moveTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F); ++ breedOffspring.snapTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F); + // Purpur end - Add adjustable breeding cooldown to config int experience = this.getRandom().nextInt(7) + 1; org.bukkit.event.entity.EntityBreedEvent entityBreedEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(breedOffspring, this, mate, breeder, this.breedItem, experience); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Bee.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch similarity index 89% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Bee.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch index 5ee311366..0dbf3c5dc 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Bee.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -163,7 +_,7 @@ +@@ -167,7 +_,7 @@ // Paper end - Fix MC-167279 this.lookControl = new Bee.BeeLookControl(this); this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F); @@ -13,8 +13,8 @@ } public static boolean isNightOrRaining(Level level) { -- return level.dimensionType().hasSkyLight() && (level.isNight() || level.isRaining()); -+ return level.dimensionType().hasSkyLight() && (level.isNight() && !level.purpurConfig.beeCanWorkAtNight || level.isRaining() && !level.purpurConfig.beeCanWorkInRain); // Purpur - Bee can work when raining or at night +- return level.dimensionType().hasSkyLight() && (level.isDarkOutside() || level.isRaining()); ++ return level.dimensionType().hasSkyLight() && (level.isDarkOutside() && !level.purpurConfig.beeCanWorkAtNight || level.isRaining() && !level.purpurConfig.beeCanWorkInRain); // Purpur - Bee can work when raining or at night } public void setStayOutOfHiveCountdown(int stayOutOfHiveCountdown) { @@ -22,8 +22,8 @@ @Override protected void customServerAiStep(ServerLevel level) { boolean hasStung = this.hasStung(); -- if (this.isInWaterOrBubble()) { -+ if (this.level().purpurConfig.beeCanInstantlyStartDrowning && this.isInWaterOrBubble()) { // Purpur - bee can instantly start drowning in water option +- if (this.isInWater()) { ++ if (this.level().purpurConfig.beeCanInstantlyStartDrowning && this.isInWater()) { // Purpur - bee can instantly start drowning in water option this.underWaterTicks++; } else { this.underWaterTicks = 0; @@ -35,7 +35,7 @@ if (hasStung) { this.timeSinceSting++; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { -@@ -1136,6 +_,7 @@ +@@ -1135,6 +_,7 @@ Bee.this.savedFlowerPos = optional.get(); Bee.this.navigation .moveTo(Bee.this.savedFlowerPos.getX() + 0.5, Bee.this.savedFlowerPos.getY() + 0.5, Bee.this.savedFlowerPos.getZ() + 0.5, 1.2F); @@ -43,7 +43,7 @@ return true; } else { Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60); -@@ -1182,6 +_,7 @@ +@@ -1181,6 +_,7 @@ this.pollinating = false; Bee.this.navigation.stop(); Bee.this.remainingCooldownBeforeLocatingNewFlower = 200; @@ -51,7 +51,7 @@ } @Override -@@ -1228,6 +_,7 @@ +@@ -1227,6 +_,7 @@ this.setWantedPos(); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Cat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Cat.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch index 0a8781328..5bbb90ab9 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Cat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java -@@ -332,6 +_,14 @@ +@@ -353,6 +_,14 @@ return this.isTame() && otherAnimal instanceof Cat cat && cat.isTame() && super.canMate(otherAnimal); } @@ -15,7 +15,7 @@ @Nullable @Override public SpawnGroupData finalizeSpawn( -@@ -438,7 +_,7 @@ +@@ -451,7 +_,7 @@ } private void tryToTame(Player player) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Dolphin.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch similarity index 89% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Dolphin.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch index 7a3ebe2c4..f5d03cb8f 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Dolphin.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch @@ -1,14 +1,14 @@ --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java -@@ -71,6 +_,7 @@ - private static final int TOTAL_MOISTNESS_LEVEL = 2400; - public static final Predicate ALLOWED_ITEMS = itemEntity -> !itemEntity.hasPickUpDelay() && itemEntity.isAlive() && itemEntity.isInWater(); - public static final float BABY_SCALE = 0.65F; +@@ -73,6 +_,7 @@ + private static final boolean DEFAULT_GOT_FISH = false; + @Nullable + public BlockPos treasurePos; + private boolean isNaturallyAggressiveToPlayers; // Purpur - Dolphins naturally aggressive to players chance public Dolphin(EntityType entityType, Level level) { super(entityType, level); -@@ -87,6 +_,7 @@ +@@ -89,6 +_,7 @@ this.setAirSupply(this.getMaxAirSupply()); this.setXRot(0.0F); SpawnGroupData spawnGroupData1 = Objects.requireNonNullElseGet(spawnGroupData, () -> new AgeableMob.AgeableMobGroupData(0.1F)); @@ -16,7 +16,7 @@ return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData1); } -@@ -169,17 +_,19 @@ +@@ -155,17 +_,19 @@ protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); @@ -37,7 +37,7 @@ } public static AttributeSupplier.Builder createAttributes() { -@@ -412,6 +_,7 @@ +@@ -398,6 +_,7 @@ @Override public boolean canUse() { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Fox.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch similarity index 95% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Fox.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch index c0f401ee5..283e94dc0 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Fox.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -335,6 +_,11 @@ +@@ -345,6 +_,11 @@ } private void setTargetGoals() { @@ -12,15 +12,15 @@ if (this.getVariant() == Fox.Variant.RED) { this.targetSelector.addGoal(4, this.landTargetGoal); this.targetSelector.addGoal(4, this.turtleEggTargetGoal); -@@ -364,6 +_,7 @@ - @Override +@@ -372,6 +_,7 @@ + public void setVariant(Fox.Variant variant) { this.entityData.set(DATA_TYPE_ID, variant.getId()); + this.setTargetGoals(); // Purpur - Tulips change fox type - fix API bug not updating pathfinders on type change } - List getTrustedUUIDs() { -@@ -684,6 +_,29 @@ + @Nullable +@@ -705,6 +_,29 @@ return slot == EquipmentSlot.MAINHAND; } // Paper end diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/IronGolem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch similarity index 83% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/IronGolem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch index 176e8f9bc..bf5dd4962 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/IronGolem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java -@@ -56,13 +_,26 @@ +@@ -57,13 +_,26 @@ private int remainingPersistentAngerTime; @Nullable private UUID persistentAngerTarget; @@ -27,23 +27,23 @@ this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9, 32.0F)); this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6, false)); -@@ -140,6 +_,7 @@ +@@ -141,6 +_,7 @@ public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); compound.putBoolean("PlayerCreated", this.isPlayerCreated()); -+ if (getSummoner() != null) compound.putUUID("Purpur.Summoner", getSummoner()); // Purpur - Summoner API ++ compound.storeNullable("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC, getSummoner()); // Purpur - Summoner API this.addPersistentAngerSaveData(compound); } -@@ -147,6 +_,7 @@ +@@ -148,6 +_,7 @@ public void readAdditionalSaveData(CompoundTag compound) { super.readAdditionalSaveData(compound); - this.setPlayerCreated(compound.getBoolean("PlayerCreated")); -+ if (compound.contains("Purpur.Summoner")) setSummoner(compound.getUUID("Purpur.Summoner")); // Purpur - Summoner API + this.setPlayerCreated(compound.getBooleanOr("PlayerCreated", false)); ++ this.setSummoner(compound.read("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC).orElse(null)); // Purpur - Summoner API this.readPersistentAngerSaveData(this.level(), compound); } -@@ -266,6 +_,7 @@ +@@ -267,6 +_,7 @@ float f = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; this.playSound(SoundEvents.IRON_GOLEM_REPAIR, 1.0F, f); itemInHand.consume(1, player); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/MushroomCow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch similarity index 75% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/MushroomCow.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch index 1d6651865..48673480a 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/MushroomCow.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch @@ -1,15 +1,15 @@ --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -192,6 +_,13 @@ +@@ -198,6 +_,13 @@ level.playSound(null, this, SoundEvents.MOOSHROOM_SHEAR, soundSource, 1.0F, 1.0F); - this.convertTo(EntityType.COW, ConversionParams.single(this, false, false), mob -> { + this.convertTo(EntityType.COW, ConversionParams.single(this, false, false), cow -> { level.sendParticles(ParticleTypes.EXPLOSION, this.getX(), this.getY(0.5), this.getZ(), 1, 0.0, 0.0, 0.0, 0.0); + // Purpur start - Fix cow rotation when shearing mooshroom -+ mob.copyPosition(this); -+ mob.yBodyRot = this.yBodyRot; -+ mob.setYHeadRot(this.getYHeadRot()); -+ mob.yRotO = this.yRotO; -+ mob.xRotO = this.xRotO; ++ cow.copyPosition(this); ++ cow.yBodyRot = this.yBodyRot; ++ cow.setYHeadRot(this.getYHeadRot()); ++ cow.yRotO = this.yRotO; ++ cow.xRotO = this.xRotO; + // Purpur end - Fix cow rotation when shearing mooshroom // Paper start - custom shear drops; moved drop generation to separate method drops.forEach(drop -> { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Ocelot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch similarity index 96% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Ocelot.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch index 419638b78..c54cc0da1 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Ocelot.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java -@@ -232,7 +_,7 @@ +@@ -233,7 +_,7 @@ public boolean checkSpawnObstruction(LevelReader level) { if (level.isUnobstructed(this) && !level.containsAnyLiquid(this.getBoundingBox())) { BlockPos blockPos = this.blockPosition(); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Parrot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch similarity index 96% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Parrot.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch index 78e2b15e5..4425b62cb 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Parrot.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java -@@ -152,6 +_,7 @@ +@@ -157,6 +_,7 @@ protected void registerGoals() { this.goalSelector.addGoal(0, new TamableAnimal.TamableAnimalPanicGoal(1.25)); this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -8,7 +8,7 @@ this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0, 5.0F, 1.0F)); -@@ -257,7 +_,7 @@ +@@ -262,7 +_,7 @@ } if (!this.level().isClientSide) { @@ -17,7 +17,7 @@ this.tame(player); this.level().broadcastEntityEvent(this, (byte)7); } else { -@@ -265,6 +_,7 @@ +@@ -270,6 +_,7 @@ } } @@ -25,7 +25,7 @@ return InteractionResult.SUCCESS; } else if (!itemInHand.is(ItemTags.PARROT_POISONOUS_FOOD)) { if (!this.isFlying() && this.isTame() && this.isOwnedBy(player)) { -@@ -289,7 +_,7 @@ +@@ -294,7 +_,7 @@ @Override public boolean isFood(ItemStack stack) { @@ -34,7 +34,7 @@ } public static boolean checkParrotSpawnRules( -@@ -304,13 +_,13 @@ +@@ -309,13 +_,13 @@ @Override public boolean canMate(Animal otherAnimal) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Pig.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Pig.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch index 7ae89deb5..7375398f0 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Pig.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java -@@ -132,6 +_,19 @@ +@@ -141,6 +_,19 @@ @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { boolean isFood = this.isFood(player.getItemInHand(hand)); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/PolarBear.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/PolarBear.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Rabbit.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Rabbit.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch index ed0b1c6aa..930cde3c7 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Rabbit.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java -@@ -376,10 +_,23 @@ +@@ -403,10 +_,23 @@ } this.setVariant(randomRabbitVariant); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/SnowGolem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch similarity index 81% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/SnowGolem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch index b6401d764..b73653343 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/SnowGolem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java -@@ -44,15 +_,27 @@ - public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackMob { +@@ -45,15 +_,27 @@ private static final EntityDataAccessor DATA_PUMPKIN_ID = SynchedEntityData.defineId(SnowGolem.class, EntityDataSerializers.BYTE); private static final byte PUMPKIN_FLAG = 16; + private static final boolean DEFAULT_PUMPKIN = true; + @Nullable private java.util.UUID summoner; // Purpur - Summoner API public SnowGolem(EntityType entityType, Level level) { @@ -30,23 +30,22 @@ this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Mob.class, 10, true, false, (entity, level) -> entity instanceof Enemy)); -@@ -72,6 +_,7 @@ +@@ -73,12 +_,14 @@ public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); compound.putBoolean("Pumpkin", this.hasPumpkin()); -+ if (getSummoner() != null) compound.putUUID("Purpur.Summoner", getSummoner()); // Purpur - Summoner API ++ compound.storeNullable("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC, getSummoner()); // Purpur - Summoner API } @Override -@@ -80,6 +_,7 @@ - if (compound.contains("Pumpkin")) { - this.setPumpkin(compound.getBoolean("Pumpkin")); - } -+ if (compound.contains("Purpur.Summoner")) setSummoner(compound.getUUID("Purpur.Summoner")); // Purpur - Summoner API + public void readAdditionalSaveData(CompoundTag compound) { + super.readAdditionalSaveData(compound); + this.setPumpkin(compound.getBooleanOr("Pumpkin", true)); ++ this.setSummoner(compound.read("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC).orElse(null)); // Purpur - Summoner API } @Override -@@ -153,6 +_,14 @@ +@@ -152,6 +_,14 @@ } return InteractionResult.SUCCESS; diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Squid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Squid.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch index af92a24dd..83c0aed86 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Squid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch @@ -34,12 +34,12 @@ @@ -127,6 +_,7 @@ } - if (this.isInWaterOrBubble()) { + if (this.isInWater()) { + if (canFly()) setNoGravity(!wasTouchingWater); // Purpur - Flying squids! Oh my! 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; -@@ -310,7 +_,7 @@ +@@ -308,7 +_,7 @@ int noActionTime = this.squid.getNoActionTime(); if (noActionTime > 100) { this.squid.movementVector = Vec3.ZERO; diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/WaterAnimal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/WaterAnimal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch index b42850fc8..3552d2bfc 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/WaterAnimal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/animal/WaterAnimal.java +++ b/net/minecraft/world/entity/animal/WaterAnimal.java -@@ -74,8 +_,7 @@ +@@ -76,8 +_,7 @@ seaLevel = level.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(seaLevel); i = level.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(i); // Paper end - Make water animal spawn height configurable diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/goat/Goat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/goat/Goat.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch index 11559576e..4cd0aeca3 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/goat/Goat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -392,6 +_,7 @@ +@@ -395,6 +_,7 @@ // Paper start - Goat ram API public void ram(net.minecraft.world.entity.LivingEntity entity) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/horse/Llama.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch similarity index 76% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/horse/Llama.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch index c0e613a83..ccbc13a99 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/horse/Llama.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -72,6 +_,7 @@ +@@ -77,6 +_,7 @@ private Llama caravanHead; @Nullable public Llama caravanTail; // Paper @@ -8,23 +8,23 @@ public Llama(EntityType entityType, Level level) { super(entityType, level); -@@ -106,6 +_,7 @@ +@@ -111,6 +_,7 @@ super.addAdditionalSaveData(compound); - compound.putInt("Variant", this.getVariant().id); + compound.store("Variant", Llama.Variant.LEGACY_CODEC, this.getVariant()); compound.putInt("Strength", this.getStrength()); + compound.putBoolean("Purpur.ShouldJoinCaravan", shouldJoinCaravan); // Purpur - Llama API } @Override -@@ -113,6 +_,7 @@ - this.setStrength(compound.getInt("Strength")); +@@ -118,6 +_,7 @@ + this.setStrength(compound.getIntOr("Strength", 0)); super.readAdditionalSaveData(compound); - this.setVariant(Llama.Variant.byId(compound.getInt("Variant"))); -+ if (compound.contains("Purpur.ShouldJoinCaravan")) this.shouldJoinCaravan = compound.getBoolean("Purpur.ShouldJoinCaravan"); // Purpur - Llama API + this.setVariant(compound.read("Variant", Llama.Variant.LEGACY_CODEC).orElse(Llama.Variant.DEFAULT)); ++ this.shouldJoinCaravan = compound.getBooleanOr("Purpur.ShouldJoinCaravan", true); // Purpur - Llama API } @Override -@@ -386,6 +_,7 @@ +@@ -399,6 +_,7 @@ public void leaveCaravan() { if (this.caravanHead != null) { @@ -32,7 +32,7 @@ this.caravanHead.caravanTail = null; } -@@ -393,6 +_,7 @@ +@@ -406,6 +_,7 @@ } public void joinCaravan(Llama caravanHead) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Wolf.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch similarity index 85% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Wolf.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch index 224a6bae3..491dc4363 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/animal/Wolf.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch @@ -1,6 +1,6 @@ ---- a/net/minecraft/world/entity/animal/Wolf.java -+++ b/net/minecraft/world/entity/animal/Wolf.java -@@ -94,6 +_,37 @@ +--- a/net/minecraft/world/entity/animal/wolf/Wolf.java ++++ b/net/minecraft/world/entity/animal/wolf/Wolf.java +@@ -100,6 +_,37 @@ EntityType type = entity.getType(); return type == EntityType.SHEEP || type == EntityType.RABBIT || type == EntityType.FOX; }; @@ -38,7 +38,7 @@ 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; -@@ -115,12 +_,47 @@ +@@ -122,12 +_,47 @@ this.setPathfindingMalus(PathType.DANGER_POWDER_SNOW, -1.0F); } @@ -86,38 +86,38 @@ this.goalSelector.addGoal(4, new LeapAtTargetGoal(this, 0.4F)); this.goalSelector.addGoal(5, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(6, new FollowOwnerGoal(this, 1.0, 10.0F, 2.0F)); -@@ -133,7 +_,7 @@ +@@ -140,7 +_,7 @@ this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, new HurtByTargetGoal(this).setAlertOthers()); this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); - this.targetSelector.addGoal(5, new NonTameRandomTargetGoal<>(this, Animal.class, false, PREY_SELECTOR)); -+ // this.targetSelector.addGoal(5, new NonTameRandomTargetGoal<>(this, Animal.class, false, PREY_SELECTOR)); // Purpur - Configurable chance for wolves to spawn rabid - moved to updatePathfinders() ++ //this.targetSelector.addGoal(5, new NonTameRandomTargetGoal<>(this, Animal.class, false, PREY_SELECTOR)); // Purpur - Configurable chance for wolves to spawn rabid - moved to updatePathfinders() this.targetSelector.addGoal(6, new NonTameRandomTargetGoal<>(this, Turtle.class, false, Turtle.BABY_ON_LAND_SELECTOR)); this.targetSelector.addGoal(7, new NearestAttackableTargetGoal<>(this, AbstractSkeleton.class, false)); this.targetSelector.addGoal(8, new ResetUniversalAngerTargetGoal<>(this, true)); -@@ -182,6 +_,7 @@ +@@ -231,6 +_,7 @@ public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); - compound.putByte("CollarColor", (byte)this.getCollarColor().getId()); + compound.store("CollarColor", DyeColor.LEGACY_ID_CODEC, this.getCollarColor()); + compound.putBoolean("Purpur.IsRabid", this.isRabid); // Purpur - Configurable chance for wolves to spawn rabid - this.getVariant().unwrapKey().ifPresent(resourceKey -> compound.putString("variant", resourceKey.location().toString())); + VariantUtils.writeVariant(compound, this.getVariant()); this.addPersistentAngerSaveData(compound); - } -@@ -196,6 +_,10 @@ - if (compound.contains("CollarColor", 99)) { - this.setCollarColor(DyeColor.byId(compound.getInt("CollarColor"))); - } + this.getSoundVariant() +@@ -245,6 +_,10 @@ + super.readAdditionalSaveData(compound); + VariantUtils.readVariant(compound, this.registryAccess(), Registries.WOLF_VARIANT).ifPresent(this::setVariant); + this.setCollarColor(compound.read("CollarColor", DyeColor.LEGACY_ID_CODEC).orElse(DEFAULT_COLLAR_COLOR)); + // Purpur start - Configurable chance for wolves to spawn rabid -+ this.isRabid = compound.getBoolean("Purpur.IsRabid"); ++ this.isRabid = compound.getBooleanOr("Purpur.IsRabid", false); + this.updatePathfinders(false); + // Purpur end - Configurable chance for wolves to spawn rabid - this.readPersistentAngerSaveData(this.level(), compound); - } -@@ -215,6 +_,10 @@ + compound.read("sound_variant", ResourceKey.codec(Registries.WOLF_SOUND_VARIANT)) + .flatMap(resourceKey -> this.registryAccess().lookupOrThrow(Registries.WOLF_SOUND_VARIANT).get((ResourceKey)resourceKey)) +@@ -269,6 +_,10 @@ } - this.setVariant(holder); + this.setSoundVariant(WolfSoundVariants.pickRandomSoundVariant(this.registryAccess(), this.random)); + // Purpur start - Configurable chance for wolves to spawn rabid + this.isRabid = level.getLevel().purpurConfig.wolfNaturalRabid > 0.0D && random.nextDouble() <= level.getLevel().purpurConfig.wolfNaturalRabid; + this.updatePathfinders(false); @@ -125,7 +125,7 @@ return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData); } -@@ -263,6 +_,11 @@ +@@ -319,6 +_,11 @@ public void tick() { super.tick(); if (this.isAlive()) { @@ -137,7 +137,7 @@ this.interestedAngleO = this.interestedAngle; if (this.isInterested()) { this.interestedAngle = this.interestedAngle + (1.0F - this.interestedAngle) * 0.4F; -@@ -481,13 +_,27 @@ +@@ -532,13 +_,27 @@ itemInHand.consume(1, player); this.tryToTame(player); return InteractionResult.SUCCESS_SERVER; diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch similarity index 99% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch index 5deaa74ba..607381a02 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch @@ -34,7 +34,7 @@ } @Override -@@ -119,15 +_,17 @@ +@@ -114,15 +_,17 @@ } // CraftBukkit end if (!damageSource.is(DamageTypeTags.IS_EXPLOSION)) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch similarity index 85% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch index e07733ccf..6a075e024 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -974,6 +_,7 @@ +@@ -960,6 +_,7 @@ @Override protected boolean canRide(Entity entity) { @@ -8,8 +8,8 @@ return false; } -@@ -1009,7 +_,7 @@ - boolean flag = worldserver.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT); +@@ -995,7 +_,7 @@ + boolean flag = level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT); int i = 500; - if (this.dragonFight != null && !this.dragonFight.hasPreviouslyKilledDragon()) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch similarity index 88% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch index 30e1ffb25..a38519604 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -77,6 +_,7 @@ +@@ -78,6 +_,7 @@ private static final TargetingConditions.Selector LIVING_ENTITY_SELECTOR = (entity, level) -> !entity.getType().is(EntityTypeTags.WITHER_FRIENDS) && entity.attackable(); private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0).selector(LIVING_ENTITY_SELECTOR); @@ -8,7 +8,7 @@ public WitherBoss(EntityType entityType, Level level) { super(entityType, level); -@@ -85,6 +_,17 @@ +@@ -86,6 +_,17 @@ this.xpReward = 50; } @@ -26,23 +26,23 @@ @Override protected PathNavigation createNavigation(Level level) { FlyingPathNavigation flyingPathNavigation = new FlyingPathNavigation(this, level); -@@ -117,6 +_,7 @@ +@@ -118,6 +_,7 @@ public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); compound.putInt("Invul", this.getInvulnerableTicks()); -+ if (getSummoner() != null) compound.putUUID("Purpur.Summoner", getSummoner()); // Purpur - Summoner API ++ compound.storeNullable("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC, getSummoner()); // Purpur - Summoner API } @Override -@@ -126,6 +_,7 @@ +@@ -127,6 +_,7 @@ if (this.hasCustomName()) { this.bossEvent.setName(this.getDisplayName()); } -+ if (compound.contains("Purpur.Summoner")) setSummoner(compound.getUUID("Purpur.Summoner")); // Purpur - Summoner API ++ this.setSummoner(compound.read("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC).orElse(null)); // Purpur - Summoner API } @Override -@@ -269,7 +_,7 @@ +@@ -270,7 +_,7 @@ level.explode(this, this.getX(), this.getEyeY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); } // CraftBukkit end @@ -51,7 +51,7 @@ // CraftBukkit start - Use relative location for far away sounds // level.globalLevelEvent(1023, this.blockPosition(), 0); int viewDistance = level.getCraftServer().getViewDistance() * 16; -@@ -376,8 +_,10 @@ +@@ -377,8 +_,10 @@ } } @@ -64,7 +64,7 @@ } this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); -@@ -574,6 +_,7 @@ +@@ -575,6 +_,7 @@ @Override protected boolean canRide(Entity entity) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/decoration/ArmorStand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/decoration/ArmorStand.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch index 1ac4c29b0..4690f775c 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/decoration/ArmorStand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -93,10 +_,13 @@ +@@ -95,10 +_,13 @@ private boolean noTickPoseDirty = false; private boolean noTickEquipmentDirty = false; // Paper end - Allow ArmorStands not to tick @@ -14,7 +14,7 @@ } public ArmorStand(Level level, double x, double y, double z) { -@@ -620,6 +_,7 @@ +@@ -538,6 +_,7 @@ @Override public void tick() { @@ -22,7 +22,7 @@ // Paper start - Allow ArmorStands not to tick if (!this.canTick) { if (this.noTickPoseDirty) { -@@ -949,4 +_,18 @@ +@@ -867,4 +_,18 @@ } } // Paper end diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/item/ItemEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/item/ItemEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch index 024469799..5f326c938 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/item/ItemEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/item/ItemEntity.java +++ b/net/minecraft/world/entity/item/ItemEntity.java -@@ -52,6 +_,12 @@ +@@ -59,6 +_,12 @@ 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 @@ -13,7 +13,7 @@ public ItemEntity(EntityType entityType, Level level) { super(entityType, level); -@@ -337,7 +_,16 @@ +@@ -344,7 +_,16 @@ @Override public final boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) { @@ -31,7 +31,7 @@ return false; } else if (!level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && damageSource.getEntity() instanceof Mob) { return false; -@@ -539,6 +_,12 @@ +@@ -528,6 +_,12 @@ public void setItem(ItemStack stack) { this.getEntityData().set(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/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/item/PrimedTnt.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/item/PrimedTnt.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch index eb0ed35f3..052ef78b6 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/item/PrimedTnt.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/item/PrimedTnt.java +++ b/net/minecraft/world/entity/item/PrimedTnt.java -@@ -251,4 +_,32 @@ +@@ -253,4 +_,32 @@ return !this.level().paperConfig().fixes.preventTntFromMovingInWater && super.isPushedByFluid(); } // Paper end - Option to prevent TNT from moving in water diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch similarity index 95% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch index 37349cc6c..af806331a 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch @@ -10,7 +10,7 @@ - if (i1 == 10 && i == 31 && random.nextFloat() < 0.25F) { + if (net.minecraft.world.entity.ambient.Bat.isHalloweenSeason(level.getMinecraftWorld()) && this.random.nextFloat() < this.level().purpurConfig.chanceHeadHalloweenOnEntity) { // Purpur - Halloween options and optimizations this.setItemSlot(EquipmentSlot.HEAD, new ItemStack(random.nextFloat() < 0.1F ? Blocks.JACK_O_LANTERN : Blocks.CARVED_PUMPKIN)); - this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; + this.setDropChance(EquipmentSlot.HEAD, 0.0F); } @@ -217,7 +_,7 @@ if (event.getProjectile() == arrow.getBukkitEntity()) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Creeper.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch similarity index 93% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Creeper.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch index c3719371c..803176349 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Creeper.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch @@ -1,18 +1,19 @@ --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java -@@ -50,6 +_,7 @@ +@@ -54,6 +_,7 @@ public int explosionRadius = 3; private int droppedSkulls; - public Entity entityIgniter; // CraftBukkit + public @Nullable Entity entityIgniter; // CraftBukkit + private boolean exploding = false; // Purpur - Config to make Creepers explode on death public Creeper(EntityType entityType, Level level) { super(entityType, level); -@@ -161,6 +_,26 @@ - } +@@ -157,6 +_,27 @@ + return false; // CraftBukkit } + // Purpur start - Special mobs naturally spawn ++ @Override + public net.minecraft.world.entity.SpawnGroupData finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor world, net.minecraft.world.DifficultyInstance difficulty, net.minecraft.world.entity.EntitySpawnReason spawnReason, @Nullable net.minecraft.world.entity.SpawnGroupData entityData) { + double chance = world.getLevel().purpurConfig.creeperChargedChance; + if (chance > 0D && random.nextDouble() <= chance) { @@ -33,9 +34,9 @@ + // Purpur end - Config to make Creepers explode on death + @Override - protected SoundEvent getHurtSound(DamageSource damageSource) { + public SoundEvent getHurtSound(DamageSource damageSource) { return SoundEvents.CREEPER_HURT; -@@ -243,14 +_,16 @@ +@@ -239,14 +_,16 @@ } public void explodeCreeper() { @@ -54,7 +55,7 @@ this.spawnLingeringCloud(); this.triggerOnDeathMobEffects(serverLevel, Entity.RemovalReason.KILLED); this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.EXPLODE); // CraftBukkit - add Bukkit remove cause -@@ -261,6 +_,7 @@ +@@ -257,6 +_,7 @@ } // CraftBukkit end } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Drowned.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Drowned.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/EnderMan.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch similarity index 80% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/EnderMan.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch index bac97afe7..4ae69d3a7 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/EnderMan.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -102,7 +_,7 @@ +@@ -103,7 +_,7 @@ this.goalSelector.addGoal(11, new EnderMan.EndermanTakeBlockGoal(this)); this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); @@ -9,32 +9,32 @@ this.targetSelector.addGoal(4, new ResetUniversalAngerTargetGoal<>(this, false)); } -@@ -230,7 +_,7 @@ +@@ -220,7 +_,7 @@ boolean isBeingStaredBy(Player player) { // Paper start - EndermanAttackPlayerEvent -- final boolean shouldAttack = isBeingStaredBy0(player); -+ final boolean shouldAttack = !this.level().purpurConfig.endermanDisableStareAggro && isBeingStaredBy0(player); // Purpur - Config to ignore Dragon Head wearers and stare aggro +- final boolean shouldAttack = this.isBeingStaredBy0(player); ++ final boolean shouldAttack = !this.level().purpurConfig.endermanDisableStareAggro && this.isBeingStaredBy0(player); // Purpur - Config to ignore Dragon Head wearers and stare aggro final com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent event = new com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent((org.bukkit.entity.Enderman) getBukkitEntity(), (org.bukkit.entity.Player) player.getBukkitEntity()); event.setCancelled(!shouldAttack); return event.callEvent(); -@@ -385,6 +_,7 @@ +@@ -376,6 +_,7 @@ public boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) { if (this.isInvulnerableTo(level, damageSource)) { return false; + } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && damageSource.is(net.minecraft.world.damagesource.DamageTypes.IN_WALL)) { return false; // Purpur - no suffocation damage if short height - Short enderman height } else { - boolean flag = damageSource.getDirectEntity() instanceof ThrownPotion; - if (!damageSource.is(DamageTypeTags.IS_PROJECTILE) && !flag) { -@@ -397,6 +_,7 @@ + AbstractThrownPotion abstractThrownPotion1 = damageSource.getDirectEntity() instanceof AbstractThrownPotion abstractThrownPotion + ? abstractThrownPotion +@@ -390,6 +_,7 @@ } else { - boolean flag1 = flag && this.hurtWithCleanWater(level, damageSource, (ThrownPotion)damageSource.getDirectEntity(), amount); + boolean flag = abstractThrownPotion1 != null && this.hurtWithCleanWater(level, damageSource, abstractThrownPotion1, amount); -+ if (!flag1 && level.purpurConfig.endermanIgnoreProjectiles) return super.hurtServer(level, damageSource, amount); // Purpur - Config to disable Enderman teleport on projectile hit ++ if (!flag && level.purpurConfig.endermanIgnoreProjectiles) return super.hurtServer(level, damageSource, amount); // Purpur - Config to disable Enderman teleport on projectile hit if (this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.INDIRECT)) { // Paper - EndermanEscapeEvent for (int i = 0; i < 64; i++) { if (this.teleport()) { -@@ -440,7 +_,7 @@ +@@ -433,7 +_,7 @@ @Override public boolean requiresCustomPersistence() { @@ -43,7 +43,7 @@ } static class EndermanFreezeWhenLookedAt extends Goal { -@@ -484,6 +_,7 @@ +@@ -477,6 +_,7 @@ @Override public boolean canUse() { @@ -51,7 +51,7 @@ return this.enderman.getCarriedBlock() != null && getServerLevel(this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0; -@@ -633,6 +_,7 @@ +@@ -626,6 +_,7 @@ @Override public boolean canUse() { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Endermite.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch similarity index 81% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Endermite.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch index 9965430e8..60b09997d 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Endermite.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch @@ -1,9 +1,9 @@ --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java -@@ -28,12 +_,23 @@ - public class Endermite extends Monster { +@@ -29,12 +_,23 @@ private static final int MAX_LIFE = 2400; - public int life; + private static final int DEFAULT_LIFE = 0; + public int life = 0; + private boolean isPlayerSpawned; // Purpur - Add back player spawned endermite API public Endermite(EntityType entityType, Level level) { @@ -24,11 +24,11 @@ @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); -@@ -79,12 +_,14 @@ +@@ -80,12 +_,14 @@ public void readAdditionalSaveData(CompoundTag compound) { super.readAdditionalSaveData(compound); - this.life = compound.getInt("Lifetime"); -+ this.isPlayerSpawned = compound.getBoolean("PlayerSpawned"); // Purpur - Add back player spawned endermite API + this.life = compound.getIntOr("Lifetime", 0); ++ this.isPlayerSpawned = compound.getBooleanOr("PlayerSpawned", false); // Purpur - Add back player spawned endermite API } @Override diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Monster.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Monster.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Phantom.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Phantom.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch index acec89121..0374fac35 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Phantom.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -158,7 +_,11 @@ +@@ -159,7 +_,11 @@ ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData ) { this.anchorPoint = this.blockPosition().above(5); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Ravager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Ravager.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch index 6e2afb392..f593040b8 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Ravager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java -@@ -70,6 +_,7 @@ +@@ -73,6 +_,7 @@ protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -8,7 +8,7 @@ this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); -@@ -150,7 +_,7 @@ +@@ -153,7 +_,7 @@ )) { BlockState blockState = serverLevel.getBlockState(blockPos); Block block = blockState.getBlock(); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Shulker.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch similarity index 96% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Shulker.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch index eee30bbe5..5b9b6f4ed 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Shulker.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -50,6 +_,7 @@ +@@ -53,6 +_,7 @@ import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; @@ -8,7 +8,7 @@ import net.minecraft.world.level.gameevent.GameEvent; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -@@ -88,6 +_,21 @@ +@@ -93,6 +_,21 @@ this.lookControl = new Shulker.ShulkerLookControl(this); } @@ -30,7 +30,7 @@ @Override protected void registerGoals() { this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F, 0.02F, true)); -@@ -459,11 +_,21 @@ +@@ -460,11 +_,21 @@ private void hitByShulkerBullet() { Vec3 vec3 = this.position(); AABB boundingBox = this.getBoundingBox(); @@ -55,10 +55,10 @@ + // Purpur end - Shulker spawn from bullet options if (shulker != null) { shulker.setVariant(this.getVariant()); - shulker.moveTo(vec3); -@@ -573,7 +_,7 @@ + shulker.snapTo(vec3); +@@ -572,7 +_,7 @@ + } - @Override public Optional getVariant() { - return Optional.ofNullable(this.getColor()); + return Optional.ofNullable(this.level().purpurConfig.shulkerSpawnFromBulletRandomColor ? DyeColor.random(this.level().random) : this.getColor()); // Purpur - Shulker spawn from bullet options diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Skeleton.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch similarity index 99% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Skeleton.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch index bba419b18..aaa94033d 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Skeleton.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -135,4 +_,64 @@ +@@ -139,4 +_,64 @@ this.spawnAtLocation(level, Items.SKELETON_SKULL); } } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Strider.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Strider.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch index efb04f5ac..5ae8300da 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Strider.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java -@@ -414,6 +_,19 @@ +@@ -392,6 +_,19 @@ @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { boolean isFood = this.isFood(player.getItemInHand(hand)); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Vindicator.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Vindicator.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch index fe07bf809..26ace8b3e 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Vindicator.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -132,6 +_,11 @@ +@@ -131,6 +_,11 @@ RandomSource random = level.getRandom(); this.populateDefaultEquipmentSlots(random, difficulty); this.populateDefaultEquipmentEnchantments(level, random, difficulty); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Zombie.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch similarity index 95% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Zombie.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch index ba29551ef..ade69a8e9 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/Zombie.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -114,7 +_,19 @@ +@@ -118,7 +_,19 @@ this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0)); this.targetSelector.addGoal(1, new HurtByTargetGoal(this).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); @@ -21,7 +21,7 @@ this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } -@@ -550,10 +_,7 @@ +@@ -552,10 +_,7 @@ } if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { @@ -31,5 +31,5 @@ - if (i1 == 10 && i == 31 && random.nextFloat() < 0.25F) { + if (net.minecraft.world.entity.ambient.Bat.isHalloweenSeason(level.getMinecraftWorld()) && this.random.nextFloat() < this.level().purpurConfig.chanceHeadHalloweenOnEntity) { // Purpur - Halloween options and optimizations this.setItemSlot(EquipmentSlot.HEAD, new ItemStack(random.nextFloat() < 0.1F ? Blocks.JACK_O_LANTERN : Blocks.CARVED_PUMPKIN)); - this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; + this.setDropChance(EquipmentSlot.HEAD, 0.0F); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/ZombieVillager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/ZombieVillager.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch index e5517a82e..0fd354794 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/ZombieVillager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -156,10 +_,10 @@ +@@ -130,10 +_,10 @@ public InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); if (itemInHand.is(Items.GOLDEN_APPLE)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch new file mode 100644 index 000000000..7dbc3be98 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch @@ -0,0 +1,28 @@ +--- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java ++++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java +@@ -112,6 +_,12 @@ + this.maybeAlertOthers(); + } + ++ // Purpur start - Toggle for Zombified Piglin death always counting as player kill when angry ++ if (this.isAngry() && this.level().purpurConfig.zombifiedPiglinCountAsPlayerKillWhenAngry) { ++ this.lastHurtByPlayerMemoryTime = this.tickCount; ++ } ++ // Purpur end - Toggle for Zombified Piglin death always counting as player kill when angry ++ + super.customServerAiStep(level); + } + +@@ -158,6 +_,12 @@ + this.playFirstAngerSoundIn = FIRST_ANGER_SOUND_DELAY.sample(this.random); + this.ticksUntilNextAlert = ALERT_INTERVAL.sample(this.random); + } ++ ++ // Purpur start - Toggle for Zombified Piglin death always counting as player kill when angry ++ if (livingEntity instanceof Player player && this.level().purpurConfig.zombifiedPiglinCountAsPlayerKillWhenAngry) { ++ this.setLastHurtByPlayer(player, this.tickCount); ++ } ++ // Purpur end - Toggle for Zombified Piglin death always counting as player kill when angry + + return super.setTarget(livingEntity, reason); // CraftBukkit + } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch similarity index 66% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch index c7ccb700d..1c6e7e4c3 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch @@ -1,19 +1,14 @@ --- a/net/minecraft/world/entity/monster/piglin/PiglinAi.java +++ b/net/minecraft/world/entity/monster/piglin/PiglinAi.java -@@ -4,6 +_,7 @@ - import com.google.common.collect.ImmutableSet; - import com.mojang.datafixers.util.Pair; - import java.util.Collections; -+import java.util.Iterator; - import java.util.List; - import java.util.Optional; - import net.minecraft.server.level.ServerLevel; -@@ -666,13 +_,20 @@ +@@ -661,13 +_,23 @@ public static boolean isWearingSafeArmor(LivingEntity entity) { - for (ItemStack itemStack : entity.getArmorAndBodyArmorSlots()) { -- if (itemStack.is(ItemTags.PIGLIN_SAFE_ARMOR)) { -+ if (itemStack.is(ItemTags.PIGLIN_SAFE_ARMOR) || (entity.level().purpurConfig.piglinIgnoresArmorWithGoldTrim && isWearingGoldTrim(itemStack.getItem()))) { // Purpur - piglins ignore gold-trimmed armor + for (EquipmentSlot equipmentSlot : EquipmentSlotGroup.ARMOR) { +- if (entity.getItemBySlot(equipmentSlot).is(ItemTags.PIGLIN_SAFE_ARMOR)) { ++ // Purpur start - piglins ignore gold-trimmed armor ++ net.minecraft.world.item.ItemStack itemStack = entity.getItemBySlot(equipmentSlot); ++ if (itemStack.is(ItemTags.PIGLIN_SAFE_ARMOR) || (entity.level().purpurConfig.piglinIgnoresArmorWithGoldTrim && isWearingGoldTrim(itemStack.getItem()))) { ++ // Purpur end - piglins ignore gold-trimmed armor return true; } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch new file mode 100644 index 000000000..9df36fcd7 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch @@ -0,0 +1,41 @@ +--- a/net/minecraft/world/entity/npc/CatSpawner.java ++++ b/net/minecraft/world/entity/npc/CatSpawner.java +@@ -25,7 +_,7 @@ + if (spawnFriendlies && level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) { + this.nextTick--; + if (this.nextTick <= 0) { +- this.nextTick = 1200; ++ this.nextTick = level.purpurConfig.catSpawnDelay; // Purpur - Cat spawning options + Player randomPlayer = level.getRandomPlayer(); + if (randomPlayer != null) { + RandomSource randomSource = level.random; +@@ -48,9 +_,12 @@ + } + + private void spawnInVillage(ServerLevel level, BlockPos pos) { +- int i = 48; +- if (level.getPoiManager().getCountInRange(holder -> holder.is(PoiTypes.HOME), pos, 48, PoiManager.Occupancy.IS_OCCUPIED) > 4L) { +- List entitiesOfClass = level.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(48.0, 8.0, 48.0)); ++ // Purpur start - Cat spawning options ++ int range = level.purpurConfig.catSpawnVillageScanRange; ++ if (range <= 0) return; ++ if (level.getPoiManager().getCountInRange(holder -> holder.is(PoiTypes.HOME), pos, range, PoiManager.Occupancy.IS_OCCUPIED) > 4L) { ++ List entitiesOfClass = level.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(range, 8.0, range)); ++ // Purpur end - Cat spawning options + if (entitiesOfClass.size() < 5) { + this.spawnCat(pos, level, false); + } +@@ -58,8 +_,11 @@ + } + + private void spawnInHut(ServerLevel level, BlockPos pos) { +- int i = 16; +- List entitiesOfClass = level.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(16.0, 8.0, 16.0)); ++ // Purpur start - Cat spawning options ++ int range = level.purpurConfig.catSpawnSwampHutScanRange; ++ if (range <= 0) return; ++ List entitiesOfClass = level.getEntitiesOfClass(Cat.class, new AABB(pos).inflate(range, 8.0, range)); ++ // Purpur end - Cat spawning options + if (entitiesOfClass.isEmpty()) { + this.spawnCat(pos, level, true); + } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/Villager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch similarity index 95% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/Villager.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch index d475ebf09..71cb36d56 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/Villager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch @@ -1,16 +1,16 @@ --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -179,6 +_,8 @@ +@@ -178,6 +_,8 @@ MemoryModuleType.MEETING_POINT, - (villager, holder) -> holder.is(PoiTypes.MEETING) + (villager, poiType) -> poiType.is(PoiTypes.MEETING) ); + private boolean isLobotomized = false; public boolean isLobotomized() { return this.isLobotomized; } // Purpur - Lobotomize stuck villagers + private int notLobotomizedCount = 0; // Purpur - Lobotomize stuck villagers public Villager(EntityType entityType, Level level) { this(entityType, level, VillagerType.PLAINS); -@@ -193,6 +_,57 @@ - this.setVillagerData(this.getVillagerData().setType(villagerType).setProfession(VillagerProfession.NONE)); +@@ -196,6 +_,57 @@ + this.setVillagerData(this.getVillagerData().withType(villagerType).withProfession(level.registryAccess(), VillagerProfession.NONE)); } + // Purpur start - Allow leashing villagers @@ -67,7 +67,7 @@ @Override public Brain getBrain() { return (Brain)super.getBrain(); -@@ -289,11 +_,24 @@ +@@ -292,11 +_,24 @@ // Paper start - EAR 2 this.customServerAiStep(level, false); } @@ -94,7 +94,7 @@ profilerFiller.pop(); if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; -@@ -365,6 +_,7 @@ +@@ -368,6 +_,7 @@ return InteractionResult.CONSUME; } @@ -102,7 +102,7 @@ this.startTrading(player); } -@@ -503,7 +_,7 @@ +@@ -504,7 +_,7 @@ private void updateDemand() { for (MerchantOffer merchantOffer : this.getOffers()) { @@ -111,7 +111,7 @@ } } -@@ -707,7 +_,7 @@ +@@ -697,7 +_,7 @@ @Override public boolean canBreed() { @@ -120,7 +120,7 @@ } private boolean hungry() { -@@ -928,6 +_,7 @@ +@@ -919,6 +_,7 @@ } public void spawnGolemIfNeeded(ServerLevel serverLevel, long gameTime, int minVillagerAmount) { @@ -128,7 +128,7 @@ if (this.wantsToSpawnGolem(gameTime)) { AABB aabb = this.getBoundingBox().inflate(10.0, 10.0, 10.0); List entitiesOfClass = serverLevel.getEntitiesOfClass(Villager.class, aabb); -@@ -1001,6 +_,12 @@ +@@ -992,6 +_,12 @@ @Override public void startSleeping(BlockPos pos) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/WanderingTrader.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch similarity index 82% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/WanderingTrader.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch index e1ca1ac52..29f09b163 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/WanderingTrader.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -69,6 +_,13 @@ +@@ -59,6 +_,13 @@ super(entityType, level); } @@ -14,16 +14,16 @@ @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -@@ -89,7 +_,7 @@ +@@ -79,7 +_,7 @@ this, new ItemStack(Items.MILK_BUCKET), SoundEvents.WANDERING_TRADER_REAPPEARED, -- wanderingTrader -> this.canDrinkMilk && this.level().isDay() && wanderingTrader.isInvisible() // Paper - Add more WanderingTrader API -+ wanderingTrader -> level().purpurConfig.milkClearsBeneficialEffects && this.canDrinkMilk && this.level().isDay() && wanderingTrader.isInvisible() // Paper - Add more WanderingTrader API // // Purpur - Milk Keeps Beneficial Effects +- wanderingTrader -> this.canDrinkMilk && this.level().isBrightOutside() && wanderingTrader.isInvisible() // Paper - Add more WanderingTrader API ++ wanderingTrader -> level().purpurConfig.milkClearsBeneficialEffects && this.canDrinkMilk && this.level().isBrightOutside() && wanderingTrader.isInvisible() // Paper - Add more WanderingTrader API // // Purpur - Milk Keeps Beneficial Effects ) ); this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); -@@ -133,8 +_,10 @@ +@@ -123,8 +_,10 @@ return InteractionResult.CONSUME; } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch index f1ac7fc15..efaa61512 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/npc/WanderingTraderSpawner.java +++ b/net/minecraft/world/entity/npc/WanderingTraderSpawner.java -@@ -147,7 +_,17 @@ +@@ -137,7 +_,17 @@ int i1 = pos.getX() + this.random.nextInt(maxDistance * 2) - maxDistance; int i2 = pos.getZ() + this.random.nextInt(maxDistance * 2) - maxDistance; int height = level.getHeight(Heightmap.Types.WORLD_SURFACE, i1, i2); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/player/Player.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch similarity index 94% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/player/Player.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch index d2d014c50..fc57c7949 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/player/Player.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch @@ -1,7 +1,7 @@ --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java -@@ -200,11 +_,20 @@ - private int currentImpulseContextResetGraceTime; +@@ -210,11 +_,20 @@ + private int currentImpulseContextResetGraceTime = 0; 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 burpDelay = 0; // Purpur - Burp delay @@ -21,7 +21,7 @@ @Override public org.bukkit.craftbukkit.entity.CraftHumanEntity getBukkitEntity() { return (org.bukkit.craftbukkit.entity.CraftHumanEntity) super.getBukkitEntity(); -@@ -262,6 +_,12 @@ +@@ -277,6 +_,12 @@ @Override public void tick() { @@ -34,7 +34,7 @@ this.noPhysics = this.isSpectator(); if (this.isSpectator() || this.isPassenger()) { this.setOnGround(false); -@@ -340,6 +_,17 @@ +@@ -355,6 +_,17 @@ this.turtleHelmetTick(); } @@ -52,7 +52,7 @@ this.cooldowns.tick(); this.updatePlayerPose(); if (this.currentImpulseContextResetGraceTime > 0) { -@@ -610,7 +_,7 @@ +@@ -620,7 +_,7 @@ List list = Lists.newArrayList(); for (Entity entity : entities) { @@ -61,7 +61,7 @@ list.add(entity); } else if (!entity.isRemoved()) { this.touch(entity); -@@ -1269,7 +_,7 @@ +@@ -1214,7 +_,7 @@ flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - Toggleable player crits if (flag2) { damageSource = damageSource.critical(); // Paper - critical damage API @@ -70,7 +70,7 @@ } float f2 = f + f1; -@@ -1884,7 +_,23 @@ +@@ -1811,7 +_,23 @@ @Override protected int getBaseExperienceReward(ServerLevel level) { @@ -95,9 +95,9 @@ } @Override -@@ -1967,6 +_,13 @@ - public boolean canUseSlot(EquipmentSlot slot) { - return slot != EquipmentSlot.BODY; +@@ -1849,6 +_,13 @@ + public boolean addItem(ItemStack stack) { + return this.inventory.add(stack); } + + // Purpur start - Player ridable in water option diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/AbstractArrow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch similarity index 86% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/AbstractArrow.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch index 1a88cefdc..48ac13449 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/AbstractArrow.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch @@ -1,14 +1,14 @@ --- a/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -74,6 +_,7 @@ - public ItemStack pickupItemStack = this.getDefaultPickupItem(); // Paper - private -> public +@@ -79,6 +_,7 @@ + public ItemStack pickupItemStack = this.getDefaultPickupItem(); @Nullable - public ItemStack firedFromWeapon = null; // Paper - private -> public + public ItemStack firedFromWeapon = null; + public net.minecraft.world.item.enchantment.ItemEnchantments actualEnchantments = net.minecraft.world.item.enchantment.ItemEnchantments.EMPTY; // Purpur - Add an option to fix MC-3304 projectile looting protected AbstractArrow(EntityType entityType, Level level) { super(entityType, level); -@@ -347,7 +_,7 @@ +@@ -352,7 +_,7 @@ this.setInGround(false); Vec3 deltaMovement = this.getDeltaMovement(); this.setDeltaMovement(deltaMovement.multiply(this.random.nextFloat() * 0.2F, this.random.nextFloat() * 0.2F, this.random.nextFloat() * 0.2F)); @@ -16,8 +16,8 @@ + if (this.level().purpurConfig.arrowMovementResetsDespawnCounter) this.life = 0; // Purpur - Arrows should not reset despawn counter } - public boolean isInGround() { // Paper - protected -> public -@@ -559,6 +_,12 @@ + public boolean isInGround() { +@@ -575,6 +_,12 @@ public ItemStack getWeaponItem() { return this.firedFromWeapon; } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/Snowball.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/Snowball.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch similarity index 94% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch index b2937f297..8efc70f2a 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -@@ -133,9 +_,10 @@ +@@ -129,9 +_,10 @@ return; } // CraftBukkit end @@ -9,10 +9,10 @@ Endermite endermite = EntityType.ENDERMITE.create(serverLevel, EntitySpawnReason.TRIGGERED); if (endermite != null) { + endermite.setPlayerSpawned(true); // Purpur - Add back player spawned endermite API - endermite.moveTo(owner.getX(), owner.getY(), owner.getZ(), owner.getYRot(), owner.getXRot()); + endermite.snapTo(owner.getX(), owner.getY(), owner.getZ(), owner.getYRot(), owner.getXRot()); serverLevel.addFreshEntity(endermite, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.ENDER_PEARL); } -@@ -155,7 +_,7 @@ +@@ -151,7 +_,7 @@ if (serverPlayer1 != null) { serverPlayer1.resetFallDistance(); serverPlayer1.resetCurrentImpulseContext(); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/ThrownTrident.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/ThrownTrident.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch index 982cc0205..b959fcd53 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/ThrownTrident.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/projectile/ThrownTrident.java +++ b/net/minecraft/world/entity/projectile/ThrownTrident.java -@@ -64,7 +_,7 @@ +@@ -65,7 +_,7 @@ Entity owner = this.getOwner(); int i = this.entityData.get(ID_LOYALTY); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/WitherSkull.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch similarity index 81% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/WitherSkull.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch index deea12ae5..87908eb1e 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/projectile/WitherSkull.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch @@ -1,15 +1,15 @@ --- a/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/net/minecraft/world/entity/projectile/WitherSkull.java -@@ -92,7 +_,7 @@ +@@ -93,7 +_,7 @@ super.onHit(result); if (!this.level().isClientSide) { // CraftBukkit start - org.bukkit.event.entity.ExplosionPrimeEvent event = new org.bukkit.event.entity.ExplosionPrimeEvent(this.getBukkitEntity(), 1.0F, false); + org.bukkit.event.entity.ExplosionPrimeEvent event = new org.bukkit.event.entity.ExplosionPrimeEvent(this.getBukkitEntity(), this.level().purpurConfig.witherExplosionRadius, false); // Purpur - Config for wither explosion radius - this.level().getCraftServer().getPluginManager().callEvent(event); - - if (!event.isCancelled()) { -@@ -102,6 +_,13 @@ + if (event.callEvent()) { + this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); + } +@@ -101,6 +_,13 @@ this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.HIT); // CraftBukkit - add Bukkit remove cause } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch new file mode 100644 index 000000000..c0e2ddf74 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch @@ -0,0 +1,42 @@ +--- a/net/minecraft/world/entity/raid/Raids.java ++++ b/net/minecraft/world/entity/raid/Raids.java +@@ -29,6 +_,7 @@ + + public class Raids extends SavedData { + private static final String RAID_FILE_ID = "raids"; ++ public final java.util.Map playerCooldowns = com.google.common.collect.Maps.newHashMap(); // Purpur - Raid cooldown setting + public static final Codec CODEC = RecordCodecBuilder.create( + instance -> instance.group( + Raids.RaidWithId.CODEC +@@ -81,6 +_,17 @@ + + public void tick(ServerLevel level) { + this.tick++; ++ // Purpur start - Raid cooldown setting ++ if (level.purpurConfig.raidCooldownSeconds != 0 && this.tick % 20 == 0) { ++ com.google.common.collect.ImmutableMap.copyOf(playerCooldowns).forEach((uuid, i) -> { ++ if (i < 1) { ++ playerCooldowns.remove(uuid); ++ } else { ++ playerCooldowns.put(uuid, i - 1); ++ } ++ }); ++ } ++ // Purpur end - Raid cooldown setting + Iterator iterator = this.raidMap.values().iterator(); + + while (iterator.hasNext()) { +@@ -148,11 +_,13 @@ + // } + + 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 (serverLevel.purpurConfig.raidCooldownSeconds != 0 && playerCooldowns.containsKey(player.getUUID())) return null; // Purpur - Raid cooldown setting + // CraftBukkit start + if (!org.bukkit.craftbukkit.event.CraftEventFactory.callRaidTriggerEvent(serverLevel, raid, player)) { + player.removeEffect(net.minecraft.world.effect.MobEffects.RAID_OMEN); + return null; + } ++ if (serverLevel.purpurConfig.raidCooldownSeconds != 0) playerCooldowns.put(player.getUUID(), serverLevel.purpurConfig.raidCooldownSeconds); // Purpur - Raid cooldown setting + + if (!raid.isStarted() && !this.raidMap.containsValue(raid)) { + this.raidMap.put(this.getUniqueId(), raid); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch similarity index 96% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch index 430b15eb4..5b64f6835 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/vehicle/AbstractBoat.java +++ b/net/minecraft/world/entity/vehicle/AbstractBoat.java -@@ -483,6 +_,7 @@ +@@ -433,6 +_,7 @@ float groundFriction = this.getGroundFriction(); if (groundFriction > 0.0F) { this.landFriction = groundFriction; diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch index c8ae0ce13..c8d066068 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java +++ b/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java -@@ -279,8 +_,8 @@ +@@ -243,8 +_,8 @@ Vec3 deltaMovement1 = this.getDeltaMovement(); double d13 = deltaMovement1.horizontalDistance(); if (d13 > 0.01) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/food/FoodData.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/food/FoodData.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch index bca1c3085..f8e3d23f5 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/food/FoodData.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/food/FoodData.java +++ b/net/minecraft/world/food/FoodData.java -@@ -36,6 +_,7 @@ +@@ -38,6 +_,7 @@ int oldFoodLevel = this.foodLevel; org.bukkit.event.entity.FoodLevelChangeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(serverPlayer, foodProperties.nutrition() + oldFoodLevel, stack); if (!event.isCancelled()) { @@ -8,7 +8,7 @@ this.add(event.getFoodLevel() - oldFoodLevel, foodProperties.saturation()); } serverPlayer.getBukkitEntity().sendHealthUpdate(); -@@ -84,7 +_,7 @@ +@@ -86,7 +_,7 @@ this.tickTimer++; if (this.tickTimer >= this.starvationRate) { // CraftBukkit - add regen rate manipulation if (player.getHealth() > 10.0F || difficulty == Difficulty.HARD || player.getHealth() > 1.0F && difficulty == Difficulty.NORMAL) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/food/FoodProperties.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/food/FoodProperties.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/AbstractContainerMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/AbstractContainerMenu.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/AnvilMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/AnvilMenu.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch index f97d7fb8e..910986692 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/AnvilMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch @@ -38,7 +38,7 @@ + ItemStack itemstack = this.activeQuickItem != null ? this.activeQuickItem : stack; + if (org.purpurmc.purpur.event.inventory.AnvilTakeResultEvent.getHandlerList().getRegisteredListeners().length > 0) new org.purpurmc.purpur.event.inventory.AnvilTakeResultEvent(player.getBukkitEntity(), getBukkitView(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack)).callEvent(); + // Purpur end - Anvil API - if (!player.getAbilities().instabuild) { + if (!player.hasInfiniteMaterials()) { + if (this.bypassCost) ((ServerPlayer) player).lastSentExp = -1; else // Purpur - Anvil API player.giveExperienceLevels(-this.cost.get()); } @@ -64,7 +64,7 @@ ItemStack itemStack = item.copy(); ItemStack item1 = this.inputSlots.getItem(1); ItemEnchantments.Mutable mutable = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(itemStack)); -@@ -191,23 +_,34 @@ +@@ -190,23 +_,34 @@ int intValue = entry.getIntValue(); intValue = level == intValue ? intValue + 1 : Math.max(intValue, level); Enchantment enchantment = holder.value(); @@ -73,7 +73,7 @@ + boolean canEnchant = this.canDoUnsafeEnchants || org.purpurmc.purpur.PurpurConfig.allowInapplicableEnchants || enchantment.canEnchant(item); // whether the enchantment can be applied on specific item type + boolean canEnchant1 = true; // whether two incompatible enchantments can be applied on a single item + // Purpur end - Config to allow unsafe enchants - if (this.player.getAbilities().instabuild || item.is(Items.ENCHANTED_BOOK)) { + if (this.player.hasInfiniteMaterials() || item.is(Items.ENCHANTED_BOOK)) { canEnchant = true; } @@ -103,7 +103,7 @@ intValue = enchantment.getMaxLevel(); } -@@ -236,6 +_,54 @@ +@@ -235,6 +_,54 @@ if (!this.itemName.equals(item.getHoverName().getString())) { i1 = 1; i += i1; @@ -158,7 +158,7 @@ itemStack.set(DataComponents.CUSTOM_NAME, Component.literal(this.itemName)); } } else if (item.has(DataComponents.CUSTOM_NAME)) { -@@ -260,6 +_,12 @@ +@@ -259,6 +_,12 @@ this.onlyRenaming = true; } @@ -168,10 +168,10 @@ + } + // Purpur end - Anvil API + - if (this.cost.get() >= this.maximumRepairCost && !this.player.getAbilities().instabuild) { // CraftBukkit + if (this.cost.get() >= this.maximumRepairCost && !this.player.hasInfiniteMaterials()) { // CraftBukkit itemStack = ItemStack.EMPTY; } -@@ -280,6 +_,13 @@ +@@ -279,6 +_,13 @@ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), itemStack); // CraftBukkit this.broadcastChanges(); @@ -185,7 +185,7 @@ } 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 -@@ -288,7 +_,7 @@ +@@ -287,7 +_,7 @@ } public static int calculateIncreasedRepairCost(int oldRepairCost) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/ArmorSlot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/ArmorSlot.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch index c7b2ace18..2b2579163 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/ArmorSlot.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/inventory/ArmorSlot.java +++ b/net/minecraft/world/inventory/ArmorSlot.java -@@ -42,7 +_,7 @@ +@@ -47,7 +_,7 @@ @Override public boolean mayPickup(Player player) { ItemStack item = this.getItem(); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/EnchantmentMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch similarity index 99% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/EnchantmentMenu.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch index 8f9902689..b6a6515d1 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/EnchantmentMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch @@ -40,7 +40,7 @@ this.addStandardInventorySlots(playerInventory, 8, 84); this.addDataSlot(DataSlot.shared(this.costs, 0)); this.addDataSlot(DataSlot.shared(this.costs, 1)); -@@ -294,7 +_,7 @@ +@@ -299,7 +_,7 @@ @Override public void removed(Player player) { super.removed(player); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/GrindstoneMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/GrindstoneMenu.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/ItemCombinerMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/inventory/ItemCombinerMenu.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/AxeItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch similarity index 95% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/AxeItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch index c50f80b33..c87b129e2 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/AxeItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch @@ -1,7 +1,7 @@ --- a/net/minecraft/world/item/AxeItem.java +++ b/net/minecraft/world/item/AxeItem.java @@ -62,13 +_,15 @@ - if (playerHasShieldUseIntent(context)) { + if (playerHasBlockingItemUseIntent(context)) { return InteractionResult.PASS; } else { - Optional optional = this.evaluateNewBlockState(level, clickedPos, player, level.getBlockState(clickedPos)); @@ -36,8 +36,8 @@ if (player != null) { itemInHand.hurtAndBreak(1, player, LivingEntity.getSlotForHand(context.getHand())); } -@@ -92,22 +_,24 @@ - return context.getHand().equals(InteractionHand.MAIN_HAND) && player.getOffhandItem().is(Items.SHIELD) && !player.isSecondaryUseActive(); +@@ -94,22 +_,24 @@ + && !player.isSecondaryUseActive(); } - private Optional evaluateNewBlockState(Level level, BlockPos pos, @Nullable Player player, BlockState state) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/BlockItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/BlockItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch index 855b75b34..76068462e 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/BlockItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/item/BlockItem.java +++ b/net/minecraft/world/item/BlockItem.java -@@ -152,7 +_,16 @@ +@@ -145,7 +_,16 @@ } protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, @Nullable Player player, ItemStack stack, BlockState state) { @@ -18,7 +18,7 @@ } @Nullable -@@ -217,6 +_,7 @@ +@@ -212,6 +_,7 @@ } if (!type.onlyOpCanSetNbt() || player != null && (player.canUseGameMasterBlocks() || (player.getAbilities().instabuild && player.getBukkitEntity().hasPermission("minecraft.nbt.place")))) { // Spigot - add permission @@ -26,7 +26,7 @@ return customData.loadInto(blockEntity, level.registryAccess()); } -@@ -264,6 +_,7 @@ +@@ -253,6 +_,7 @@ public void onDestroyed(ItemEntity itemEntity) { ItemContainerContents itemContainerContents = itemEntity.getItem().set(DataComponents.CONTAINER, ItemContainerContents.EMPTY); if (itemContainerContents != null) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/BowItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/BowItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/BucketItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch similarity index 85% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/BucketItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch index a784ee1c9..a0e1bb7ac 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/BucketItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch @@ -3,7 +3,7 @@ @@ -147,7 +_,7 @@ // CraftBukkit end if (!flag) { - return result != null && this.emptyContents(player, level, result.getBlockPos().relative(result.getDirection()), null, enumdirection, clicked, itemstack, enumhand); // CraftBukkit + return hitResult != null && this.emptyContents(entity, level, hitResult.getBlockPos().relative(hitResult.getDirection()), null, direction, clicked, itemstack, hand); // CraftBukkit - } else if (level.dimensionType().ultraWarm() && this.content.is(FluidTags.WATER)) { + } else if ((level.dimensionType().ultraWarm() || (level.isTheEnd() && !org.purpurmc.purpur.PurpurConfig.allowWaterPlacementInTheEnd)) && this.content.is(FluidTags.WATER)) { // Purpur - Add allow water in end world option int x = pos.getX(); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/CrossbowItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/CrossbowItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch index bcb821757..c2e3f0e41 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/CrossbowItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/item/CrossbowItem.java +++ b/net/minecraft/world/item/CrossbowItem.java -@@ -70,7 +_,7 @@ +@@ -66,7 +_,7 @@ ItemStack itemInHand = player.getItemInHand(hand); ChargedProjectiles chargedProjectiles = itemInHand.get(DataComponents.CHARGED_PROJECTILES); if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/DyeColor.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch similarity index 96% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/DyeColor.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch index f18d71793..e53cc098b 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/DyeColor.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/item/DyeColor.java +++ b/net/minecraft/world/item/DyeColor.java -@@ -123,4 +_,10 @@ +@@ -126,4 +_,10 @@ private static CraftingInput makeCraftColorInput(DyeColor first, DyeColor second) { return CraftingInput.of(2, 1, List.of(new ItemStack(DyeItem.byColor(first)), new ItemStack(DyeItem.byColor(second)))); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch new file mode 100644 index 000000000..7bd1d11bf --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/item/EggItem.java ++++ b/net/minecraft/world/item/EggItem.java +@@ -24,7 +_,7 @@ + public InteractionResult use(Level level, Player player, InteractionHand hand) { + ItemStack itemInHand = player.getItemInHand(hand); + // Paper start +- final Projectile.Delayed thrownEgg = Projectile.spawnProjectileFromRotationDelayed(ThrownEgg::new, (ServerLevel) level, itemInHand, player, 0.0F, EggItem.PROJECTILE_SHOOT_POWER, 1.0F); ++ final Projectile.Delayed thrownEgg = Projectile.spawnProjectileFromRotationDelayed(ThrownEgg::new, (ServerLevel) level, itemInHand, player, 0.0F, EggItem.PROJECTILE_SHOOT_POWER, (float) level.purpurConfig.eggProjectileOffset); // Purpur - Projectile offset config + com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemInHand), (org.bukkit.entity.Projectile) thrownEgg.projectile().getBukkitEntity()); + if (event.callEvent() && thrownEgg.attemptSpawn()) { + if (event.shouldConsume()) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/EndCrystalItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch similarity index 92% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/EndCrystalItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch index d46e5ccc9..baee5e0ab 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/EndCrystalItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch @@ -8,4 +8,4 @@ + if (!level.purpurConfig.endCrystalPlaceAnywhere && !blockState.is(Blocks.OBSIDIAN) && !blockState.is(Blocks.BEDROCK)) { // Purpur - place end crystal on any block return InteractionResult.FAIL; } else { - BlockPos blockPos = clickedPos.above(); final BlockPos aboveBlockPosition = blockPos; // Paper - OBFHELPER + BlockPos blockPos = clickedPos.above(); final BlockPos aboveBlockPos = blockPos; // Paper - OBFHELPER diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/EnderpearlItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/EnderpearlItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/HoeItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch similarity index 99% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/HoeItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch index 4e6e9ca20..cebe3180e 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/HoeItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/item/HoeItem.java +++ b/net/minecraft/world/item/HoeItem.java -@@ -46,15 +_,25 @@ +@@ -45,15 +_,25 @@ public InteractionResult useOn(UseOnContext context) { Level level = context.getLevel(); BlockPos clickedPos = context.getClickedPos(); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ItemStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch similarity index 76% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ItemStack.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch index d8595672c..c40077a55 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ItemStack.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch @@ -1,22 +1,22 @@ --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java -@@ -461,6 +_,7 @@ - serverLevel.isBlockPlaceCancelled = true; // Paper - prevent calling cleanup logic when undoing a block place upon a cancelled BlockPlaceEvent +@@ -458,6 +_,7 @@ + // revert back all captured blocks for (org.bukkit.block.BlockState blockstate : blocks) { - blockstate.update(true, false); + ((org.bukkit.craftbukkit.block.CraftBlockState) blockstate).revertPlace(); + ((org.bukkit.craftbukkit.block.CraftBlock) blockstate.getBlock()).getNMS().getBlock().forgetPlacer(); // Purpur - Store placer on Block when placed } - serverLevel.isBlockPlaceCancelled = false; // Paper - prevent calling cleanup logic when undoing a block place upon a cancelled BlockPlaceEvent - serverLevel.preventPoiUpdated = false; -@@ -486,6 +_,7 @@ + + SignItem.openSign = null; // SPIGOT-6758 - Reset on early return +@@ -481,6 +_,7 @@ if (!(block.getBlock() instanceof net.minecraft.world.level.block.BaseEntityBlock)) { // Containers get placed automatically block.onPlace(serverLevel, newPos, oldBlock, true, context); } + block.getBlock().forgetPlacer(); // Purpur - Store placer on Block when placed - serverLevel.notifyAndUpdatePhysics(newPos, null, oldBlock, block, serverLevel.getBlockState(newPos), updateFlag, net.minecraft.world.level.block.Block.UPDATE_LIMIT); // send null chunk as chunk.k() returns false by this point + serverLevel.notifyAndUpdatePhysics(newPos, null, oldBlock, block, serverLevel.getBlockState(newPos), updateFlags, net.minecraft.world.level.block.Block.UPDATE_LIMIT); // send null chunk as chunk.k() returns false by this point } -@@ -627,6 +_,26 @@ +@@ -618,6 +_,26 @@ return this.isDamageableItem() && this.getDamageValue() > 0; } @@ -41,9 +41,9 @@ + // Purpur end - Add option to mend the most damaged equipment first + public int getDamageValue() { - return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, Integer.valueOf(0)), 0, this.getMaxDamage()); + return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage()); } -@@ -1251,6 +_,12 @@ +@@ -1274,6 +_,12 @@ public boolean isEnchanted() { return !this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).isEmpty(); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/Items.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/Items.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch index 618da92d7..a5dd1c128 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/Items.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/item/Items.java +++ b/net/minecraft/world/item/Items.java -@@ -367,7 +_,7 @@ +@@ -382,7 +_,7 @@ 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); @@ -9,7 +9,7 @@ public static final Item CREAKING_HEART = registerBlock(Blocks.CREAKING_HEART); public static final Item CHEST = registerBlock(Blocks.CHEST, properties -> properties.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE); -@@ -2010,7 +_,7 @@ +@@ -2034,7 +_,7 @@ "sweet_berries", createBlockItemWithCustomItemName(Blocks.SWEET_BERRY_BUSH), new Item.Properties().food(Foods.SWEET_BERRIES) ); public static final Item GLOW_BERRIES = registerItem( diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/MapItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch similarity index 96% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/MapItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch index c7332498c..e4abe0ae9 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/MapItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/item/MapItem.java +++ b/net/minecraft/world/item/MapItem.java -@@ -196,6 +_,7 @@ +@@ -194,6 +_,7 @@ public static void renderBiomePreviewMap(ServerLevel serverLevel, ItemStack stack) { MapItemSavedData savedData = getSavedData(stack, serverLevel); if (savedData != null) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/NameTagItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/NameTagItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ProjectileWeaponItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ProjectileWeaponItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ShovelItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ShovelItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch index 2a462f3a6..c583f3853 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ShovelItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/item/ShovelItem.java +++ b/net/minecraft/world/item/ShovelItem.java -@@ -47,9 +_,12 @@ +@@ -46,9 +_,12 @@ BlockState blockState1 = FLATTENABLES.get(blockState.getBlock()); BlockState blockState2 = null; Runnable afterAction = null; // Paper diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/SnowballItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/SnowballItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/SpawnEggItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/SpawnEggItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ThrowablePotionItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch similarity index 58% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ThrowablePotionItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch index e2154c3b8..5cf5ead6e 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/ThrowablePotionItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/item/ThrowablePotionItem.java +++ b/net/minecraft/world/item/ThrowablePotionItem.java -@@ -23,7 +_,7 @@ +@@ -24,7 +_,7 @@ ItemStack itemInHand = player.getItemInHand(hand); if (level instanceof ServerLevel serverLevel) { // Paper start - PlayerLaunchProjectileEvent -- final Projectile.Delayed thrownPotion = Projectile.spawnProjectileFromRotationDelayed(ThrownPotion::new, serverLevel, itemInHand, player, -20.0F, PROJECTILE_SHOOT_POWER, 1.0F); -+ final Projectile.Delayed thrownPotion = Projectile.spawnProjectileFromRotationDelayed(ThrownPotion::new, serverLevel, itemInHand, player, -20.0F, PROJECTILE_SHOOT_POWER, (float) serverLevel.purpurConfig.throwablePotionProjectileOffset); // Purpur - Projectile offset config +- final Projectile.Delayed thrownPotion = Projectile.spawnProjectileFromRotationDelayed(this::createPotion, serverLevel, itemInHand, player, -20.0F, PROJECTILE_SHOOT_POWER, 1.0F); ++ final Projectile.Delayed thrownPotion = Projectile.spawnProjectileFromRotationDelayed(this::createPotion, serverLevel, itemInHand, player, -20.0F, PROJECTILE_SHOOT_POWER, (float) serverLevel.purpurConfig.throwablePotionProjectileOffset); // Purpur - Projectile offset config com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemInHand), (org.bukkit.entity.Projectile) thrownPotion.projectile().getBukkitEntity()); if (event.callEvent() && thrownPotion.attemptSpawn()) { if (event.shouldConsume()) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/TridentItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch similarity index 66% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/TridentItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch index 3f37caa58..93a0a726e 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/TridentItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch @@ -1,21 +1,21 @@ --- a/net/minecraft/world/item/TridentItem.java +++ b/net/minecraft/world/item/TridentItem.java -@@ -90,7 +_,7 @@ - // stack.hurtWithoutBreaking(1, player); // CraftBukkit - moved down +@@ -83,7 +_,7 @@ if (tridentSpinAttackStrength == 0.0F) { - Projectile.Delayed tridentDelayed = Projectile.spawnProjectileFromRotationDelayed( // Paper - PlayerLaunchProjectileEvent -- ThrownTrident::new, serverLevel, stack, player, 0.0F, 2.5F, 1.0F -+ ThrownTrident::new, serverLevel, stack, player, 0.0F, 2.5F, (float) serverLevel.purpurConfig.tridentProjectileOffset // Purpur - Projectile offset config + ItemStack itemStack = stack.copyWithCount(1); // Paper + Projectile.Delayed tridentDelayed = Projectile.spawnProjectileFromRotationDelayed( // Paper - PlayerLaunchProjectileEvent( +- ThrownTrident::new, serverLevel, itemStack, player, 0.0F, 2.5F, 1.0F ++ ThrownTrident::new, serverLevel, itemStack, player, 0.0F, 2.5F, (float) serverLevel.purpurConfig.tridentProjectileOffset // Purpur - Projectile offset config ); // Paper start - PlayerLaunchProjectileEvent com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) tridentDelayed.projectile().getBukkitEntity()); -@@ -101,6 +_,9 @@ +@@ -94,6 +_,9 @@ return false; } ThrownTrident thrownTrident = tridentDelayed.projectile(); // Paper - PlayerLaunchProjectileEvent + + thrownTrident.setActualEnchantments(stack.getEnchantments()); // Purpur - Add an option to fix MC-3304 projectile looting + - if (event.shouldConsume()) stack.hurtWithoutBreaking(1, player); // Paper - PlayerLaunchProjectileEvent - thrownTrident.pickupItemStack = stack.copy(); // SPIGOT-4511 update since damage call moved - // CraftBukkit end + if (event.shouldConsume()) { + stack.consume(1, player); + stack.hurtWithoutBreaking(1, player); // Paper - PlayerLaunchProjectileEvent diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/crafting/Ingredient.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch similarity index 72% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/crafting/Ingredient.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch index 188d2cfb2..b42a8f0ea 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/crafting/Ingredient.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch @@ -3,14 +3,14 @@ @@ -36,6 +_,7 @@ // CraftBukkit start @javax.annotation.Nullable - private java.util.Set itemStacks; // Paper - Improve exact choice recipe ingredients + private java.util.List itemStacks; + public Predicate predicate; // Purpur - Add predicate to recipe's ExactChoice ingredient public boolean isExact() { return this.itemStacks != null; -@@ -87,6 +_,11 @@ - if (this.isExact()) { - return this.itemStacks.contains(stack); // Paper - Improve exact choice recipe ingredients (hashing FTW!) +@@ -89,6 +_,11 @@ + + return false; } + // Purpur start - Add predicate to recipe's ExactChoice ingredient + if (predicate != null) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch similarity index 81% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch index acab23bbb..9671562b1 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch @@ -2,14 +2,14 @@ +++ b/net/minecraft/world/item/enchantment/ItemEnchantments.java @@ -32,7 +_,7 @@ private static final java.util.Comparator> ENCHANTMENT_ORDER = java.util.Comparator.comparing(Holder::getRegisteredName); - public static final ItemEnchantments EMPTY = new ItemEnchantments(new it.unimi.dsi.fastutil.objects.Object2IntAVLTreeMap<>(ENCHANTMENT_ORDER), true); - // Paper end + public static final ItemEnchantments EMPTY = new ItemEnchantments(new it.unimi.dsi.fastutil.objects.Object2IntAVLTreeMap<>(ENCHANTMENT_ORDER)); + // Paper end - sort enchantments - private static final Codec LEVEL_CODEC = Codec.intRange(1, 255); + private static final Codec LEVEL_CODEC = Codec.intRange(1, (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels ? 255 : 32767)); // Purpur - Add toggle for enchant level clamping - // Paper start - sort enchantments - private static final Codec>> LEVELS_CODEC = Codec.unboundedMap(Enchantment.CODEC, LEVEL_CODEC) - .xmap(m -> { -@@ -65,7 +_,7 @@ + public static final Codec CODEC = Codec.unboundedMap(Enchantment.CODEC, LEVEL_CODEC) + .xmap( + map -> new net.minecraft.world.item.enchantment.ItemEnchantments(net.minecraft.Util.make(new it.unimi.dsi.fastutil.objects.Object2IntAVLTreeMap<>(ENCHANTMENT_ORDER), m -> m.putAll(map))), // Paper - sort enchantments +@@ -50,7 +_,7 @@ for (Entry> entry : enchantments.object2IntEntrySet()) { int intValue = entry.getIntValue(); @@ -18,7 +18,7 @@ throw new IllegalArgumentException("Enchantment " + entry.getKey() + " has invalid level " + intValue); } } -@@ -160,13 +_,13 @@ +@@ -133,13 +_,13 @@ if (level <= 0) { this.enchantments.removeInt(enchantment); } else { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/item/trading/MerchantOffer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/item/trading/MerchantOffer.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/BaseSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch similarity index 96% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/BaseSpawner.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch index 99446bb5a..ad89287e0 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/BaseSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/BaseSpawner.java +++ b/net/minecraft/world/level/BaseSpawner.java -@@ -52,6 +_,7 @@ +@@ -54,6 +_,7 @@ } public boolean isNearPlayer(Level level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/EntityGetter.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/EntityGetter.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch index 73e6f74b1..e1a0fd757 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/EntityGetter.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/EntityGetter.java +++ b/net/minecraft/world/level/EntityGetter.java -@@ -185,7 +_,7 @@ +@@ -144,7 +_,7 @@ default boolean hasNearbyAlivePlayer(double x, double y, double z, double distance) { for (Player player : this.players()) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/Level.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch similarity index 88% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/Level.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch index cfd4c384e..8e696920d 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/Level.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch @@ -1,15 +1,13 @@ --- a/net/minecraft/world/level/Level.java +++ b/net/minecraft/world/level/Level.java -@@ -170,6 +_,7 @@ +@@ -158,11 +_,55 @@ + } // Paper end - add paper world config - public final io.papermc.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray + public final org.purpurmc.purpur.PurpurWorldConfig purpurConfig; // Purpur - Purpur config files - public static BlockPos lastPhysicsProblem; // Spigot - private org.spigotmc.TickLimiter entityLimiter; - private org.spigotmc.TickLimiter tileLimiter; -@@ -177,6 +_,49 @@ - public final Map explosionDensityCache = new HashMap<>(); // Paper - Optimize explosions + public static @Nullable BlockPos lastPhysicsProblem; // Spigot + private int tileTickPosition; + public final Map explosionDensityCache = new java.util.HashMap<>(); // Paper - Optimize explosions public java.util.ArrayDeque redstoneUpdateInfos; // Paper - Faster redstone torch rapid clock removal; Move from Map in BlockRedstoneTorch to here + // Purpur start - Add adjustable breeding cooldown to config @@ -58,8 +56,8 @@ public CraftWorld getWorld() { return this.world; } -@@ -853,6 +_,8 @@ - // Paper end - getblock optimisations - cache world height/sections +@@ -205,6 +_,8 @@ + ) { this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).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) levelData).getLevelName(), env); // Purpur - Purpur config files @@ -67,7 +65,7 @@ this.generator = gen; this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); -@@ -2130,4 +_,14 @@ +@@ -1409,4 +_,14 @@ return this.id; } } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/NaturalSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/NaturalSpawner.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch index 958b8eb2a..67708c82c 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/NaturalSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/NaturalSpawner.java +++ b/net/minecraft/world/level/NaturalSpawner.java -@@ -267,7 +_,7 @@ +@@ -206,7 +_,7 @@ mutableBlockPos.set(x, y, z); double d = x + 0.5; double d1 = z + 0.5; diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/ServerExplosion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch similarity index 89% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/ServerExplosion.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch index 6cda2a29e..21310800e 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/ServerExplosion.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/ServerExplosion.java +++ b/net/minecraft/world/level/ServerExplosion.java -@@ -319,7 +_,7 @@ +@@ -73,7 +_,7 @@ ) { this.level = level; this.source = source; @@ -9,7 +9,7 @@ this.center = center; this.fire = fire; this.blockInteraction = blockInteraction; -@@ -649,10 +_,27 @@ +@@ -356,10 +_,27 @@ public void explode() { // CraftBukkit start @@ -35,6 +35,6 @@ + } + } + // Purpur end - Add PreExplodeEvents - // Paper start - collision optimisations - this.blockCache = new it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap<>(); - this.chunkPosCache = new long[CHUNK_CACHE_WIDTH * CHUNK_CACHE_WIDTH]; + this.level.gameEvent(this.source, GameEvent.EXPLODE, this.center); + List list = this.calculateExplodedPositions(); + this.hurtEntities(); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/AnvilBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch similarity index 99% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/AnvilBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch index 7522ef907..a21b8a6a3 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/AnvilBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/AnvilBlock.java +++ b/net/minecraft/world/level/block/AnvilBlock.java -@@ -59,6 +_,53 @@ +@@ -54,6 +_,53 @@ return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getClockWise()); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/AzaleaBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/AzaleaBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BedBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch similarity index 94% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BedBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch index fdd4594ec..e0980cdaf 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BedBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/BedBlock.java +++ b/net/minecraft/world/level/block/BedBlock.java -@@ -100,7 +_,7 @@ +@@ -98,7 +_,7 @@ } Vec3 center = pos.getCenter(); @@ -9,7 +9,7 @@ return InteractionResult.SUCCESS_SERVER; } else if (state.getValue(OCCUPIED)) { if (!BedBlock.canSetSpawn(level)) return this.explodeBed(state, level, pos); // Paper - check explode first -@@ -148,7 +_,7 @@ +@@ -146,7 +_,7 @@ } Vec3 center = pos.getCenter(); @@ -18,11 +18,11 @@ return InteractionResult.SUCCESS_SERVER; } // CraftBukkit end -@@ -169,7 +_,7 @@ +@@ -167,7 +_,7 @@ @Override - public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, float fallDistance) { -- super.fallOn(level, state, pos, entity, fallDistance * 0.5F); + public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { +- super.fallOn(level, state, pos, entity, fallDistance * 0.5); + super.fallOn(level, state, pos, entity, fallDistance); // Purpur - Configurable block fall damage modifiers } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BigDripleafBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch similarity index 96% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BigDripleafBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch index 45532dcb8..20fb7e9e1 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BigDripleafBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/BigDripleafBlock.java +++ b/net/minecraft/world/level/block/BigDripleafBlock.java -@@ -261,7 +_,7 @@ +@@ -254,7 +_,7 @@ playTiltSound(level, pos, sound); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/Block.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch similarity index 86% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/Block.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch index 7b348e9e6..aee7753ae 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/Block.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/Block.java +++ b/net/minecraft/world/level/block/Block.java -@@ -90,6 +_,10 @@ +@@ -99,6 +_,10 @@ public static final int UPDATE_LIMIT = 512; protected final StateDefinition stateDefinition; private BlockState defaultBlockState; @@ -11,7 +11,7 @@ // Paper start - Protect Bedrock and End Portal/Frames from being destroyed public final boolean isDestroyable() { return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits || -@@ -299,7 +_,7 @@ +@@ -345,7 +_,7 @@ 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()) { @@ -20,22 +20,22 @@ } state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, false); // Paper - Properly handle xp dropping block.popExperience(serverLevel, pos, event.getExpToDrop()); // Paper - Properly handle xp dropping -@@ -317,7 +_,7 @@ +@@ -363,7 +_,7 @@ public static void dropResources(BlockState state, LevelAccessor level, BlockPos pos, @Nullable BlockEntity blockEntity) { if (level instanceof ServerLevel) { -- getDrops(state, (ServerLevel)level, pos, blockEntity).forEach(itemStack -> popResource((ServerLevel)level, pos, itemStack)); -+ getDrops(state, (ServerLevel)level, pos, blockEntity).forEach(itemStack -> popResource((ServerLevel)level, pos, applyLoreFromTile(itemStack, blockEntity))); // Purpur - Persistent BlockEntity Lore and DisplayName +- getDrops(state, (ServerLevel)level, pos, blockEntity).forEach(stack -> popResource((ServerLevel)level, pos, stack)); ++ getDrops(state, (ServerLevel)level, pos, blockEntity).forEach(stack -> popResource((ServerLevel)level, pos, applyLoreFromTile(stack, blockEntity))); // Purpur - Persistent BlockEntity Lore and DisplayName state.spawnAfterBreak((ServerLevel)level, pos, ItemStack.EMPTY, true); } } -@@ -329,11 +_,30 @@ +@@ -375,11 +_,30 @@ public static void dropResources(BlockState state, Level level, BlockPos pos, @Nullable BlockEntity blockEntity, @Nullable Entity entity, ItemStack tool, boolean dropExperience) { // Paper end - Properly handle xp dropping if (level instanceof ServerLevel) { -- getDrops(state, (ServerLevel)level, pos, blockEntity, entity, tool).forEach(itemStack -> popResource(level, pos, itemStack)); -+ getDrops(state, (ServerLevel)level, pos, blockEntity, entity, tool).forEach(itemStack -> popResource(level, pos, applyLoreFromTile(itemStack, blockEntity))); // Purpur - Persistent BlockEntity Lore and DisplayName - state.spawnAfterBreak((ServerLevel) level, pos, tool, dropExperience); // Paper - Properly handle xp dropping +- getDrops(state, (ServerLevel)level, pos, blockEntity, entity, tool).forEach(stack -> popResource(level, pos, stack)); ++ getDrops(state, (ServerLevel)level, pos, blockEntity, entity, tool).forEach(stack -> popResource(level, pos, applyLoreFromTile(stack, blockEntity))); // Purpur - Persistent BlockEntity Lore and DisplayName + state.spawnAfterBreak((ServerLevel)level, pos, tool, dropExperience); // Paper - Properly handle xp dropping } } @@ -61,7 +61,7 @@ public static void popResource(Level level, BlockPos pos, ItemStack stack) { double d = EntityType.ITEM.getHeight() / 2.0; double d1 = pos.getX() + 0.5 + Mth.nextDouble(level.random, -0.25, 0.25); -@@ -412,7 +_,15 @@ +@@ -460,7 +_,15 @@ } public void setPlacedBy(Level level, BlockPos pos, BlockState state, @Nullable LivingEntity placer, ItemStack stack) { @@ -78,10 +78,10 @@ public boolean isPossibleToRespawnInThis(BlockState state) { return !state.isSolid() && !state.liquid(); -@@ -423,7 +_,7 @@ +@@ -471,7 +_,7 @@ } - public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, float fallDistance) { + public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { - entity.causeFallDamage(fallDistance, 1.0F, entity.damageSources().fall()); + entity.causeFallDamage(fallDistance * fallDistanceMultiplier, fallDamageMultiplier, entity.damageSources().fall()); // Purpur - Configurable block fall damage modifiers } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/Blocks.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch similarity index 94% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/Blocks.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch index be0a86f42..56ad25eb5 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/Blocks.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/Blocks.java +++ b/net/minecraft/world/level/block/Blocks.java -@@ -6486,6 +_,7 @@ +@@ -6583,6 +_,7 @@ BlockBehaviour.Properties.of() .mapColor(MapColor.PLANT) .forceSolidOff() @@ -8,7 +8,7 @@ .instabreak() .sound(SoundType.AZALEA) .noOcclusion() -@@ -6497,6 +_,7 @@ +@@ -6594,6 +_,7 @@ BlockBehaviour.Properties.of() .mapColor(MapColor.PLANT) .forceSolidOff() diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch new file mode 100644 index 000000000..86ef53933 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch @@ -0,0 +1,14 @@ +--- a/net/minecraft/world/level/block/BubbleColumnBlock.java ++++ b/net/minecraft/world/level/block/BubbleColumnBlock.java +@@ -98,9 +_,9 @@ + if (blockState.is(Blocks.BUBBLE_COLUMN)) { + return blockState; + } else if (blockState.is(Blocks.SOUL_SAND)) { +- return Blocks.BUBBLE_COLUMN.defaultBlockState().setValue(DRAG_DOWN, false); ++ return Blocks.BUBBLE_COLUMN.defaultBlockState().setValue(DRAG_DOWN, org.purpurmc.purpur.PurpurConfig.soulSandBlockReverseBubbleColumnFlow); // Purpur - Config to reverse bubble column flow + } else { +- return blockState.is(Blocks.MAGMA_BLOCK) ? Blocks.BUBBLE_COLUMN.defaultBlockState().setValue(DRAG_DOWN, true) : Blocks.WATER.defaultBlockState(); ++ return blockState.is(Blocks.MAGMA_BLOCK) ? Blocks.BUBBLE_COLUMN.defaultBlockState().setValue(DRAG_DOWN, !org.purpurmc.purpur.PurpurConfig.magmaBlockReverseBubbleColumnFlow) : Blocks.WATER.defaultBlockState(); // Purpur - Config to reverse bubble column flow + } + } + diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BushBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BushBlock.java.patch similarity index 84% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BushBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BushBlock.java.patch index b166eb72a..86f13f0eb 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/BushBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BushBlock.java.patch @@ -1,8 +1,8 @@ --- a/net/minecraft/world/level/block/BushBlock.java +++ b/net/minecraft/world/level/block/BushBlock.java -@@ -61,4 +_,24 @@ - protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { - return pathComputationType == PathComputationType.AIR && !this.hasCollision || super.isPathfindable(state, pathComputationType); +@@ -44,4 +_,24 @@ + public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { + BonemealableBlock.findSpreadableNeighbourPos(level, pos, state).ifPresent(blockPos -> level.setBlockAndUpdate(blockPos, this.defaultBlockState())); } + + // Purpur start - Ability for hoe to replant crops diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CactusBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CactusBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch index 64fecea91..4fec7e3b9 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CactusBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/CactusBlock.java +++ b/net/minecraft/world/level/block/CactusBlock.java -@@ -21,7 +_,7 @@ +@@ -22,7 +_,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -9,7 +9,7 @@ public static final MapCodec CODEC = simpleCodec(CactusBlock::new); public static final IntegerProperty AGE = BlockStateProperties.AGE_15; public static final int MAX_AGE = 15; -@@ -104,7 +_,7 @@ +@@ -117,7 +_,7 @@ protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { for (Direction direction : Direction.Plane.HORIZONTAL) { BlockState blockState = level.getBlockState(pos.relative(direction)); @@ -18,7 +18,7 @@ return false; } } -@@ -128,4 +_,34 @@ +@@ -141,4 +_,34 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return false; } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CakeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CakeBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch index f0b3fec97..c78b443f8 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CakeBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/CakeBlock.java +++ b/net/minecraft/world/level/block/CakeBlock.java -@@ -119,6 +_,7 @@ +@@ -109,6 +_,7 @@ org.bukkit.event.entity.FoodLevelChangeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(player, 2 + oldFoodLevel); if (!event.isCancelled()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch new file mode 100644 index 000000000..6557f2a69 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/level/block/CampfireBlock.java ++++ b/net/minecraft/world/level/block/CampfireBlock.java +@@ -124,7 +_,7 @@ + return this.defaultBlockState() + .setValue(WATERLOGGED, flag) + .setValue(SIGNAL_FIRE, this.isSmokeSource(level.getBlockState(clickedPos.below()))) +- .setValue(LIT, !flag) ++ .setValue(LIT, level.getMinecraftWorld().purpurConfig.campFireLitWhenPlaced && !flag) // Purpur - Campfire option for lit when placed + .setValue(FACING, context.getHorizontalDirection()); + } + diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch similarity index 84% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch index ba95ddd13..3ab8cbc0e 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch @@ -31,6 +31,6 @@ + ironGolem.setSummoner(placer == null ? null : placer.getUUID()); + } + // Purpur end - Summoner API - // clearPatternBlocks(level, patternMatch); // CraftBukkit - moved down - golem.moveTo(pos.getX() + 0.5, pos.getY() + 0.05, pos.getZ() + 0.5, 0.0F, 0.0F); - if (!level.addFreshEntity(golem, (golem.getType() == EntityType.SNOW_GOLEM) ? org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BUILD_SNOWMAN : org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BUILD_IRONGOLEM)) { + // clearPatternBlocks(level, patternMatch); // Paper - moved down + golem.snapTo(pos.getX() + 0.5, pos.getY() + 0.05, pos.getZ() + 0.5, 0.0F, 0.0F); + // Paper start diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CauldronBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CauldronBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CaveVinesBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch similarity index 86% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CaveVinesBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch index 829a79ee6..631c2fafe 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CaveVinesBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch @@ -2,7 +2,7 @@ +++ b/net/minecraft/world/level/block/CaveVinesBlock.java @@ -92,4 +_,11 @@ public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { - level.setBlock(pos, state.setValue(BERRIES, Boolean.valueOf(true)), 2); + level.setBlock(pos, state.setValue(BERRIES, true), 2); } + + // Purpur start - cave vines configurable max growth age diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ChestBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch similarity index 96% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ChestBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch index c2e63ab56..92f2abf28 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ChestBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/ChestBlock.java +++ b/net/minecraft/world/level/block/ChestBlock.java -@@ -357,6 +_,7 @@ +@@ -337,6 +_,7 @@ } public static boolean isBlockedChestByBlock(BlockGetter level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ComposterBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch similarity index 99% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ComposterBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch index 2be94eb48..8ee18624a 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ComposterBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/ComposterBlock.java +++ b/net/minecraft/world/level/block/ComposterBlock.java -@@ -241,23 +_,52 @@ +@@ -250,23 +_,52 @@ ) { int levelValue = state.getValue(LEVEL); if (levelValue < 8 && COMPOSTABLES.containsKey(stack.getItem())) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CoralBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CoralBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CropBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch similarity index 95% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CropBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch index f1bbca32a..667d7f96f 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/CropBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch @@ -1,15 +1,15 @@ --- a/net/minecraft/world/level/block/CropBlock.java +++ b/net/minecraft/world/level/block/CropBlock.java -@@ -182,7 +_,7 @@ +@@ -169,7 +_,7 @@ @Override - protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity) { + protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent - if (level instanceof ServerLevel serverLevel && entity instanceof Ravager && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit + if (level instanceof ServerLevel serverLevel && entity instanceof Ravager && serverLevel.purpurConfig.ravagerGriefableBlocks.contains(serverLevel.getBlockState(pos).getBlock()) && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Purpur - Configurable ravager griefable blocks list serverLevel.destroyBlock(pos, true, entity); } -@@ -217,4 +_,15 @@ +@@ -204,4 +_,15 @@ protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/DoorBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/DoorBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch index e2733acaa..235a738f9 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/DoorBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/DoorBlock.java +++ b/net/minecraft/world/level/block/DoorBlock.java -@@ -206,6 +_,7 @@ +@@ -199,6 +_,7 @@ protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { if (!this.type.canOpenByHand()) { return InteractionResult.PASS; @@ -8,7 +8,7 @@ } else { state = state.cycle(OPEN); level.setBlock(pos, state, 10); -@@ -294,4 +_,18 @@ +@@ -287,4 +_,18 @@ public static boolean isWoodenDoor(BlockState state) { return state.getBlock() instanceof DoorBlock doorBlock && doorBlock.type().canOpenByHand(); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/DragonEggBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/DragonEggBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/EnchantingTableBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/EnchantingTableBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/FarmBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch similarity index 92% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/FarmBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch index 960c0f50f..097ec96b1 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/FarmBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/level/block/FarmBlock.java +++ b/net/minecraft/world/level/block/FarmBlock.java @@ -112,7 +_,7 @@ - public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, float fallDistance) { + public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { super.fallOn(level, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. if (level instanceof ServerLevel serverLevel -- && level.random.nextFloat() < fallDistance - 0.5F -+ && (serverLevel.purpurConfig.farmlandTrampleHeight >= 0D ? fallDistance >= serverLevel.purpurConfig.farmlandTrampleHeight : level.random.nextFloat() < fallDistance - 0.5F) // // Purpur - Configurable farmland trample height +- && level.random.nextFloat() < fallDistance - 0.5 ++ && (serverLevel.purpurConfig.farmlandTrampleHeight >= 0D ? fallDistance >= serverLevel.purpurConfig.farmlandTrampleHeight : level.random.nextFloat() < fallDistance - 0.5) // Purpur - Configurable farmland trample height && entity instanceof LivingEntity && (entity instanceof Player || serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) { @@ -15,7 +15,7 @@ + if (level.purpurConfig.farmlandTramplingDisabled) return; // Purpur - Farmland trampling changes + if (level.purpurConfig.farmlandTramplingOnlyPlayers && !(entity instanceof Player)) return; // Purpur - Farmland trampling changes -+ ++ + // Purpur start - Ability to re-add farmland mechanics from Alpha + if (level.purpurConfig.farmlandAlpha) { + Block block = level.getBlockState(pos.below()).getBlock(); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch similarity index 83% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch index f9b8e4aac..e8b905a8b 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch @@ -4,8 +4,8 @@ @Override public BlockState getStateForPlacement(RandomSource random) { -- return this.defaultBlockState().setValue(AGE, Integer.valueOf(random.nextInt(25))); -+ return this.defaultBlockState().setValue(AGE, Integer.valueOf(random.nextInt(getMaxGrowthAge()))); // Purpur - kelp, cave, weeping, and twisting configurable max growth age +- return this.defaultBlockState().setValue(AGE, random.nextInt(25)); ++ return this.defaultBlockState().setValue(AGE, random.nextInt(getMaxGrowthAge())); // Purpur - kelp, cave, weeping, and twisting configurable max growth age } @Override @@ -28,8 +28,8 @@ } public BlockState getMaxAgeState(BlockState state) { -- return state.setValue(AGE, Integer.valueOf(25)); -+ return state.setValue(AGE, Integer.valueOf(getMaxGrowthAge())); // Purpur - kelp, cave, weeping, and twisting configurable max growth age +- return state.setValue(AGE, 25); ++ return state.setValue(AGE, getMaxGrowthAge()); // Purpur - kelp, cave, weeping, and twisting configurable max growth age } public boolean isMaxAge(BlockState state) { @@ -38,7 +38,7 @@ } protected BlockState updateBodyAfterConvertedFromHead(BlockState head, BlockState body) { -@@ -130,13 +_,13 @@ +@@ -137,13 +_,13 @@ @Override public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { BlockPos blockPos = pos.relative(this.growthDirection); @@ -47,14 +47,14 @@ int blocksToGrowWhenBonemealed = this.getBlocksToGrowWhenBonemealed(random); for (int i = 0; i < blocksToGrowWhenBonemealed && this.canGrowInto(level.getBlockState(blockPos)); i++) { - level.setBlockAndUpdate(blockPos, state.setValue(AGE, Integer.valueOf(min))); + level.setBlockAndUpdate(blockPos, state.setValue(AGE, min)); blockPos = blockPos.relative(this.growthDirection); - min = Math.min(min + 1, 25); + min = Math.min(min + 1, getMaxGrowthAge()); // Purpur - kelp, cave, weeping, and twisting configurable max growth age } } -@@ -148,4 +_,6 @@ +@@ -155,4 +_,6 @@ protected GrowingPlantHeadBlock getHeadBlock() { return this; } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/HayBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch similarity index 90% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/HayBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch index d8013d2da..1b21c6e0a 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/HayBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch @@ -3,7 +3,7 @@ @@ -23,6 +_,6 @@ @Override - public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, float fallDistance) { + public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { - entity.causeFallDamage(fallDistance, 0.2F, level.damageSources().fall()); + super.fallOn(level, state, pos, entity, fallDistance); // Purpur - Configurable block fall damage modifiers } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/IceBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/IceBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/KelpBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/KelpBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/LiquidBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/LiquidBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/MagmaBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/MagmaBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/NetherPortalBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch similarity index 85% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/NetherPortalBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch index 282b160de..b4259d9d3 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/NetherPortalBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch @@ -4,12 +4,12 @@ protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { if (level.spigotConfig.enableZombiePigmenPortalSpawns && level.dimensionType().natural() // Spigot && level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) -- && random.nextInt(2000) < level.getDifficulty().getId()) { -+ && random.nextInt(level.purpurConfig.piglinPortalSpawnModifier) < level.getDifficulty().getId()) { // Purpur - Piglin portal spawn modifier +- && random.nextInt(2000) < level.getDifficulty().getId() ++ && random.nextInt(level.purpurConfig.piglinPortalSpawnModifier) < level.getDifficulty().getId() // Purpur - Piglin portal spawn modifier + && level.anyPlayerCloseEnoughForSpawning(pos)) { while (level.getBlockState(pos).is(this)) { pos = pos.below(); - } -@@ -129,7 +_,7 @@ +@@ -130,7 +_,7 @@ @Override public int getPortalTransitionTime(ServerLevel level, Entity entity) { return entity instanceof Player player diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/NetherWartBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch similarity index 92% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/NetherWartBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch index 95b1bb2c1..362dae20a 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/NetherWartBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch @@ -4,12 +4,12 @@ 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 - bonemealable netherwart +-public class NetherWartBlock extends VegetationBlock { ++public class NetherWartBlock extends VegetationBlock implements BonemealableBlock { // Purpur - bonemealable netherwart public static final MapCodec CODEC = simpleCodec(NetherWartBlock::new); public static final int MAX_AGE = 3; public static final IntegerProperty AGE = BlockStateProperties.AGE_3; -@@ -70,4 +_,34 @@ +@@ -65,4 +_,34 @@ protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/NoteBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/NoteBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch index b9260673f..42c3d0b22 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/NoteBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/NoteBlock.java +++ b/net/minecraft/world/level/block/NoteBlock.java -@@ -107,7 +_,7 @@ +@@ -101,7 +_,7 @@ } private void playNote(@Nullable Entity entity, BlockState state, Level level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ObserverBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/ObserverBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch index 853ec1c3a..cad7d9a3c 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/PointedDripstoneBlock.java +++ b/net/minecraft/world/level/block/PointedDripstoneBlock.java -@@ -197,20 +_,20 @@ +@@ -193,20 +_,20 @@ @VisibleForTesting public static void maybeTransferFluid(BlockState state, ServerLevel level, BlockPos pos, float randChance) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/PoweredRailBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch similarity index 96% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/PoweredRailBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch index 2b31f8cfb..f6c12cc4c 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/PoweredRailBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/PoweredRailBlock.java +++ b/net/minecraft/world/level/block/PoweredRailBlock.java -@@ -34,7 +_,7 @@ +@@ -28,7 +_,7 @@ } protected boolean findPoweredRailSignal(Level level, BlockPos pos, BlockState state, boolean searchForward, int recursionCount) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch index 661923a83..c5ac40711 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/net/minecraft/world/level/block/RespawnAnchorBlock.java -@@ -159,7 +_,7 @@ +@@ -160,7 +_,7 @@ }; Vec3 center = pos2.getCenter(); level.explode( diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch new file mode 100644 index 000000000..aa23616be --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/level/block/SculkShriekerBlock.java ++++ b/net/minecraft/world/level/block/SculkShriekerBlock.java +@@ -118,7 +_,7 @@ + @Nullable + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { +- return this.defaultBlockState().setValue(WATERLOGGED, context.getLevel().getFluidState(context.getClickedPos()).getType() == Fluids.WATER); ++ return this.defaultBlockState().setValue(WATERLOGGED, context.getLevel().getFluidState(context.getClickedPos()).getType() == Fluids.WATER).setValue(SculkShriekerBlock.CAN_SUMMON, context.getLevel().purpurConfig.sculkShriekerCanSummonDefault); // Purpur - Config for sculk shrieker can_summon state + } + + @Override diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SlabBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SlabBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch index ec93007cc..9e9c9b817 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SlabBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/SlabBlock.java +++ b/net/minecraft/world/level/block/SlabBlock.java -@@ -150,4 +_,25 @@ +@@ -144,4 +_,25 @@ return false; } } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SnowLayerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SnowLayerBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch index f6406d510..ca87324a4 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SnowLayerBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/SnowLayerBlock.java +++ b/net/minecraft/world/level/block/SnowLayerBlock.java -@@ -96,6 +_,7 @@ +@@ -76,6 +_,7 @@ @Override protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { BlockState blockState = level.getBlockState(pos.below()); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SpawnerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch similarity index 99% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SpawnerBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch index cf68daf1b..be5975798 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SpawnerBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/SpawnerBlock.java +++ b/net/minecraft/world/level/block/SpawnerBlock.java -@@ -43,6 +_,57 @@ +@@ -38,6 +_,57 @@ ); } @@ -58,7 +58,7 @@ @Override protected void spawnAfterBreak(BlockState state, ServerLevel level, BlockPos pos, ItemStack stack, boolean dropExperience) { super.spawnAfterBreak(state, level, pos, stack, dropExperience); -@@ -51,6 +_,7 @@ +@@ -46,6 +_,7 @@ @Override public int getExpDrop(BlockState state, ServerLevel level, BlockPos pos, ItemStack stack, boolean dropExperience) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SpongeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SpongeBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/StonecutterBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/StonecutterBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SugarCaneBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch similarity index 95% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SugarCaneBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch index b39dc02a3..f388f13ce 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/SugarCaneBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch @@ -8,8 +8,8 @@ +public class SugarCaneBlock extends Block implements BonemealableBlock { // Purpur - bonemealable sugarcane public static final MapCodec CODEC = simpleCodec(SugarCaneBlock::new); public static final IntegerProperty AGE = BlockStateProperties.AGE_15; - protected static final float AABB_OFFSET = 6.0F; -@@ -113,4 +_,34 @@ + private static final VoxelShape SHAPE = Block.column(12.0, 0.0, 16.0); +@@ -112,4 +_,34 @@ protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/TurtleEggBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/TurtleEggBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch index d6e5654f9..118021357 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/TurtleEggBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -157,7 +_,7 @@ +@@ -156,7 +_,7 @@ private boolean shouldUpdateHatchLevel(Level level) { float timeOfDay = level.getTimeOfDay(1.0F); @@ -9,7 +9,7 @@ } @Override -@@ -192,9 +_,31 @@ +@@ -189,9 +_,31 @@ } private boolean canDestroyEgg(ServerLevel level, Entity entity) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/TwistingVinesBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/TwistingVinesBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/WeepingVinesBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/WeepingVinesBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/WitherSkullBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/WitherSkullBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch index 71426f386..4cb4b65da 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -@@ -191,6 +_,21 @@ +@@ -186,6 +_,21 @@ } ItemStack itemStack = furnace.items.get(1); @@ -22,7 +22,7 @@ ItemStack itemStack1 = furnace.items.get(0); boolean flag1 = !itemStack1.isEmpty(); boolean flag2 = !itemStack.isEmpty(); -@@ -274,6 +_,8 @@ +@@ -269,6 +_,8 @@ if (flag) { setChanged(level, pos, state); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch similarity index 91% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch index 8987119ae..8de0db582 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -@@ -139,6 +_,16 @@ +@@ -142,6 +_,16 @@ public double getEffectRange() { if (this.effectRange < 0) { @@ -17,7 +17,7 @@ return this.levels * 10 + 10; } else { return effectRange; -@@ -168,6 +_,7 @@ +@@ -171,6 +_,7 @@ int y = pos.getY(); int z = pos.getZ(); BlockPos blockPos; @@ -25,15 +25,15 @@ if (blockEntity.lastCheckY < y) { blockPos = pos; blockEntity.checkingBeamSections = Lists.newArrayList(); -@@ -197,6 +_,7 @@ +@@ -200,6 +_,7 @@ } } } else { + if (level.purpurConfig.beaconAllowEffectsWithTintedGlass && blockState.getBlock().equals(Blocks.TINTED_GLASS)) {isTintedGlass = true;} // Purpur - allow beacon effects when covered by tinted glass - if (beaconBeamSection == null || blockState.getLightBlock() >= 15 && !blockState.is(Blocks.BEDROCK)) { + if (section == null || blockState.getLightBlock() >= 15 && !blockState.is(Blocks.BEDROCK)) { blockEntity.checkingBeamSections.clear(); blockEntity.lastCheckY = height; -@@ -216,7 +_,7 @@ +@@ -219,7 +_,7 @@ blockEntity.levels = updateBase(level, x, y, z); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch similarity index 97% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch index 091db9f55..c78bf7ee8 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -@@ -76,7 +_,7 @@ +@@ -72,7 +_,7 @@ "leash", "UUID" ); @@ -9,7 +9,7 @@ private static final int MIN_TICKS_BEFORE_REENTERING_HIVE = 400; private static final int MIN_OCCUPATION_TICKS_NECTAR = 2400; public static final int MIN_OCCUPATION_TICKS_NECTARLESS = 600; -@@ -154,11 +_,33 @@ +@@ -147,11 +_,33 @@ return list; } @@ -43,7 +43,7 @@ // Paper start - Add EntityBlockStorage clearEntities public void clearBees() { this.stored.clear(); -@@ -408,8 +_,8 @@ +@@ -389,8 +_,8 @@ return this.stored.stream().map(BeehiveBlockEntity.BeeData::toOccupant).toList(); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/BlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch similarity index 93% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/BlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch index 49b53bf98..b95caba81 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/BlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -84,6 +_,14 @@ +@@ -104,6 +_,14 @@ this.persistentDataContainer.putAll((CompoundTag) persistentDataTag); } // Paper end - read persistent data container @@ -15,7 +15,7 @@ } public final void loadWithComponents(CompoundTag tag, HolderLookup.Provider registries) { -@@ -98,6 +_,15 @@ +@@ -116,6 +_,15 @@ this.loadAdditional(tag, registries); } @@ -31,10 +31,11 @@ protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { } -@@ -378,4 +_,16 @@ - - T getOrDefault(DataComponentType component, T defaultValue); +@@ -377,4 +_,17 @@ + private ComponentHelper() { + } } ++ + // Purpur start - Persistent BlockEntity Lore and DisplayName + @Nullable + private net.minecraft.world.item.component.ItemLore persistentLore = null; diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch index fde6e3fb4..2b9fe8924 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/entity/ConduitBlockEntity.java +++ b/net/minecraft/world/level/block/entity/ConduitBlockEntity.java -@@ -155,7 +_,7 @@ +@@ -151,7 +_,7 @@ BlockPos blockPos1 = pos.offset(i, i1, i2x); BlockState blockState = level.getBlockState(blockPos1); @@ -9,7 +9,7 @@ if (blockState.is(block)) { positions.add(blockPos1); } -@@ -170,13 +_,13 @@ +@@ -166,13 +_,13 @@ private static void applyEffects(Level level, BlockPos pos, List positions) { // CraftBukkit start @@ -26,7 +26,7 @@ // CraftBukkit start return i; } -@@ -213,17 +_,17 @@ +@@ -209,17 +_,17 @@ blockEntity.destroyTargetUUID = null; } else if (blockEntity.destroyTarget == null) { List entitiesOfClass = level.getEntitiesOfClass( @@ -47,7 +47,7 @@ level.playSound( null, blockEntity.destroyTarget.getX(), -@@ -253,16 +_,22 @@ +@@ -249,16 +_,22 @@ } public static AABB getDestroyRangeAABB(BlockPos pos) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch similarity index 69% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch index 5f6a1f407..1f4ddb733 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java +++ b/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java -@@ -28,6 +_,7 @@ +@@ -31,6 +_,7 @@ private static final RandomSource RANDOM = RandomSource.create(); @Nullable private Component name; @@ -8,23 +8,22 @@ public EnchantingTableBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.ENCHANTING_TABLE, pos, state); -@@ -39,6 +_,7 @@ +@@ -42,12 +_,14 @@ if (this.hasCustomName()) { - tag.putString("CustomName", Component.Serializer.toJson(this.name, registries)); + tag.store("CustomName", ComponentSerialization.CODEC, registries.createSerializationContext(NbtOps.INSTANCE), this.name); } + tag.putInt("Purpur.Lapis", this.lapis); // Purpur - Enchantment Table Persists Lapis } @Override -@@ -47,6 +_,7 @@ - if (tag.contains("CustomName", 8)) { - this.name = parseCustomNameSafe(tag.getString("CustomName"), registries); - } -+ this.lapis = tag.getInt("Purpur.Lapis"); // Purpur - Enchantment Table Persists Lapis + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); + this.name = parseCustomNameSafe(tag.get("CustomName"), registries); ++ this.lapis = tag.getIntOr("Purpur.Lapis", 0); // Purpur - Enchantment Table Persists Lapis } public static void bookAnimationTick(Level level, BlockPos pos, BlockState state, EnchantingTableBlockEntity enchantingTable) { -@@ -138,4 +_,14 @@ +@@ -139,4 +_,14 @@ public void removeComponentsFromTag(CompoundTag tag) { tag.remove("CustomName"); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch similarity index 99% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch index 96784944d..5577c229c 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/entity/SignBlockEntity.java +++ b/net/minecraft/world/level/block/entity/SignBlockEntity.java -@@ -163,16 +_,32 @@ +@@ -151,16 +_,32 @@ return this.setText(updater.apply(text), isFrontText); } @@ -35,7 +35,7 @@ ); } } -@@ -310,6 +_,28 @@ +@@ -297,6 +_,28 @@ // CraftBukkit - this return new CommandSourceStack(commandSource, Vec3.atCenterOf(pos), Vec2.ZERO, (ServerLevel)level, 2, string, component, level.getServer(), player); // Paper - Fix commands from signs not firing command events } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch similarity index 77% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch index 262a755d6..41c642131 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch @@ -1,8 +1,8 @@ --- a/net/minecraft/world/level/chunk/storage/EntityStorage.java +++ b/net/minecraft/world/level/chunk/storage/EntityStorage.java -@@ -106,6 +_,7 @@ - } - // Paper end - Entity load/save limit per chunk +@@ -89,6 +_,7 @@ + ListTag listTag = new ListTag(); + entities.getEntities().forEach(entity -> { CompoundTag compoundTag1 = new CompoundTag(); + if (!entity.canSaveToDisk()) return; // Purpur - Add canSaveToDisk to Entity if (entity.save(compoundTag1)) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch similarity index 98% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch index aa1888597..f9e571450 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +++ b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -@@ -283,7 +_,7 @@ +@@ -49,7 +_,7 @@ // Paper start private static void printOversizedLog(String msg, Path file, int x, int z) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch new file mode 100644 index 000000000..5652d79c6 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch @@ -0,0 +1,28 @@ +--- a/net/minecraft/world/level/levelgen/PhantomSpawner.java ++++ b/net/minecraft/world/level/levelgen/PhantomSpawner.java +@@ -38,13 +_,13 @@ + int spawnAttemptMaxSeconds = level.paperConfig().entities.behavior.phantomsSpawnAttemptMaxSeconds; + this.nextTick += (spawnAttemptMinSeconds + randomSource.nextInt(spawnAttemptMaxSeconds - spawnAttemptMinSeconds + 1)) * 20; + // Paper end - Ability to control player's insomnia and phantoms +- if (level.getSkyDarken() >= 5 || !level.dimensionType().hasSkyLight()) { ++ if (level.getSkyDarken() >= level.purpurConfig.phantomSpawnMinSkyDarkness || !level.dimensionType().hasSkyLight()) { // Purpur - Add phantom spawning options + for (ServerPlayer serverPlayer : level.players()) { + if (!serverPlayer.isSpectator() && (!level.paperConfig().entities.behavior.phantomsDoNotSpawnOnCreativePlayers || !serverPlayer.isCreative())) { // Paper - Add phantom creative and insomniac controls + BlockPos blockPos = serverPlayer.blockPosition(); +- if (!level.dimensionType().hasSkyLight() || blockPos.getY() >= level.getSeaLevel() && level.canSeeSky(blockPos)) { ++ if (!level.dimensionType().hasSkyLight() || (!level.purpurConfig.phantomSpawnOnlyAboveSeaLevel || blockPos.getY() >= level.getSeaLevel()) && (!level.purpurConfig.phantomSpawnOnlyWithVisibleSky || level.canSeeSky(blockPos))) { // Purpur - Add phantom spawning options + DifficultyInstance currentDifficultyAt = level.getCurrentDifficultyAt(blockPos); +- if (currentDifficultyAt.isHarderThan(randomSource.nextFloat() * 3.0F)) { ++ if (currentDifficultyAt.isHarderThan(randomSource.nextFloat() * (float) level.purpurConfig.phantomSpawnLocalDifficultyChance)) { // Purpur - Add phantom spawning options + ServerStatsCounter stats = serverPlayer.getStats(); + int i = Mth.clamp(stats.getValue(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE); + int i1 = 24000; +@@ -56,7 +_,7 @@ + FluidState fluidState = level.getFluidState(blockPos1); + if (NaturalSpawner.isValidEmptySpawnBlock(level, blockPos1, blockState, fluidState, EntityType.PHANTOM)) { + SpawnGroupData spawnGroupData = null; +- int i2 = 1 + randomSource.nextInt(currentDifficultyAt.getDifficulty().getId() + 1); ++ int i2 = level.purpurConfig.phantomSpawnMinPerAttempt + randomSource.nextInt((level.purpurConfig.phantomSpawnMaxPerAttempt < 0 ? currentDifficultyAt.getDifficulty().getId() : level.purpurConfig.phantomSpawnMaxPerAttempt - level.purpurConfig.phantomSpawnMinPerAttempt) + 1); // Purpur - Add phantom spawning options + + for (int i3 = 0; i3 < i2; i3++) { + // Paper start - PhantomPreSpawnEvent diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/material/FlowingFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch similarity index 96% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/material/FlowingFluid.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch index 78e131bae..a2b76868b 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/material/FlowingFluid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/material/FlowingFluid.java +++ b/net/minecraft/world/level/material/FlowingFluid.java -@@ -232,7 +_,7 @@ +@@ -190,7 +_,7 @@ } } @@ -9,7 +9,7 @@ BlockState blockState1 = level.getBlockState(mutableBlockPos.setWithOffset(pos, Direction.DOWN)); FluidState fluidState1 = blockState1.getFluidState(); if (blockState1.isSolid() || this.isSourceBlockOfThisType(fluidState1)) { -@@ -319,6 +_,12 @@ +@@ -267,6 +_,12 @@ } protected abstract boolean canConvertToSource(ServerLevel level); diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/material/LavaFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch similarity index 96% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/material/LavaFluid.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch index 2d7d530ae..502b87bdc 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/material/LavaFluid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/material/LavaFluid.java +++ b/net/minecraft/world/level/material/LavaFluid.java -@@ -177,7 +_,7 @@ +@@ -189,7 +_,7 @@ @Override public int getTickDelay(LevelReader level) { @@ -9,7 +9,7 @@ } @Override -@@ -198,6 +_,13 @@ +@@ -210,6 +_,13 @@ private void fizz(LevelAccessor level, BlockPos pos) { level.levelEvent(1501, pos, 0); } diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/material/WaterFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch similarity index 88% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/material/WaterFluid.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch index 88d21ec4e..3bc14791b 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/material/WaterFluid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch @@ -1,15 +1,16 @@ --- a/net/minecraft/world/level/material/WaterFluid.java +++ b/net/minecraft/world/level/material/WaterFluid.java -@@ -74,6 +_,12 @@ - protected boolean canConvertToSource(ServerLevel level) { +@@ -78,6 +_,13 @@ return level.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION); } + + // Purpur start - Implement infinite liquids + @Override + protected int getRequiredSources(Level level) { + return level.purpurConfig.waterInfiniteRequiredSources; + } + // Purpur end - Implement infinite liquids ++ // Paper start - Add BlockBreakBlockEvent @Override protected void beforeDestroyingBlock(LevelAccessor level, BlockPos pos, BlockState state, BlockPos source) { diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/portal/PortalShape.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/portal/PortalShape.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch similarity index 96% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch index 1260ca9e5..138758dfe 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java +++ b/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -@@ -68,6 +_,7 @@ +@@ -81,6 +_,7 @@ public final Map decorations = Maps.newLinkedHashMap(); private final Map frameMarkers = Maps.newHashMap(); private int trackedDecorationCount; diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch similarity index 100% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch diff --git a/purpur-server/minecraft-patches/rejected/net/minecraft/world/phys/AABB.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch similarity index 67% rename from purpur-server/minecraft-patches/rejected/net/minecraft/world/phys/AABB.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch index db94aa724..df49f561e 100644 --- a/purpur-server/minecraft-patches/rejected/net/minecraft/world/phys/AABB.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch @@ -1,8 +1,8 @@ --- a/net/minecraft/world/phys/AABB.java +++ b/net/minecraft/world/phys/AABB.java -@@ -442,4 +_,10 @@ - center.x - xSize / 2.0, center.y - ySize / 2.0, center.z - zSize / 2.0, center.x + xSize / 2.0, center.y + ySize / 2.0, center.z + zSize / 2.0 - ); +@@ -465,4 +_,10 @@ + return new AABB(this.minX, this.minY, this.minZ, this.maxX, this.maxY, this.maxZ); + } } + + // Purpur start - Stop squids floating on top of water - tuinity added method diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java index c4cce5eb0..f5adfffd2 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -74,8 +74,8 @@ public class PurpurConfig { commands = new HashMap<>(); commands.put("purpur", new PurpurCommand("purpur")); - version = getInt("config-version", 41); - set("config-version", 41); + version = getInt("config-version", 42); + set("config-version", 42); readConfig(PurpurConfig.class, null); diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 1dd74216e..a1f895bb9 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -3404,7 +3404,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; - public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; + public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = false; public boolean zombifiedPiglinTakeDamageFromWater = false; public boolean zombifiedPiglinAlwaysDropExp = false; private void zombifiedPiglinSettings() { @@ -3416,6 +3416,9 @@ public class PurpurWorldConfig { set("mobs.zombified_piglin.attributes.max-health", null); set("mobs.zombified_piglin.attributes.max_health", oldValue); } + if (PurpurConfig.version < 42) { + set("mobs.zombified_piglin.count-as-player-kill-when-angry", false); + } zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth); zombifiedPiglinScale = Mth.clamp(getDouble("mobs.zombified_piglin.attributes.scale", zombifiedPiglinScale), 0.0625D, 16.0D); zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements); From 9dc9fd34cdec6083268bc0e7addedd1178ec0a01 Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 25 Mar 2025 21:54:45 -0700 Subject: [PATCH 049/289] apply feature patches --- .../features/0001-Ridables.patch | 832 +++++++++--------- ...-Configurable-entity-base-attributes.patch | 368 ++++---- .../0003-Barrels-and-enderchests-6-rows.patch | 24 +- .../0005-Chickens-can-retaliate.patch | 8 +- ...-Minecart-settings-and-WASD-controls.patch | 16 +- ...0007-Villagers-follow-emerald-blocks.patch | 29 +- ...urable-void-damage-height-and-damage.patch | 8 +- .../0009-Implement-elytra-settings.patch | 20 +- .../0010-Configurable-jockey-options.patch | 20 +- ...ed-to-crystals-and-crystals-shoot-ph.patch | 18 +- .../0012-Phantoms-burn-in-light.patch | 10 +- ...e-entity-breeding-times-configurable.patch | 202 ++--- ...mes-from-item-forms-of-entities-to-e.patch | 31 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 66 +- ...iefing-bypass-to-everything-affected.patch | 106 +-- ...0017-Add-EntityTeleportHinderedEvent.patch | 22 +- ...oggle-for-water-sensitive-mob-damage.patch | 320 +++---- ...019-API-for-any-mob-to-burn-daylight.patch | 146 ++- ...turally-aggressive-to-players-chance.patch | 65 +- .../0021-Mobs-always-drop-experience.patch | 308 +++---- 20 files changed, 1316 insertions(+), 1303 deletions(-) diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 7a56507e8..4632523eb 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -5,50 +5,50 @@ Subject: [PATCH] Ridables diff --git a/net/minecraft/gametest/framework/GameTestHelper.java b/net/minecraft/gametest/framework/GameTestHelper.java -index 29d402620d2e1cbed94f941f933ae8eb5d786e7f..ec0998369158286fccb38c8e10c3cfa2a653a8aa 100644 +index fa7a2a85adf7758a753c54a7cf75cc667922d3d7..b0a86aac9603e72062f59dbe67c88ed8f07023e3 100644 --- a/net/minecraft/gametest/framework/GameTestHelper.java +++ b/net/minecraft/gametest/framework/GameTestHelper.java -@@ -281,6 +281,8 @@ public class GameTestHelper { +@@ -294,6 +294,8 @@ public class GameTestHelper { public void setAfk(final boolean afk) {} // Purpur - AFK API + public void resetLastActionTime() {} // Purpur - Ridables + @Override - public boolean isLocalPlayer() { - return true; + public boolean isClientAuthoritative() { + return false; diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 121b57c7f5345f5d8884eaa1d36dac79fb7d42ef..9afbfe9bf493e09ca1963e8956ab7573964479b4 100644 +index f34bc75f324454bf48f0ebf79111706bb027a54b..6ad266592c16bdeccfb689fb2ef2ee37e79a7b41 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1745,6 +1745,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - BlockPhysicsEvent serverLevel.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent serverLevel.updateLagCompensationTick(); // Paper - lag compensation - net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers + serverLevel.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur - Ridables profilerFiller.push(() -> serverLevel + " " + serverLevel.dimension().location()); /* Drop global time updates if (this.tickCount % 20 == 0) { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 63b1b2f920d5f2beb23433a373233aa2f1f95dbb..3c3e8e58cd2761ab2f0652e63f944a5c9a95dca8 100644 +index 1ee82020ba335946a54db380d2c3f8d71ce2371b..200c33de28100e42b91dee40e7a531e38d459c7d 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -217,6 +217,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -212,6 +212,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe + public final java.util.UUID uuid; 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) + public boolean hasRidableMoveEvent = false; // Purpur - Ridables - public LevelChunk getChunkIfLoaded(int x, int z) { - return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately + @Override + public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 6275078467313fe95ae2ae22740135a4b4f39511..7ebecee1de098c218304868b1223b914941cae8a 100644 +index 6dc490bf9d032b5ed2d7bd458bffd3471f54ff06..cf26a10e4ccf0f28817ce53b3c5bf1df02259273 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -855,6 +855,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -764,6 +764,15 @@ public class ServerPlayer extends Player { this.trackEnteredOrExitedLavaOnVehicle(); this.updatePlayerAttributes(); - this.advancements.flushDirty(this); + this.advancements.flushDirty(this, true); + + // Purpur start - Ridables + if (this.level().purpurConfig.useNightVisionWhenRiding && this.getVehicle() != null && this.getVehicle().getRider() == this && this.level().getGameTime() % 100 == 0) { // 5 seconds @@ -62,23 +62,23 @@ index 6275078467313fe95ae2ae22740135a4b4f39511..7ebecee1de098c218304868b1223b914 private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7b938c0d28af3f15106666e13642e88aa398db4d..9e8fdd28a2b2031e4db011663b67582fce5b3b0f 100644 +index ab2e6655e07a667d8ac413c85aaf3743a38db2e0..96b61192d9ab70857427cea65d4ddd0a4fe9b4aa 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2845,6 +2845,8 @@ public class ServerGamePacketListenerImpl +@@ -2766,6 +2766,8 @@ public class ServerGamePacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); + player.processClick(hand); // Purpur - Ridables + // Entity in bucket - SPIGOT-4048 and SPIGOT-6859a - if ((target instanceof Bucketable && target instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { + if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 56448eeb61f71dce04524e5f9dfe9dd3740154a7..680a7b609db5de96742a8042d0f9ab5e0a8a8e7f 100644 +index 4dd9ab13f97e14425d792ed23a81477016ddc56c..d4e989889ed21e3900062eed142f26a9bdaaa8d9 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -3152,6 +3152,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2861,6 +2861,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -92,7 +92,7 @@ index 56448eeb61f71dce04524e5f9dfe9dd3740154a7..680a7b609db5de96742a8042d0f9ab5e this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3193,6 +3200,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2902,6 +2909,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -107,8 +107,8 @@ index 56448eeb61f71dce04524e5f9dfe9dd3740154a7..680a7b609db5de96742a8042d0f9ab5e if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5116,4 +5131,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - return ((ServerLevel) this.level).isPositionEntityTicking(this.blockPosition()); +@@ -4828,4 +4843,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter + // Purpur start - Ridables @@ -153,10 +153,10 @@ index 56448eeb61f71dce04524e5f9dfe9dd3740154a7..680a7b609db5de96742a8042d0f9ab5e + // Purpur end - Ridables } diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java -index 95d78dcdb6777df73898694367ee17b1cb76d7a2..d0313fd5368baa53ec511c8c07fc78a1f1ecec4e 100644 +index bda521cca91f070139f5e9bdef6a50e1497f53ff..351f92e1627f465a9a292d4a5e5c256a8e323ab3 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java -@@ -32,6 +32,19 @@ public class GlowSquid extends Squid { +@@ -33,6 +33,19 @@ public class GlowSquid extends Squid { } // Purpur end - Flying squids! Oh my! @@ -177,11 +177,11 @@ index 95d78dcdb6777df73898694367ee17b1cb76d7a2..d0313fd5368baa53ec511c8c07fc78a1 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 73e4cfc0c92ab47dd299ca98c03c69d11f75d36a..5f5f031c9d5b738a29cbabf5bed9452907c97df1 100644 +index 0caf3cc4c38426dd08d4ec78c00b51a3a880718a..a6739650bfee639925a63f345ac39c6e0c5c3209 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -250,9 +250,9 @@ public abstract class LivingEntity extends Entity implements Attackable { - protected float rotOffs; +@@ -226,9 +226,9 @@ public abstract class LivingEntity extends Entity implements Attackable { + protected int noActionTime; public float lastHurt; public boolean jumping; - public float xxa; @@ -190,19 +190,19 @@ index 73e4cfc0c92ab47dd299ca98c03c69d11f75d36a..5f5f031c9d5b738a29cbabf5bed94529 + public float xxa; public float getStrafeMot() { return xxa; } public void setStrafeMot(float strafe) { xxa = strafe; } // Purpur - OBFHELPER + public float yya; public float getVerticalMot() { return yya; } public void setVerticalMot(float vertical) { yya = vertical; } // Purpur - OBFHELPER + public float zza; public float getForwardMot() { return zza; } public void setForwardMot(float forward) { zza = forward; } // Purpur - OBFHELPER - protected int lerpSteps; - protected double lerpX; - protected double lerpY; -@@ -310,7 +310,7 @@ public abstract class LivingEntity extends Entity implements Attackable { + protected InterpolationHandler interpolation = new InterpolationHandler(this); + protected double lerpYHeadRot; + protected int lerpHeadSteps; +@@ -277,7 +277,7 @@ public abstract class LivingEntity extends Entity implements Attackable { protected LivingEntity(EntityType entityType, Level level) { super(entityType, level); - this.attributes = new AttributeMap(DefaultAttributes.getSupplier(entityType)); + this.attributes = new AttributeMap(DefaultAttributes.getSupplier(entityType), this); // Purpur - Ridables - this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit + this.craftAttributes = new org.bukkit.craftbukkit.attribute.CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - this.setHealth(this.getMaxHealth()) inlined and simplified to skip the instanceof check for Player, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, this.getMaxHealth()); -@@ -377,6 +377,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -350,6 +350,7 @@ public abstract class LivingEntity extends Entity implements Attackable { .add(Attributes.MOVEMENT_EFFICIENCY) .add(Attributes.ATTACK_KNOCKBACK); } @@ -210,7 +210,7 @@ index 73e4cfc0c92ab47dd299ca98c03c69d11f75d36a..5f5f031c9d5b738a29cbabf5bed94529 @Override protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) { -@@ -3562,8 +3563,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3578,8 +3579,10 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); profilerFiller.pop(); // Paper start - Add EntityMoveEvent @@ -223,8 +223,8 @@ index 73e4cfc0c92ab47dd299ca98c03c69d11f75d36a..5f5f031c9d5b738a29cbabf5bed94529 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()); -@@ -3573,6 +3576,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()); +@@ -3589,6 +3592,21 @@ public abstract class LivingEntity extends Entity implements Attackable { + this.absSnapTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } + // Purpur start - Ridables @@ -244,12 +244,12 @@ index 73e4cfc0c92ab47dd299ca98c03c69d11f75d36a..5f5f031c9d5b738a29cbabf5bed94529 + // Purpur end - Ridables } // Paper end - Add EntityMoveEvent - if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { + if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterOrRain()) { diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index def2c797b9c0f3f97c37fcfa0fc44a351dfe3422..487a436e3d9a5a7a4551ea808c8ace306ce6c2fc 100644 +index e3b804f2d612ed7971db450aeea6768109b63470..ca1d0164c90e695731f05de39c1d2fff947ecfc1 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -151,8 +151,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -142,8 +142,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab super(entityType, level); this.goalSelector = new GoalSelector(); this.targetSelector = new GoalSelector(); @@ -260,7 +260,7 @@ index def2c797b9c0f3f97c37fcfa0fc44a351dfe3422..487a436e3d9a5a7a4551ea808c8ace30 this.jumpControl = new JumpControl(this); this.bodyRotationControl = this.createBodyControl(); this.navigation = this.createNavigation(level); -@@ -1407,7 +1407,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1279,7 +1279,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } protected InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -269,9 +269,9 @@ index def2c797b9c0f3f97c37fcfa0fc44a351dfe3422..487a436e3d9a5a7a4551ea808c8ace30 } public boolean isWithinRestriction() { -@@ -1725,4 +1725,58 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab - public float[] getArmorDropChances() { - return this.armorDropChances; +@@ -1591,4 +1591,58 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab + this.getNavigation().updatePathfinderMaxVisitedNodes(); + } } + + // Purpur start - Ridables @@ -329,10 +329,10 @@ index def2c797b9c0f3f97c37fcfa0fc44a351dfe3422..487a436e3d9a5a7a4551ea808c8ace30 + // Purpur end - Ridables } diff --git a/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/net/minecraft/world/entity/ai/attributes/AttributeMap.java -index 4c808c7ef336de74048f40bd1cc8b14131a9325d..a25d74592e89e3d6339479c6dc2b6f45d1932cfc 100644 +index bed9b564c493cd84bf53fc49368fda736f3fbc2b..23576e631ad4a12ec3ff3630be253738534588f3 100644 --- a/net/minecraft/world/entity/ai/attributes/AttributeMap.java +++ b/net/minecraft/world/entity/ai/attributes/AttributeMap.java -@@ -23,14 +23,21 @@ public class AttributeMap { +@@ -18,14 +18,21 @@ public class AttributeMap { private final Set attributesToSync = new ObjectOpenHashSet<>(); private final Set attributesToUpdate = new ObjectOpenHashSet<>(); private final AttributeSupplier supplier; @@ -356,7 +356,7 @@ index 4c808c7ef336de74048f40bd1cc8b14131a9325d..a25d74592e89e3d6339479c6dc2b6f45 this.attributesToSync.add(instance); } } -@@ -44,7 +51,7 @@ public class AttributeMap { +@@ -39,7 +46,7 @@ public class AttributeMap { } public Collection getSyncableAttributes() { @@ -366,7 +366,7 @@ index 4c808c7ef336de74048f40bd1cc8b14131a9325d..a25d74592e89e3d6339479c6dc2b6f45 @Nullable diff --git a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -index 33527a1825119f3667fb3c7ccec318f2c7328ec9..61ed4d687120fcbb7b91863e400f3657ebcde687 100644 +index e6fd15c3172a951d6551cf3fb42f92f39f1cf7b8..75d8fe03558ba38caf46c826dfea5208f88bde52 100644 --- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java @@ -131,7 +131,7 @@ public class DefaultAttributes { @@ -379,7 +379,7 @@ index 33527a1825119f3667fb3c7ccec318f2c7328ec9..61ed4d687120fcbb7b91863e400f3657 .put(EntityType.PIGLIN, Piglin.createAttributes().build()) .put(EntityType.PIGLIN_BRUTE, PiglinBrute.createAttributes().build()) diff --git a/net/minecraft/world/entity/ai/control/MoveControl.java b/net/minecraft/world/entity/ai/control/MoveControl.java -index 0f9bf0cb0655a6ed449a86e99b17f89b4e3264df..1860b4ab2314f5da017313977c6423e735a4f96b 100644 +index cdd85c11a214db4829305eb54e0de9670a9241ac..88adfbb7998515f1f64b2d4121549179dc719375 100644 --- a/net/minecraft/world/entity/ai/control/MoveControl.java +++ b/net/minecraft/world/entity/ai/control/MoveControl.java @@ -29,6 +29,20 @@ public class MoveControl implements Control { @@ -426,10 +426,10 @@ index d7f9b3b2b1077ea10e8f64b87c8f4c4354e90858..713f62b34a91fa76f40e49a5e390145f this.lookAtCooldown--; this.getYRotD().ifPresent(rotationWanted -> this.mob.yHeadRot = this.rotateTowards(this.mob.yHeadRot, rotationWanted + 20.0F, this.yMaxRotSpeed)); diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java -index 4d715a29f1ad31e87977562bd0e2aeddb54ee082..e7ea944e77175ee4051b8e7361c502d0cc2115d5 100644 +index ed8920bb6d29ce49626bc716aa2c2ce938f6d92b..99845dde0c633714acefb0bb482d8422d946dd46 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java -@@ -42,11 +42,58 @@ public class Bat extends AmbientCreature { +@@ -43,11 +43,58 @@ public class Bat extends AmbientCreature { public Bat(EntityType entityType, Level level) { super(entityType, level); @@ -488,7 +488,7 @@ index 4d715a29f1ad31e87977562bd0e2aeddb54ee082..e7ea944e77175ee4051b8e7361c502d0 @Override public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; -@@ -98,7 +145,7 @@ public class Bat extends AmbientCreature { +@@ -99,7 +146,7 @@ public class Bat extends AmbientCreature { } public static AttributeSupplier.Builder createAttributes() { @@ -497,7 +497,7 @@ index 4d715a29f1ad31e87977562bd0e2aeddb54ee082..e7ea944e77175ee4051b8e7361c502d0 } public boolean isResting() { -@@ -129,6 +176,14 @@ public class Bat extends AmbientCreature { +@@ -130,6 +177,14 @@ public class Bat extends AmbientCreature { @Override protected void customServerAiStep(ServerLevel level) { @@ -512,11 +512,39 @@ index 4d715a29f1ad31e87977562bd0e2aeddb54ee082..e7ea944e77175ee4051b8e7361c502d0 super.customServerAiStep(level); BlockPos blockPos = this.blockPosition(); BlockPos blockPos1 = blockPos.above(); +diff --git a/net/minecraft/world/entity/animal/AbstractCow.java b/net/minecraft/world/entity/animal/AbstractCow.java +index 4e81bc7215c845b316bcd46ce29f49af7f986088..61e7300bbf272398b2faebf5e537d9c2ddedc6d6 100644 +--- a/net/minecraft/world/entity/animal/AbstractCow.java ++++ b/net/minecraft/world/entity/animal/AbstractCow.java +@@ -37,6 +37,7 @@ public abstract class AbstractCow extends Animal { + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables + this.goalSelector.addGoal(1, new PanicGoal(this, 2.0)); + this.goalSelector.addGoal(2, new BreedGoal(this, 1.0)); + this.goalSelector.addGoal(3, new TemptGoal(this, 1.25, itemStack -> level().purpurConfig.cowFeedMushrooms > 0 && (itemStack.is(net.minecraft.world.level.block.Blocks.RED_MUSHROOM.asItem()) || itemStack.is(net.minecraft.world.level.block.Blocks.BROWN_MUSHROOM.asItem())) || itemStack.is(ItemTags.COW_FOOD), false)); // Purpur - Cows eat mushrooms +@@ -82,13 +83,14 @@ public abstract class AbstractCow extends Animal { + + @Override + public InteractionResult mobInteract(Player player, InteractionHand hand) { ++ if (getRider() != null) return InteractionResult.PASS; // Purpur - Ridables + ItemStack itemInHand = player.getItemInHand(hand); + if (itemInHand.is(Items.BUCKET) && !this.isBaby()) { + // CraftBukkit start - Got milk? + org.bukkit.event.player.PlayerBucketFillEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerBucketFillEvent(player.level(), player, this.blockPosition(), this.blockPosition(), null, itemInHand, Items.MILK_BUCKET, hand); + if (event.isCancelled()) { + player.containerMenu.sendAllDataToRemote(); // Paper - Fix inventory desync +- return InteractionResult.PASS; ++ return tryRide(player, hand); // Purpur - Ridables + } + // CraftBukkit end + player.playSound(SoundEvents.COW_MILK, 1.0F, 1.0F); diff --git a/net/minecraft/world/entity/animal/AbstractFish.java b/net/minecraft/world/entity/animal/AbstractFish.java -index c0997c8c0f8ee4474d3acdd5938b1879c4e589a2..28ae152125ed83d8917674b6068f227f87890f30 100644 +index 363582056339f64dbe7e686b61451c095c538c00..2cf95769ec3a1662443ea31e1bc2ba01cb7b523e 100644 --- a/net/minecraft/world/entity/animal/AbstractFish.java +++ b/net/minecraft/world/entity/animal/AbstractFish.java -@@ -87,6 +87,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -88,6 +88,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { @Override protected void registerGoals() { super.registerGoals(); @@ -524,16 +552,16 @@ index c0997c8c0f8ee4474d3acdd5938b1879c4e589a2..28ae152125ed83d8917674b6068f227f 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)); -@@ -100,7 +101,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -101,7 +102,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { @Override public void travel(Vec3 travelVector) { - if (this.isControlledByLocalInstance() && this.isInWater()) { + if (this.isInWater()) { - this.moveRelative(0.01F, travelVector); + this.moveRelative(getRider() != null ? getSpeed() : 0.01F, travelVector); // Purpur - Ridables this.move(MoverType.SELF, this.getDeltaMovement()); this.setDeltaMovement(this.getDeltaMovement().scale(0.9)); if (this.getTarget() == null) { -@@ -160,7 +161,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 block) { } @@ -542,7 +570,7 @@ index c0997c8c0f8ee4474d3acdd5938b1879c4e589a2..28ae152125ed83d8917674b6068f227f private final AbstractFish fish; FishMoveControl(AbstractFish mob) { -@@ -168,14 +169,22 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -169,14 +170,22 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { this.fish = mob; } @@ -568,10 +596,10 @@ index c0997c8c0f8ee4474d3acdd5938b1879c4e589a2..28ae152125ed83d8917674b6068f227f double d = this.wantedX - this.fish.getX(); double d1 = this.wantedY - this.fish.getY(); diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index 646bdd1c5d5a8b6459ee8b94e887d3d19442ea05..1c27e44ca6744150e8a107a00bb00fb4784acf3b 100644 +index a6fd3a16e7a9e34ad582601f9ef22d98346fc31c..e55507fa09001b431519ef9c76bf444d7df3f7ea 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -145,6 +145,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -149,6 +149,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { public Bee(EntityType entityType, Level level) { super(entityType, level); @@ -579,7 +607,7 @@ index 646bdd1c5d5a8b6459ee8b94e887d3d19442ea05..1c27e44ca6744150e8a107a00bb00fb4 // Paper start - Fix MC-167279 class BeeFlyingMoveControl extends FlyingMoveControl { public BeeFlyingMoveControl(final Mob entity, final int maxPitchChange, final boolean noGravity) { -@@ -153,11 +154,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -157,11 +158,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override public void tick() { @@ -604,7 +632,7 @@ index 646bdd1c5d5a8b6459ee8b94e887d3d19442ea05..1c27e44ca6744150e8a107a00bb00fb4 } this.moveControl = new BeeFlyingMoveControl(this, 20, true); // Paper end - Fix MC-167279 -@@ -169,6 +183,40 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -173,6 +187,40 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.setPathfindingMalus(PathType.FENCE, -1.0F); } @@ -645,7 +673,7 @@ index 646bdd1c5d5a8b6459ee8b94e887d3d19442ea05..1c27e44ca6744150e8a107a00bb00fb4 @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); -@@ -183,6 +231,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -187,6 +235,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override protected void registerGoals() { @@ -653,7 +681,7 @@ index 646bdd1c5d5a8b6459ee8b94e887d3d19442ea05..1c27e44ca6744150e8a107a00bb00fb4 this.goalSelector.addGoal(0, new Bee.BeeAttackGoal(this, 1.4F, true)); this.goalSelector.addGoal(1, new Bee.BeeEnterHiveGoal()); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0)); -@@ -200,6 +249,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -204,6 +253,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)); @@ -661,7 +689,7 @@ index 646bdd1c5d5a8b6459ee8b94e887d3d19442ea05..1c27e44ca6744150e8a107a00bb00fb4 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)); -@@ -1084,15 +1134,15 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -1083,15 +1133,15 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } } @@ -681,10 +709,10 @@ index 646bdd1c5d5a8b6459ee8b94e887d3d19442ea05..1c27e44ca6744150e8a107a00bb00fb4 } diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index de97fb5a70a3a966db3f1136ac60fbb5fe63e2e1..2723f04de1156f8e396f5bee2afdc044626f4dcb 100644 +index 7894db23663c4647742f543195b610bd7e1f3360..74a44f97dcf4fabeac28a2f8b31e9b717d47ea49 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java -@@ -93,10 +93,36 @@ public class Cat extends TamableAnimal implements VariantHolder itemStack.is(ItemTags.CAT_FOOD), true); + this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true); this.goalSelector.addGoal(1, new FloatGoal(this)); + this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables this.goalSelector.addGoal(1, new TamableAnimal.TamableAnimalPanicGoal(1.5)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(3, new Cat.CatRelaxOnOwnerGoal(this)); -@@ -109,6 +135,7 @@ public class Cat extends TamableAnimal implements VariantHolder(this, Rabbit.class, false, null)); this.targetSelector.addGoal(1, new NonTameRandomTargetGoal<>(this, Turtle.class, false, Turtle.BABY_ON_LAND_SELECTOR)); } -@@ -360,6 +387,7 @@ public class Cat extends TamableAnimal implements VariantHolder itemStack.is(ItemTags.CHICKEN_FOOD), false)); diff --git a/net/minecraft/world/entity/animal/Cod.java b/net/minecraft/world/entity/animal/Cod.java -index 708bcc39e7242292d5d5bfcaf599e3738628df9b..6a19086e272363701260801f3c6db9b5c91b8ef5 100644 +index 75509be5b9162c1f7f91f2290ef2d80171ae61df..651c9243902e3c48fb438913974e996d67d6f746 100644 --- a/net/minecraft/world/entity/animal/Cod.java +++ b/net/minecraft/world/entity/animal/Cod.java @@ -13,6 +13,18 @@ public class Cod extends AbstractSchoolingFish { @@ -793,10 +821,10 @@ index 708bcc39e7242292d5d5bfcaf599e3738628df9b..6a19086e272363701260801f3c6db9b5 public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index 8c1f74c6be53cbf48bd6b5641511359578801c08..656babc0c8810a85eb9f78ced1f3ad9551fdc286 100644 +index 42c79a88679d2100528150d490554a75589e1ad8..ff1b8c93baccf1d417ef0f9338a6f8d66716dafc 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java -@@ -38,9 +38,27 @@ public class Cow extends Animal { +@@ -28,6 +28,23 @@ public class Cow extends AbstractCow { super(entityType, level); } @@ -818,35 +846,15 @@ index 8c1f74c6be53cbf48bd6b5641511359578801c08..656babc0c8810a85eb9f78ced1f3ad95 + // Purpur end - Ridables + @Override - protected void registerGoals() { - this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables - this.goalSelector.addGoal(1, new PanicGoal(this, 2.0)); - this.goalSelector.addGoal(2, new BreedGoal(this, 1.0)); - this.goalSelector.addGoal(3, new TemptGoal(this, 1.25, itemStack -> level().purpurConfig.cowFeedMushrooms > 0 && (itemStack.is(net.minecraft.world.level.block.Blocks.RED_MUSHROOM.asItem()) || itemStack.is(net.minecraft.world.level.block.Blocks.BROWN_MUSHROOM.asItem())) || itemStack.is(ItemTags.COW_FOOD), false)); // Purpur - Cows eat mushrooms -@@ -86,13 +104,14 @@ public class Cow extends Animal { - - @Override - public InteractionResult mobInteract(Player player, InteractionHand hand) { -+ if (getRider() != null) return InteractionResult.PASS; // Purpur - Ridables - ItemStack itemInHand = player.getItemInHand(hand); - if (itemInHand.is(Items.BUCKET) && !this.isBaby()) { - // CraftBukkit start - Got milk? - org.bukkit.event.player.PlayerBucketFillEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerBucketFillEvent((ServerLevel) player.level(), player, this.blockPosition(), this.blockPosition(), null, itemInHand, Items.MILK_BUCKET, hand); - if (event.isCancelled()) { - player.containerMenu.sendAllDataToRemote(); // Paper - Fix inventory desync -- return InteractionResult.PASS; -+ return tryRide(player, hand); // Purpur - Ridables - } - // CraftBukkit end - player.playSound(SoundEvents.COW_MILK, 1.0F, 1.0F); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java -index 8be0dd148d88dfdfb9efab91124c829e60b5dea5..35bce598bb5857356823594d2a001006ce19f835 100644 +index bca2e4659f4afdd7106f77e32af1943e4d276f5e..144b163a4a82997ca88e906bbadcf5835636aece 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java -@@ -72,14 +72,82 @@ public class Dolphin extends AgeableWaterCreature { - public static final Predicate ALLOWED_ITEMS = itemEntity -> !itemEntity.hasPickUpDelay() && itemEntity.isAlive() && itemEntity.isInWater(); - public static final float BABY_SCALE = 0.65F; +@@ -74,14 +74,82 @@ public class Dolphin extends AgeableWaterCreature { + @Nullable + public BlockPos treasurePos; private boolean isNaturallyAggressiveToPlayers; // Purpur - Dolphins naturally aggressive to players chance + private int spitCooldown; // Purpur - Ridables @@ -928,7 +936,7 @@ index 8be0dd148d88dfdfb9efab91124c829e60b5dea5..35bce598bb5857356823594d2a001006 @Nullable @Override public SpawnGroupData finalizeSpawn( -@@ -172,6 +240,7 @@ public class Dolphin extends AgeableWaterCreature { +@@ -158,6 +226,7 @@ public class Dolphin extends AgeableWaterCreature { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.2000000476837158D, true)); // Purpur - Dolphins naturally aggressive to players chance @@ -936,7 +944,7 @@ index 8be0dd148d88dfdfb9efab91124c829e60b5dea5..35bce598bb5857356823594d2a001006 this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this)); this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0)); this.goalSelector.addGoal(4, new RandomSwimmingGoal(this, 1.0, 10)); -@@ -182,6 +251,7 @@ public class Dolphin extends AgeableWaterCreature { +@@ -168,6 +237,7 @@ public class Dolphin extends AgeableWaterCreature { 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.0, 1.0)); @@ -944,7 +952,7 @@ index 8be0dd148d88dfdfb9efab91124c829e60b5dea5..35bce598bb5857356823594d2a001006 this.targetSelector.addGoal(1, new HurtByTargetGoal(this, Guardian.class).setAlertOthers()); this.targetSelector.addGoal(2, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (ignored, ignored2) -> isNaturallyAggressiveToPlayers)); // Purpur - Dolphins naturally aggressive to players chance } -@@ -227,7 +297,7 @@ public class Dolphin extends AgeableWaterCreature { +@@ -213,7 +283,7 @@ public class Dolphin extends AgeableWaterCreature { @Override protected boolean canRide(Entity entity) { @@ -953,7 +961,7 @@ index 8be0dd148d88dfdfb9efab91124c829e60b5dea5..35bce598bb5857356823594d2a001006 } @Override -@@ -256,6 +326,11 @@ public class Dolphin extends AgeableWaterCreature { +@@ -242,6 +312,11 @@ public class Dolphin extends AgeableWaterCreature { @Override public void tick() { super.tick(); @@ -966,10 +974,10 @@ index 8be0dd148d88dfdfb9efab91124c829e60b5dea5..35bce598bb5857356823594d2a001006 this.setAirSupply(this.getMaxAirSupply()); } else { diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 2455324b49e28c57e1b154fd6d9a4d82ee289234..d31ffaba61098568c3134d0a10e1513b10dc8728 100644 +index 4aae42396bd3abb131efe336d7b774384897671d..eb25d655140e425208ee9eeae24ebb756f1b7306 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -129,6 +129,44 @@ public class Fox extends Animal implements VariantHolder { +@@ -141,6 +141,44 @@ public class Fox extends Animal { this.getNavigation().setRequiredPathLength(32.0F); } @@ -1014,7 +1022,7 @@ index 2455324b49e28c57e1b154fd6d9a4d82ee289234..d31ffaba61098568c3134d0a10e1513b @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); -@@ -148,6 +186,7 @@ public class Fox extends Animal implements VariantHolder { +@@ -160,6 +198,7 @@ public class Fox extends Animal { this, AbstractFish.class, 20, false, false, (entity, level) -> entity instanceof AbstractSchoolingFish ); this.goalSelector.addGoal(0, new Fox.FoxFloatGoal()); @@ -1022,7 +1030,7 @@ index 2455324b49e28c57e1b154fd6d9a4d82ee289234..d31ffaba61098568c3134d0a10e1513b this.goalSelector.addGoal(0, new ClimbOnTopOfPowderSnowGoal(this, this.level())); this.goalSelector.addGoal(1, new Fox.FaceplantGoal()); this.goalSelector.addGoal(2, new Fox.FoxPanicGoal(2.2)); -@@ -175,6 +214,7 @@ public class Fox extends Animal implements VariantHolder { +@@ -185,6 +224,7 @@ public class Fox extends Animal { 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()); @@ -1030,7 +1038,7 @@ index 2455324b49e28c57e1b154fd6d9a4d82ee289234..d31ffaba61098568c3134d0a10e1513b this.targetSelector .addGoal( 3, -@@ -1095,15 +1135,15 @@ public class Fox extends Animal implements VariantHolder { +@@ -1118,15 +1158,15 @@ public class Fox extends Animal { } } @@ -1049,7 +1057,7 @@ index 2455324b49e28c57e1b154fd6d9a4d82ee289234..d31ffaba61098568c3134d0a10e1513b } } -@@ -1139,15 +1179,15 @@ public class Fox extends Animal implements VariantHolder { +@@ -1162,15 +1202,15 @@ public class Fox extends Animal { } } @@ -1069,10 +1077,10 @@ index 2455324b49e28c57e1b154fd6d9a4d82ee289234..d31ffaba61098568c3134d0a10e1513b } } diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java -index 46921562c9c5caf7e04ee180325a638273d6bad2..223c4796f659a24062a719045e484a22d31ab2f0 100644 +index 91897447d7ef35af3300443e8eb96340081fed48..3a78342a9ce9b5393a280530b50a8c843e201845 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java -@@ -73,9 +73,28 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -74,9 +74,28 @@ public class IronGolem extends AbstractGolem implements NeutralMob { } // Purpur end - Summoner API @@ -1101,7 +1109,7 @@ index 46921562c9c5caf7e04ee180325a638273d6bad2..223c4796f659a24062a719045e484a22 this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9, 32.0F)); this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6, false)); -@@ -83,6 +102,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -84,6 +103,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)); @@ -1109,7 +1117,7 @@ index 46921562c9c5caf7e04ee180325a638273d6bad2..223c4796f659a24062a719045e484a22 this.targetSelector.addGoal(1, new DefendVillageTargetGoal(this)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); -@@ -271,12 +291,12 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -272,12 +292,12 @@ public class IronGolem extends AbstractGolem implements NeutralMob { protected InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); if (!itemInHand.is(Items.IRON_INGOT)) { @@ -1125,10 +1133,10 @@ index 46921562c9c5caf7e04ee180325a638273d6bad2..223c4796f659a24062a719045e484a22 float f = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; this.playSound(SoundEvents.IRON_GOLEM_REPAIR, 1.0F, f); diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index a8aeb79b1c1413d74a5d18a57bd4ba4beca6039c..1292146341022483f78a9128ef9d7a88089274a0 100644 +index 0931bab3f52ccc4e405be22559323df90bcc065e..f04342dd4addb2be47533f12a2a475f12c1869f1 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -55,6 +55,23 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder drops = this.generateDefaultDrops(serverLevel, itemInHand); org.bukkit.event.player.PlayerShearEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemInHand, hand, drops); if (event != null) { @@ -1162,10 +1170,10 @@ index a8aeb79b1c1413d74a5d18a57bd4ba4beca6039c..1292146341022483f78a9128ef9d7a88 // Paper end - custom shear drops } diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index e193696b2e3eb1c1c689c05592ab4318a98772ad..d26a8658c8c56c3b0df4e5908de1ac23ac2dd351 100644 +index 48c8fdfea8687f37187b6092c285275c12963ea0..b8780911350ac5f4f10acdbed2b13523c8692344 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java -@@ -62,6 +62,23 @@ public class Ocelot extends Animal { +@@ -63,6 +63,23 @@ public class Ocelot extends Animal { this.reassessTrustingGoals(); } @@ -1189,7 +1197,7 @@ index e193696b2e3eb1c1c689c05592ab4318a98772ad..d26a8658c8c56c3b0df4e5908de1ac23 public boolean isTrusting() { return this.entityData.get(DATA_TRUSTING); } -@@ -93,12 +110,14 @@ public class Ocelot extends Animal { +@@ -94,12 +111,14 @@ public class Ocelot extends Animal { protected void registerGoals() { this.temptGoal = new Ocelot.OcelotTemptGoal(this, 0.6, itemStack -> itemStack.is(ItemTags.OCELOT_FOOD), true); this.goalSelector.addGoal(1, new FloatGoal(this)); @@ -1205,10 +1213,10 @@ index e193696b2e3eb1c1c689c05592ab4318a98772ad..d26a8658c8c56c3b0df4e5908de1ac23 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, false, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/net/minecraft/world/entity/animal/Panda.java b/net/minecraft/world/entity/animal/Panda.java -index 283ddf7d13a17c0a6df5a52b7fd26ed7b7a4826b..19aa39af6685a03eb584820853239a3f4fa1a515 100644 +index ecd85f3e33f80084b9ee06c9ff1f57b73399be50..44af6a2bcb1ba60a487555c5240b38798798b769 100644 --- a/net/minecraft/world/entity/animal/Panda.java +++ b/net/minecraft/world/entity/animal/Panda.java -@@ -105,6 +105,32 @@ public class Panda extends Animal { +@@ -106,6 +106,32 @@ public class Panda extends Animal { } } @@ -1241,7 +1249,7 @@ index 283ddf7d13a17c0a6df5a52b7fd26ed7b7a4826b..19aa39af6685a03eb584820853239a3f @Override protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) { return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot(); -@@ -258,6 +284,7 @@ public class Panda extends Animal { +@@ -259,6 +285,7 @@ public class Panda extends Animal { @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -1249,7 +1257,7 @@ index 283ddf7d13a17c0a6df5a52b7fd26ed7b7a4826b..19aa39af6685a03eb584820853239a3f this.goalSelector.addGoal(2, new Panda.PandaPanicGoal(this, 2.0)); this.goalSelector.addGoal(2, new Panda.PandaBreedGoal(this, 1.0)); this.goalSelector.addGoal(3, new Panda.PandaAttackGoal(this, 1.2F, true)); -@@ -273,6 +300,7 @@ public class Panda extends Animal { +@@ -274,6 +301,7 @@ public class Panda extends Animal { this.goalSelector.addGoal(12, new Panda.PandaRollGoal(this)); this.goalSelector.addGoal(13, new FollowParentGoal(this, 1.25)); this.goalSelector.addGoal(14, new WaterAvoidingRandomStrollGoal(this, 1.0)); @@ -1257,7 +1265,7 @@ index 283ddf7d13a17c0a6df5a52b7fd26ed7b7a4826b..19aa39af6685a03eb584820853239a3f this.targetSelector.addGoal(1, new Panda.PandaHurtByTargetGoal(this).setAlertOthers(new Class[0])); } -@@ -616,7 +644,7 @@ public class Panda extends Animal { +@@ -617,7 +645,7 @@ public class Panda extends Animal { public InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); if (this.isScared()) { @@ -1266,7 +1274,7 @@ index 283ddf7d13a17c0a6df5a52b7fd26ed7b7a4826b..19aa39af6685a03eb584820853239a3f } else if (this.isOnBack()) { this.setOnBack(false); return InteractionResult.SUCCESS; -@@ -652,7 +680,7 @@ public class Panda extends Animal { +@@ -653,7 +681,7 @@ public class Panda extends Animal { return InteractionResult.SUCCESS_SERVER; } else { @@ -1275,7 +1283,7 @@ index 283ddf7d13a17c0a6df5a52b7fd26ed7b7a4826b..19aa39af6685a03eb584820853239a3f } } -@@ -964,7 +992,7 @@ public class Panda extends Animal { +@@ -961,7 +989,7 @@ public class Panda extends Animal { } } @@ -1284,7 +1292,7 @@ index 283ddf7d13a17c0a6df5a52b7fd26ed7b7a4826b..19aa39af6685a03eb584820853239a3f private final Panda panda; public PandaMoveControl(Panda mob) { -@@ -973,9 +1001,9 @@ public class Panda extends Animal { +@@ -970,9 +998,9 @@ public class Panda extends Animal { } @Override @@ -1297,10 +1305,10 @@ index 283ddf7d13a17c0a6df5a52b7fd26ed7b7a4826b..19aa39af6685a03eb584820853239a3f } } diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java -index 2a1f4dd963f7c2d5b34eb6ab67142347c5eae0e7..907cb50c58f067f1e0ca15583d39924fd76f1ed0 100644 +index ca661c215d2eb719392a30c7b917bd622524c4dc..573efbc5f5f4ad0be30868c7faa058e68bf2fd67 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java -@@ -124,12 +124,68 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder entityType, Level level) { super(entityType, level); @@ -1370,7 +1378,7 @@ index 2a1f4dd963f7c2d5b34eb6ab67142347c5eae0e7..907cb50c58f067f1e0ca15583d39924f @Nullable @Override public SpawnGroupData finalizeSpawn( -@@ -150,9 +206,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder itemStack.is(Items.CARROT_ON_A_STICK), false)); diff --git a/net/minecraft/world/entity/animal/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java -index fbd35f074a3045d483aabd9bc7e1c9c4f10a3167..711ed0d753494a92a003fc683146f289505ed7f6 100644 +index d018b1a967557cfae0d3227d8f43d281a78a22bc..4561b590b0068bfbcfd990bbf8b6640c0bd1493c 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java @@ -59,6 +59,7 @@ public class PolarBear extends Animal implements NeutralMob { @@ -1500,10 +1508,10 @@ index fbd35f074a3045d483aabd9bc7e1c9c4f10a3167..711ed0d753494a92a003fc683146f289 public float getStandingAnimationScale(float partialTick) { diff --git a/net/minecraft/world/entity/animal/Pufferfish.java b/net/minecraft/world/entity/animal/Pufferfish.java -index d94a7cfcd0f7a15ce97d3b12daa8b2c71acf997a..f7e9abf778186ad1c78dbe411980a83c5e68792e 100644 +index 4a7201fe9e946fc20ed04e729d00f7986a748bad..c35973498b0abae2dafa63f30ed5e6ca87f6baa5 100644 --- a/net/minecraft/world/entity/animal/Pufferfish.java +++ b/net/minecraft/world/entity/animal/Pufferfish.java -@@ -45,6 +45,18 @@ public class Pufferfish extends AbstractFish { +@@ -46,6 +46,18 @@ public class Pufferfish extends AbstractFish { this.refreshDimensions(); } @@ -1523,18 +1531,18 @@ index d94a7cfcd0f7a15ce97d3b12daa8b2c71acf997a..f7e9abf778186ad1c78dbe411980a83c protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index b2cbe9f7a771dbfc381effa0821d44421c98b33e..8cac46951938c80fae3499e8b53709c25d86e9bd 100644 +index e9445749c5264bd0ce7c426845cb342d34dea713..338a1d3f1352f49ba5b53c55a49abce3ded2b0c0 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java -@@ -83,6 +83,7 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -90,6 +90,7 @@ public class Rabbit extends Animal { private boolean wasOnGround; private int jumpDelayTicks; - public int moreCarrotTicks; + public int moreCarrotTicks = 0; + private boolean actualJump; // Purpur - Ridables public Rabbit(EntityType entityType, Level level) { super(entityType, level); -@@ -91,9 +92,55 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -98,9 +99,55 @@ public class Rabbit extends Animal { //this.setSpeedModifier(0.0); // CraftBukkit } @@ -1590,7 +1598,7 @@ index b2cbe9f7a771dbfc381effa0821d44421c98b33e..8cac46951938c80fae3499e8b53709c2 this.goalSelector.addGoal(1, new ClimbOnTopOfPowderSnowGoal(this, this.level())); this.goalSelector.addGoal(1, new Rabbit.RabbitPanicGoal(this, 2.2)); this.goalSelector.addGoal(2, new BreedGoal(this, 0.8)); -@@ -108,6 +155,14 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -115,6 +162,14 @@ public class Rabbit extends Animal { @Override protected float getJumpPower() { @@ -1605,7 +1613,7 @@ index b2cbe9f7a771dbfc381effa0821d44421c98b33e..8cac46951938c80fae3499e8b53709c2 float f = 0.3F; if (this.moveControl.getSpeedModifier() <= 0.6) { f = 0.2F; -@@ -175,6 +230,12 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -182,6 +237,12 @@ public class Rabbit extends Animal { @Override public void customServerAiStep(ServerLevel level) { @@ -1618,7 +1626,7 @@ index b2cbe9f7a771dbfc381effa0821d44421c98b33e..8cac46951938c80fae3499e8b53709c2 if (this.jumpDelayTicks > 0) { this.jumpDelayTicks--; } -@@ -483,7 +544,7 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -510,7 +571,7 @@ public class Rabbit extends Animal { } } @@ -1627,7 +1635,7 @@ index b2cbe9f7a771dbfc381effa0821d44421c98b33e..8cac46951938c80fae3499e8b53709c2 private final Rabbit rabbit; private double nextJumpSpeed; -@@ -493,14 +554,14 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -520,14 +581,14 @@ public class Rabbit extends Animal { } @Override @@ -1645,10 +1653,10 @@ index b2cbe9f7a771dbfc381effa0821d44421c98b33e..8cac46951938c80fae3499e8b53709c2 @Override diff --git a/net/minecraft/world/entity/animal/Salmon.java b/net/minecraft/world/entity/animal/Salmon.java -index 41366f7b9af176a33b20ea26dd53d50994d2c600..ebbd6d39c3f5d6c66445c2c743785ed369408389 100644 +index 1786205346bb02835b10676155b65d2f11f0c221..2b60d92eec3192416b0c39ddaa1fa490d15a6137 100644 --- a/net/minecraft/world/entity/animal/Salmon.java +++ b/net/minecraft/world/entity/animal/Salmon.java -@@ -35,6 +35,18 @@ public class Salmon extends AbstractSchoolingFish implements VariantHolder stack.is(ItemTags.SHEEP_FOOD), false)); diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index a26d57a16d06adb7fbf7abf1baeda2ab1824853d..6a4a43b86d4b3812bba7b7d8bdb95eb06d234355 100644 +index 67c8f1e82c775818f906eeaa639e55d7c02834c6..aca62391131333d604d21c9aaf2bcea620dc51b3 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java -@@ -61,12 +61,31 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -62,12 +62,31 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM } // Purpur end - Summoner API @@ -1736,7 +1711,7 @@ index a26d57a16d06adb7fbf7abf1baeda2ab1824853d..6a4a43b86d4b3812bba7b7d8bdb95eb0 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Mob.class, 10, true, false, (entity, level) -> entity instanceof Enemy)); } -@@ -113,6 +132,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -112,6 +131,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM return; } @@ -1744,7 +1719,7 @@ index a26d57a16d06adb7fbf7abf1baeda2ab1824853d..6a4a43b86d4b3812bba7b7d8bdb95eb0 BlockState blockState = Blocks.SNOW.defaultBlockState(); for (int i = 0; i < 4; i++) { -@@ -155,7 +175,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -154,7 +174,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM org.bukkit.event.player.PlayerShearEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemInHand, hand, drops); if (event != null) { if (event.isCancelled()) { @@ -1753,7 +1728,7 @@ index a26d57a16d06adb7fbf7abf1baeda2ab1824853d..6a4a43b86d4b3812bba7b7d8bdb95eb0 } drops = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getDrops()); // Paper end - custom shear drops -@@ -176,7 +196,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -175,7 +195,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM return InteractionResult.SUCCESS; // Purpur end - Snowman drop and put back pumpkin } else { @@ -1763,7 +1738,7 @@ index a26d57a16d06adb7fbf7abf1baeda2ab1824853d..6a4a43b86d4b3812bba7b7d8bdb95eb0 } diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index c776d40896a6514ab9c66df206c93469ec682b23..e3f43e8c6ddbae289a82157cab4beb18f682dd75 100644 +index 2e51e64991d326fc055520b6fefc76e80f7c2d97..21ff0b49a1df9b8a95cb2fdf7b43d9a676a497a6 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java @@ -69,9 +69,32 @@ public class Squid extends AgeableWaterCreature { @@ -1799,7 +1774,7 @@ index c776d40896a6514ab9c66df206c93469ec682b23..e3f43e8c6ddbae289a82157cab4beb18 this.goalSelector.addGoal(1, new Squid.SquidFleeGoal()); } -@@ -327,6 +350,37 @@ public class Squid extends AgeableWaterCreature { +@@ -325,6 +348,37 @@ public class Squid extends AgeableWaterCreature { @Override public void tick() { @@ -1838,10 +1813,10 @@ index c776d40896a6514ab9c66df206c93469ec682b23..e3f43e8c6ddbae289a82157cab4beb18 if (noActionTime > 100) { this.squid.movementVector = Vec3.ZERO; diff --git a/net/minecraft/world/entity/animal/TropicalFish.java b/net/minecraft/world/entity/animal/TropicalFish.java -index fa5f7f7d54083f9ea2095dd44362069d00e0b9a5..1e31a39b276e1c5ae767da7af0b536007c87189e 100644 +index 89e14f04328995e6491c01321789be0bf9ddd438..d7bea58644dd707b835e0c728b2c89c697c7e554 100644 --- a/net/minecraft/world/entity/animal/TropicalFish.java +++ b/net/minecraft/world/entity/animal/TropicalFish.java -@@ -67,6 +67,18 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder +@@ -76,6 +76,18 @@ public class TropicalFish extends AbstractSchoolingFish { super(entityType, level); } @@ -1861,10 +1836,10 @@ index fa5f7f7d54083f9ea2095dd44362069d00e0b9a5..1e31a39b276e1c5ae767da7af0b53600 return "entity.minecraft.tropical_fish.predefined." + variantId; } diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java -index 0e2d2dd3f2ef2783f3773a9a05c4f718991f7784..cf8daa9897b978ffb89e01d63257a9ea35dcc8a4 100644 +index d24ddf8a585395c0f7b1cd5a61aaea0516636d93..7c97f917b0cc5652c20abdd26428cccad10b8757 100644 --- a/net/minecraft/world/entity/animal/Turtle.java +++ b/net/minecraft/world/entity/animal/Turtle.java -@@ -84,6 +84,23 @@ public class Turtle extends Animal { +@@ -85,6 +85,23 @@ public class Turtle extends Animal { this.moveControl = new Turtle.TurtleMoveControl(this); } @@ -1886,9 +1861,9 @@ index 0e2d2dd3f2ef2783f3773a9a05c4f718991f7784..cf8daa9897b978ffb89e01d63257a9ea + // Purpur end - Ridables + public void setHomePos(BlockPos homePos) { - this.entityData.set(HOME_POS, homePos); + this.homePos = homePos; } -@@ -188,6 +205,7 @@ public class Turtle extends Animal { +@@ -144,6 +161,7 @@ public class Turtle extends Animal { @Override protected void registerGoals() { @@ -1896,7 +1871,7 @@ index 0e2d2dd3f2ef2783f3773a9a05c4f718991f7784..cf8daa9897b978ffb89e01d63257a9ea this.goalSelector.addGoal(0, new Turtle.TurtlePanicGoal(this, 1.2)); this.goalSelector.addGoal(1, new Turtle.TurtleBreedGoal(this, 1.0)); this.goalSelector.addGoal(1, new Turtle.TurtleLayEggGoal(this, 1.0)); -@@ -539,12 +557,14 @@ public class Turtle extends Animal { +@@ -492,12 +510,14 @@ public class Turtle extends Animal { } } @@ -1912,7 +1887,7 @@ index 0e2d2dd3f2ef2783f3773a9a05c4f718991f7784..cf8daa9897b978ffb89e01d63257a9ea } private void updateSpeed() { -@@ -563,7 +583,7 @@ public class Turtle extends Animal { +@@ -516,7 +536,7 @@ public class Turtle extends Animal { } @Override @@ -1921,7 +1896,7 @@ index 0e2d2dd3f2ef2783f3773a9a05c4f718991f7784..cf8daa9897b978ffb89e01d63257a9ea this.updateSpeed(); if (this.operation == MoveControl.Operation.MOVE_TO && !this.turtle.getNavigation().isDone()) { double d = this.wantedX - this.turtle.getX(); -@@ -577,7 +597,7 @@ public class Turtle extends Animal { +@@ -530,7 +550,7 @@ public class Turtle extends Animal { float f = (float)(Mth.atan2(d2, d) * 180.0F / (float)Math.PI) - 90.0F; this.turtle.setYRot(this.rotlerp(this.turtle.getYRot(), f, 90.0F)); this.turtle.yBodyRot = this.turtle.getYRot(); @@ -1930,56 +1905,11 @@ index 0e2d2dd3f2ef2783f3773a9a05c4f718991f7784..cf8daa9897b978ffb89e01d63257a9ea this.turtle.setSpeed(Mth.lerp(0.125F, this.turtle.getSpeed(), f1)); this.turtle.setDeltaMovement(this.turtle.getDeltaMovement().add(0.0, this.turtle.getSpeed() * d1 * 0.1, 0.0)); } -diff --git a/net/minecraft/world/entity/animal/Wolf.java b/net/minecraft/world/entity/animal/Wolf.java -index 3b09dd88f843843be62a75776c4d8ebdf9195ae7..75f592f6d7d2cf2faf8989de4c4f4b0fd125d53a 100644 ---- a/net/minecraft/world/entity/animal/Wolf.java -+++ b/net/minecraft/world/entity/animal/Wolf.java -@@ -180,9 +180,32 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder(this, Llama.class, 24.0F, 1.5, 1.5)); -@@ -195,6 +218,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -247,6 +282,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -243,6 +278,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("allayBrain"); @@ -2042,10 +1972,10 @@ index aafb32295d4ce239609bb62e6bdf2261739f7aa0..b399a1220496d38cef252fd2d43b31b2 profilerFiller.pop(); profilerFiller.push("allayActivityUpdate"); diff --git a/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/net/minecraft/world/entity/animal/armadillo/Armadillo.java -index dfdbcb31458095a71c187efc2774ecc4945dd11b..87a190d8646d8bbed8c182f9f0f7d8c398e63d26 100644 +index b72e07ad954efa7f26f876a59f428086b40d9bb2..2b38e942492b3324683e05d36ed906462da92ac4 100644 --- a/net/minecraft/world/entity/animal/armadillo/Armadillo.java +++ b/net/minecraft/world/entity/animal/armadillo/Armadillo.java -@@ -80,6 +80,23 @@ public class Armadillo extends Animal { +@@ -81,6 +81,23 @@ public class Armadillo extends Animal { return Animal.createAnimalAttributes().add(Attributes.MAX_HEALTH, 12.0).add(Attributes.MOVEMENT_SPEED, 0.14); } @@ -2070,10 +2000,10 @@ index dfdbcb31458095a71c187efc2774ecc4945dd11b..87a190d8646d8bbed8c182f9f0f7d8c3 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 9faa929734035c167e54569ce34d841291856589..2054e4624da0c9b04ea69b9bf39443c4574d48be 100644 +index 233025bc1d4ba2590223def9b206140c68ea5f26..f3f0f5d7fe79e87b893aa52113f02a774ccc057a 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -115,6 +115,23 @@ public class Axolotl extends Animal implements VariantHolder, B +@@ -120,6 +120,23 @@ public class Axolotl extends Animal implements Bucketable { this.lookControl = new Axolotl.AxolotlLookControl(this, 20); } @@ -2097,7 +2027,7 @@ index 9faa929734035c167e54569ce34d841291856589..2054e4624da0c9b04ea69b9bf39443c4 @Override public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; -@@ -304,6 +321,7 @@ public class Axolotl extends Animal implements VariantHolder, B +@@ -329,6 +346,7 @@ public class Axolotl extends Animal implements Bucketable { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("axolotlBrain"); @@ -2105,7 +2035,7 @@ index 9faa929734035c167e54569ce34d841291856589..2054e4624da0c9b04ea69b9bf39443c4 this.getBrain().tick(level, this); profilerFiller.pop(); profilerFiller.push("axolotlActivityUpdate"); -@@ -555,23 +573,31 @@ public class Axolotl extends Animal implements VariantHolder, B +@@ -578,23 +596,31 @@ public class Axolotl extends Animal implements Bucketable { } @Override @@ -2140,10 +2070,10 @@ index 9faa929734035c167e54569ce34d841291856589..2054e4624da0c9b04ea69b9bf39443c4 super.tick(); } diff --git a/net/minecraft/world/entity/animal/camel/Camel.java b/net/minecraft/world/entity/animal/camel/Camel.java -index 3ac169f83c5619b5c00c866354a2e066a0a738cc..11311d2ec37d825e73e2218e60e2606dd3a25a1d 100644 +index 6336fb58f4314be2fe987d7e3de258d977369417..3d4efc2918fd10a63065a052d9e460b49489cf00 100644 --- a/net/minecraft/world/entity/animal/camel/Camel.java +++ b/net/minecraft/world/entity/animal/camel/Camel.java -@@ -83,6 +83,13 @@ public class Camel extends AbstractHorse { +@@ -89,6 +89,13 @@ public class Camel extends AbstractHorse { groundPathNavigation.setCanWalkOverFences(true); } @@ -2158,10 +2088,10 @@ index 3ac169f83c5619b5c00c866354a2e066a0a738cc..11311d2ec37d825e73e2218e60e2606d public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); diff --git a/net/minecraft/world/entity/animal/frog/Frog.java b/net/minecraft/world/entity/animal/frog/Frog.java -index 12c655b60087a2f6122ffa508b3224159d8777b0..9a400c8bf2b54aa5fbcbe65b61670cac5fbebf05 100644 +index 8ffbe420528cd63f30f9b41d4fb0a6519042eadc..054811d807c56018617dc4a8e10af87ed15ad00c 100644 --- a/net/minecraft/world/entity/animal/frog/Frog.java +++ b/net/minecraft/world/entity/animal/frog/Frog.java -@@ -106,6 +106,8 @@ public class Frog extends Animal implements VariantHolder> { +@@ -105,6 +105,8 @@ public class Frog extends Animal { public final AnimationState croakAnimationState = new AnimationState(); public final AnimationState tongueAnimationState = new AnimationState(); public final AnimationState swimIdleAnimationState = new AnimationState(); @@ -2170,7 +2100,7 @@ index 12c655b60087a2f6122ffa508b3224159d8777b0..9a400c8bf2b54aa5fbcbe65b61670cac public Frog(EntityType entityType, Level level) { super(entityType, level); -@@ -113,7 +115,55 @@ public class Frog extends Animal implements VariantHolder> { +@@ -112,7 +114,55 @@ public class Frog extends Animal { this.setPathfindingMalus(PathType.WATER, 4.0F); this.setPathfindingMalus(PathType.TRAPDOOR, -1.0F); this.moveControl = new SmoothSwimmingMoveControl(this, 85, 10, 0.02F, 0.1F, true); @@ -2226,7 +2156,7 @@ index 12c655b60087a2f6122ffa508b3224159d8777b0..9a400c8bf2b54aa5fbcbe65b61670cac @Override protected Brain.Provider brainProvider() { -@@ -188,6 +238,7 @@ public class Frog extends Animal implements VariantHolder> { +@@ -205,6 +255,7 @@ public class Frog extends Animal { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("frogBrain"); @@ -2234,7 +2164,7 @@ index 12c655b60087a2f6122ffa508b3224159d8777b0..9a400c8bf2b54aa5fbcbe65b61670cac this.getBrain().tick(level, this); profilerFiller.pop(); profilerFiller.push("frogActivityUpdate"); -@@ -380,7 +431,7 @@ public class Frog extends Animal implements VariantHolder> { +@@ -389,7 +440,7 @@ public class Frog extends Animal { return level.getBlockState(pos.below()).is(BlockTags.FROGS_SPAWNABLE_ON) && isBrightEnoughToSpawn(level, pos); } @@ -2244,10 +2174,10 @@ index 12c655b60087a2f6122ffa508b3224159d8777b0..9a400c8bf2b54aa5fbcbe65b61670cac super(mob); } diff --git a/net/minecraft/world/entity/animal/frog/Tadpole.java b/net/minecraft/world/entity/animal/frog/Tadpole.java -index 97adf8142cdd322c4873c420ed760e9dee34da23..e888e606b4b14fa6485de7426bc146b6005962af 100644 +index ebdfd3fb6c0de48982d392bb2aa415f3676c6056..4db2d63fbc021f28b8ad8d20cc1cc1bb257b057f 100644 --- a/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -63,13 +63,50 @@ public class Tadpole extends AbstractFish { +@@ -64,13 +64,50 @@ public class Tadpole extends AbstractFish { MemoryModuleType.IS_PANICKING ); public boolean ageLocked; // Paper @@ -2299,7 +2229,7 @@ index 97adf8142cdd322c4873c420ed760e9dee34da23..e888e606b4b14fa6485de7426bc146b6 @Override protected PathNavigation createNavigation(Level level) { return new WaterBoundPathNavigation(this, level); -@@ -99,6 +136,7 @@ public class Tadpole extends AbstractFish { +@@ -100,6 +137,7 @@ public class Tadpole extends AbstractFish { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("tadpoleBrain"); @@ -2308,10 +2238,10 @@ index 97adf8142cdd322c4873c420ed760e9dee34da23..e888e606b4b14fa6485de7426bc146b6 profilerFiller.pop(); profilerFiller.push("tadpoleActivityUpdate"); diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index 7b73d4134d30ba8edb69785a2e2eb2d89b2341a7..302208b566038a3a352ca867dd70a61887bac104 100644 +index c399192687e01bd4a05e4a85d71493d4c3c3e9a8..b922d8c37b89a5762c8ed29e6a5fa545f408511e 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -111,6 +111,23 @@ public class Goat extends Animal { +@@ -114,6 +114,23 @@ public class Goat extends Animal { .orElseGet(() -> new ItemStack(Items.GOAT_HORN)); } @@ -2335,7 +2265,7 @@ index 7b73d4134d30ba8edb69785a2e2eb2d89b2341a7..302208b566038a3a352ca867dd70a618 @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -188,6 +205,7 @@ public class Goat extends Animal { +@@ -191,6 +208,7 @@ public class Goat extends Animal { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("goatBrain"); @@ -2344,10 +2274,10 @@ index 7b73d4134d30ba8edb69785a2e2eb2d89b2341a7..302208b566038a3a352ca867dd70a618 profilerFiller.pop(); profilerFiller.push("goatActivityUpdate"); diff --git a/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index d52a8315f1e6876c26c732f4c4caa47bc6bebf6e..828406060e50ff62586929371aafb46ef7d81f92 100644 +index 7c473eea481f5e055cc70512027726f41f0c6f67..8bd9fd0a017b9822129119d7e16e872f0bdc8c2d 100644 --- a/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/net/minecraft/world/entity/animal/horse/AbstractHorse.java -@@ -206,11 +206,21 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -126,11 +126,21 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory protected AbstractHorse(EntityType entityType, Level level) { super(entityType, level); @@ -2369,7 +2299,7 @@ index d52a8315f1e6876c26c732f4c4caa47bc6bebf6e..828406060e50ff62586929371aafb46e this.goalSelector.addGoal(1, new PanicGoal(this, 1.2)); this.goalSelector.addGoal(1, new RunAroundLikeCrazyGoal(this, 1.2)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0, AbstractHorse.class)); -@@ -221,6 +231,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -141,6 +151,7 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory if (this.canPerformRearing()) { this.goalSelector.addGoal(9, new RandomStandGoal(this)); } @@ -2378,7 +2308,7 @@ index d52a8315f1e6876c26c732f4c4caa47bc6bebf6e..828406060e50ff62586929371aafb46e this.addBehaviourGoals(); } diff --git a/net/minecraft/world/entity/animal/horse/Donkey.java b/net/minecraft/world/entity/animal/horse/Donkey.java -index 9b97f3d3675f5051b18a68ff7fa056d859a283e9..ee3fa710e95f2e84f7f9bdce1159d1136815172d 100644 +index 5dff98b5b2e4bba5f874d6a99d034a3905775c9b..66dda36aeb668488076f0c93dc83ab6cc4ec1a31 100644 --- a/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/net/minecraft/world/entity/animal/horse/Donkey.java @@ -16,6 +16,13 @@ public class Donkey extends AbstractChestedHorse { @@ -2393,13 +2323,13 @@ index 9b97f3d3675f5051b18a68ff7fa056d859a283e9..ee3fa710e95f2e84f7f9bdce1159d113 + // Purpur end - Ridables + @Override - protected SoundEvent getAmbientSound() { + public SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java -index c6d0700f29d6c8123e96efe225faf2d99202ac81..361bf346153912bcbfcf962d7f716dfe12ae2a7b 100644 +index a0d85cd6c5306385b074a636166ff8eee2b320ce..5b2d1fedf61880990ca29b51b3d83a19e79047d1 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java -@@ -43,6 +43,13 @@ public class Horse extends AbstractHorse implements VariantHolder { +@@ -46,6 +46,13 @@ public class Horse extends AbstractHorse { super(entityType, level); } @@ -2414,10 +2344,10 @@ index c6d0700f29d6c8123e96efe225faf2d99202ac81..361bf346153912bcbfcf962d7f716dfe protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index 7d4aad3c45d710488aba540ee5a535098ddd27ee..164a429d432badcb315e8ece406e29e576a11265 100644 +index d4467235e8dc9d10c61dfb6fd9dc32386903dd09..b60fa4cb07d8dc6b52e76b5e9f596bafc815ba2d 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -78,7 +78,51 @@ public class Llama extends AbstractChestedHorse implements VariantHolder stack.is(ItemTags.SHEEP_FOOD), false)); diff --git a/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/net/minecraft/world/entity/animal/sniffer/Sniffer.java -index 62ca7871d1e5d0fe611948ad43e44c23fdc2d3f8..151c2435810798708544f9cf20bcf77f5e384962 100644 +index d34dcbbdeae41d23d6fb497e0e8da038580b6d01..6c252b8021dbeb2a9ffee8a3744ac0165fd032e8 100644 --- a/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/net/minecraft/world/entity/animal/sniffer/Sniffer.java @@ -88,6 +88,23 @@ public class Sniffer extends Animal { @@ -2621,6 +2584,51 @@ index 62ca7871d1e5d0fe611948ad43e44c23fdc2d3f8..151c2435810798708544f9cf20bcf77f @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); +diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java +index e94f7b29befd2176fbbc784cd9d08c2d1cd4a94d..cff9bc3d8c9ef1935c25c4001dfd638855062573 100644 +--- a/net/minecraft/world/entity/animal/wolf/Wolf.java ++++ b/net/minecraft/world/entity/animal/wolf/Wolf.java +@@ -187,9 +187,32 @@ public class Wolf extends TamableAnimal implements NeutralMob { + } + // Purpur end - Configurable default collar color + ++ // Purpur start - Ridables ++ @Override ++ public boolean isRidable() { ++ return level().purpurConfig.wolfRidable; ++ } ++ ++ @Override ++ public boolean dismountsUnderwater() { ++ return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.wolfRidableInWater; ++ } ++ ++ public void onMount(Player rider) { ++ super.onMount(rider); ++ setInSittingPose(false); ++ } ++ ++ @Override ++ public boolean isControllable() { ++ return level().purpurConfig.wolfControllable; ++ } ++ // Purpur end - Ridables ++ + @Override + protected void registerGoals() { + this.goalSelector.addGoal(1, new FloatGoal(this)); ++ this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables + this.goalSelector.addGoal(1, new TamableAnimal.TamableAnimalPanicGoal(1.5, DamageTypeTags.PANIC_ENVIRONMENTAL_CAUSES)); + this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); + this.goalSelector.addGoal(3, new Wolf.WolfAvoidEntityGoal<>(this, Llama.class, 24.0F, 1.5, 1.5)); +@@ -202,6 +225,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { + this.goalSelector.addGoal(9, new BegGoal(this, 8.0F)); + this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Player.class, 8.0F)); + this.goalSelector.addGoal(10, new RandomLookAroundGoal(this)); ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables + this.targetSelector.addGoal(1, new OwnerHurtByTargetGoal(this)); + this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); + this.targetSelector.addGoal(3, new HurtByTargetGoal(this).setAlertOthers()); diff --git a/net/minecraft/world/entity/boss/EnderDragonPart.java b/net/minecraft/world/entity/boss/EnderDragonPart.java index 31f064267514e590944ad809c95915b481e65aaa..c8bc09c3fe27e69360027698c41fd51a111ffa66 100644 --- a/net/minecraft/world/entity/boss/EnderDragonPart.java @@ -2640,10 +2648,10 @@ index 31f064267514e590944ad809c95915b481e65aaa..c8bc09c3fe27e69360027698c41fd51a protected void defineSynchedData(SynchedEntityData.Builder builder) { } diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index f7e6866404af629ae0b20425202f592d76df4f3d..bc9564ee22ff9d7f6d819da9601c2d8162d304e1 100644 +index ea9d27a3205b3699b9577f42bb04254bd76e700e..a414934ae4332cc6cf622d4bb19c5937713f92a2 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -90,6 +90,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -91,6 +91,7 @@ public class EnderDragon extends Mob implements Enemy { private final net.minecraft.world.level.Explosion explosionSource; // Paper - reusable source for CraftTNTPrimed.getSource() @Nullable private BlockPos podium; // Paper end @@ -2651,7 +2659,7 @@ index f7e6866404af629ae0b20425202f592d76df4f3d..bc9564ee22ff9d7f6d819da9601c2d81 public EnderDragon(EntityType entityType, Level level) { super(EntityType.ENDER_DRAGON, level); -@@ -106,6 +107,37 @@ public class EnderDragon extends Mob implements Enemy { +@@ -107,6 +108,37 @@ public class EnderDragon extends Mob implements Enemy { this.noPhysics = true; this.phaseManager = new EnderDragonPhaseManager(this); this.explosionSource = new net.minecraft.world.level.ServerExplosion(level.getMinecraftWorld(), this, null, null, new Vec3(Double.NaN, Double.NaN, Double.NaN), Float.NaN, true, net.minecraft.world.level.Explosion.BlockInteraction.DESTROY); // Paper @@ -2689,7 +2697,7 @@ index f7e6866404af629ae0b20425202f592d76df4f3d..bc9564ee22ff9d7f6d819da9601c2d81 } public void setDragonFight(EndDragonFight dragonFight) { -@@ -120,6 +152,17 @@ public class EnderDragon extends Mob implements Enemy { +@@ -121,6 +153,17 @@ public class EnderDragon extends Mob implements Enemy { return this.fightOrigin; } @@ -2707,7 +2715,7 @@ index f7e6866404af629ae0b20425202f592d76df4f3d..bc9564ee22ff9d7f6d819da9601c2d81 public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0); } -@@ -169,6 +212,37 @@ public class EnderDragon extends Mob implements Enemy { +@@ -170,6 +213,37 @@ public class EnderDragon extends Mob implements Enemy { @Override public void aiStep() { @@ -2745,7 +2753,7 @@ index f7e6866404af629ae0b20425202f592d76df4f3d..bc9564ee22ff9d7f6d819da9601c2d81 this.processFlappingMovement(); if (this.level().isClientSide) { this.setHealth(this.getHealth()); -@@ -197,6 +271,8 @@ public class EnderDragon extends Mob implements Enemy { +@@ -198,6 +272,8 @@ public class EnderDragon extends Mob implements Enemy { this.oFlapTime = this.flapTime; if (this.isDeadOrDying()) { @@ -2754,7 +2762,7 @@ index f7e6866404af629ae0b20425202f592d76df4f3d..bc9564ee22ff9d7f6d819da9601c2d81 float f = (this.random.nextFloat() - 0.5F) * 8.0F; float f1 = (this.random.nextFloat() - 0.5F) * 4.0F; float f2 = (this.random.nextFloat() - 0.5F) * 8.0F; -@@ -206,9 +282,9 @@ public class EnderDragon extends Mob implements Enemy { +@@ -207,9 +283,9 @@ public class EnderDragon extends Mob implements Enemy { Vec3 deltaMovement = this.getDeltaMovement(); float f1 = 0.2F / ((float)deltaMovement.horizontalDistance() * 10.0F + 1.0F); f1 *= (float)Math.pow(2.0, deltaMovement.y); @@ -2766,7 +2774,7 @@ index f7e6866404af629ae0b20425202f592d76df4f3d..bc9564ee22ff9d7f6d819da9601c2d81 this.flapTime += f1 * 0.5F; } else { this.flapTime += f1; -@@ -219,7 +295,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -220,7 +296,7 @@ public class EnderDragon extends Mob implements Enemy { this.flapTime = 0.5F; } else { this.flightHistory.record(this.getY(), this.getYRot()); @@ -2775,7 +2783,7 @@ index f7e6866404af629ae0b20425202f592d76df4f3d..bc9564ee22ff9d7f6d819da9601c2d81 DragonPhaseInstance currentPhase = this.phaseManager.getCurrentPhase(); currentPhase.doServerTick(serverLevel1); if (this.phaseManager.getCurrentPhase() != currentPhase) { -@@ -298,7 +374,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -295,7 +371,7 @@ public class EnderDragon extends Mob implements Enemy { this.tickPart(this.body, sin1 * 0.5F, 0.0, -cos1 * 0.5F); this.tickPart(this.wing1, cos1 * 4.5F, 2.0, sin1 * 4.5F); this.tickPart(this.wing2, cos1 * -4.5F, 2.0, sin1 * -4.5F); @@ -2784,7 +2792,7 @@ index f7e6866404af629ae0b20425202f592d76df4f3d..bc9564ee22ff9d7f6d819da9601c2d81 this.knockBack( serverLevel2, serverLevel2.getEntities( -@@ -348,9 +424,9 @@ public class EnderDragon extends Mob implements Enemy { +@@ -345,9 +421,9 @@ public class EnderDragon extends Mob implements Enemy { } if (this.level() instanceof ServerLevel serverLevel3) { @@ -2797,10 +2805,10 @@ index f7e6866404af629ae0b20425202f592d76df4f3d..bc9564ee22ff9d7f6d819da9601c2d81 this.dragonFight.updateDragon(this); } diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 95cf215e8804cc2d7b681723dfebd1dcb8cbaeee..5d97ae09292fb3209e7362df778e88dc508815a3 100644 +index 2f7da367b58fd9c06c4e012e8eb7f59e5a7f9b6d..15e2c0d566256c4ba175e991d6d7fd4fdcd49c8e 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -69,6 +69,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -70,6 +70,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { private final int[] nextHeadUpdate = new int[2]; private final int[] idleHeadUpdates = new int[2]; private int destroyBlocksTick; @@ -2808,7 +2816,7 @@ index 95cf215e8804cc2d7b681723dfebd1dcb8cbaeee..5d97ae09292fb3209e7362df778e88dc private boolean canPortal = false; // Paper public final ServerBossEvent bossEvent = (ServerBossEvent)new ServerBossEvent( this.getDisplayName(), BossEvent.BossBarColor.PURPLE, BossEvent.BossBarOverlay.PROGRESS -@@ -78,9 +79,23 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -79,9 +80,23 @@ public class WitherBoss extends Monster implements RangedAttackMob { && entity.attackable(); private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0).selector(LIVING_ENTITY_SELECTOR); @Nullable private java.util.UUID summoner; // Purpur - Summoner API @@ -2832,7 +2840,7 @@ index 95cf215e8804cc2d7b681723dfebd1dcb8cbaeee..5d97ae09292fb3209e7362df778e88dc this.moveControl = new FlyingMoveControl(this, 10, false); this.setHealth(this.getMaxHealth()); this.xpReward = 50; -@@ -97,6 +112,105 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -98,6 +113,105 @@ public class WitherBoss extends Monster implements RangedAttackMob { } // Purpur end - Summoner API @@ -2938,7 +2946,7 @@ index 95cf215e8804cc2d7b681723dfebd1dcb8cbaeee..5d97ae09292fb3209e7362df778e88dc @Override protected PathNavigation createNavigation(Level level) { FlyingPathNavigation flyingPathNavigation = new FlyingPathNavigation(this, level); -@@ -107,11 +221,13 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -108,11 +222,13 @@ public class WitherBoss extends Monster implements RangedAttackMob { @Override protected void registerGoals() { @@ -2952,7 +2960,7 @@ index 95cf215e8804cc2d7b681723dfebd1dcb8cbaeee..5d97ae09292fb3209e7362df778e88dc this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 0, false, false, LIVING_ENTITY_SELECTOR)); } -@@ -271,6 +387,15 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -272,6 +388,15 @@ public class WitherBoss extends Monster implements RangedAttackMob { @Override protected void customServerAiStep(ServerLevel level) { @@ -2968,7 +2976,7 @@ index 95cf215e8804cc2d7b681723dfebd1dcb8cbaeee..5d97ae09292fb3209e7362df778e88dc if (this.getInvulnerableTicks() > 0) { int i = this.getInvulnerableTicks() - 1; this.bossEvent.setProgress(1.0F - i / 220.0F); -@@ -577,11 +702,11 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -578,11 +703,11 @@ public class WitherBoss extends Monster implements RangedAttackMob { } public int getAlternativeTarget(int head) { @@ -2983,7 +2991,7 @@ index 95cf215e8804cc2d7b681723dfebd1dcb8cbaeee..5d97ae09292fb3209e7362df778e88dc public boolean isPowered() { diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 1e97cb34aa22ad3150b598232dd339213b236f5c..e186aee80b052b7fc4bfe02763010bfb2d55ea35 100644 +index 96d5750cde19254866beac0c3a69eebef6de5188..0a5de00d41c59528e9f85a7cf82363c45e24d2bc 100644 --- a/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -73,12 +73,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -3002,7 +3010,7 @@ index 1e97cb34aa22ad3150b598232dd339213b236f5c..e186aee80b052b7fc4bfe02763010bfb this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); diff --git a/net/minecraft/world/entity/monster/Blaze.java b/net/minecraft/world/entity/monster/Blaze.java -index 419c729502ee708bba9e750f1b951450eca82695..201b08a75c42d90e657c3d56fc6691839e87199c 100644 +index 4ab7072b4290db7fbe72f81b89d3c428b05f737c..971b974c6717a544f7f96c441cd76e9dc8d0cc2c 100644 --- a/net/minecraft/world/entity/monster/Blaze.java +++ b/net/minecraft/world/entity/monster/Blaze.java @@ -33,6 +33,7 @@ public class Blaze extends Monster { @@ -3085,10 +3093,10 @@ index 419c729502ee708bba9e750f1b951450eca82695..201b08a75c42d90e657c3d56fc669183 if (this.nextHeightOffsetChangeTick <= 0) { this.nextHeightOffsetChangeTick = 100; diff --git a/net/minecraft/world/entity/monster/Bogged.java b/net/minecraft/world/entity/monster/Bogged.java -index f01670f7106a39957c9b37839fcca0d9f29208f0..2b603c1242aac307f28bae5a85bcaad309f929f5 100644 +index c279d38ed8d5d0fef6dea4afdc3ab308456f31a7..f572ee0a8edd6c4adb17c06083e165d4d8ed8550 100644 --- a/net/minecraft/world/entity/monster/Bogged.java +++ b/net/minecraft/world/entity/monster/Bogged.java -@@ -41,6 +41,23 @@ public class Bogged extends AbstractSkeleton implements Shearable { +@@ -42,6 +42,23 @@ public class Bogged extends AbstractSkeleton implements Shearable { super(entityType, level); } @@ -3141,12 +3149,12 @@ index 2e32567fca7a2a4cd87bc078a6eeb30e3ffabfce..4873a3d8dd9c160ecdbda594ee546c35 public boolean doHurtTarget(ServerLevel level, Entity source) { if (super.doHurtTarget(level, source)) { diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java -index 9aff3c911a56885ab3c34bb34bb05e7b1c00d3bd..cdcee233ed0c272e4a68a2a709fe92b21bc6c22c 100644 +index c2327306f093c834da9574f9466236fbec572aec..562641cdb76e7a50706459bee8a2dcdf441588cd 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java -@@ -51,21 +51,98 @@ public class Creeper extends Monster { +@@ -55,21 +55,98 @@ public class Creeper extends Monster { private int droppedSkulls; - public Entity entityIgniter; // CraftBukkit + public @Nullable Entity entityIgniter; // CraftBukkit private boolean exploding = false; // Purpur - Config to make Creepers explode on death + // Purpur start - Ridables + private int spacebarCharge = 0; @@ -3243,7 +3251,7 @@ index 9aff3c911a56885ab3c34bb34bb05e7b1c00d3bd..cdcee233ed0c272e4a68a2a709fe92b2 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); } -@@ -312,6 +389,7 @@ public class Creeper extends Monster { +@@ -310,6 +387,7 @@ public class Creeper extends Monster { 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(DATA_IS_IGNITED, event.isIgnited()); @@ -3252,7 +3260,7 @@ index 9aff3c911a56885ab3c34bb34bb05e7b1c00d3bd..cdcee233ed0c272e4a68a2a709fe92b2 } } diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java -index 6c1e816356243686f7d0bfa031badc75b54b215d..c1da9ebee7e870a9143e6224be9e9f4e62232459 100644 +index c0afb6f85cecf26bb1a08669ac3fcec8fea6cbfc..be7b7eb8328277dc790b9953161c3603d3bbe873 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java @@ -75,6 +75,23 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -3279,7 +3287,7 @@ index 6c1e816356243686f7d0bfa031badc75b54b215d..c1da9ebee7e870a9143e6224be9e9f4e @Override protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0)); -@@ -408,7 +425,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -411,7 +428,7 @@ public class Drowned extends Zombie implements RangedAttackMob { } } @@ -3288,7 +3296,7 @@ index 6c1e816356243686f7d0bfa031badc75b54b215d..c1da9ebee7e870a9143e6224be9e9f4e private final Drowned drowned; public DrownedMoveControl(Drowned mob) { -@@ -417,7 +434,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -420,7 +437,7 @@ public class Drowned extends Zombie implements RangedAttackMob { } @Override @@ -3297,7 +3305,7 @@ index 6c1e816356243686f7d0bfa031badc75b54b215d..c1da9ebee7e870a9143e6224be9e9f4e LivingEntity target = this.drowned.getTarget(); if (this.drowned.wantsToSwim() && this.drowned.isInWater()) { if (target != null && target.getY() > this.drowned.getY() || this.drowned.searchingForLand) { -@@ -437,7 +454,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -440,7 +457,7 @@ public class Drowned extends Zombie implements RangedAttackMob { float f = (float)(Mth.atan2(d2, d) * 180.0F / (float)Math.PI) - 90.0F; this.drowned.setYRot(this.rotlerp(this.drowned.getYRot(), f, 90.0F)); this.drowned.yBodyRot = this.drowned.getYRot(); @@ -3306,7 +3314,7 @@ index 6c1e816356243686f7d0bfa031badc75b54b215d..c1da9ebee7e870a9143e6224be9e9f4e float f2 = Mth.lerp(0.125F, this.drowned.getSpeed(), f1); this.drowned.setSpeed(f2); this.drowned.setDeltaMovement(this.drowned.getDeltaMovement().add(f2 * d * 0.005, f2 * d1 * 0.1, f2 * d2 * 0.005)); -@@ -446,7 +463,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -449,7 +466,7 @@ public class Drowned extends Zombie implements RangedAttackMob { this.drowned.setDeltaMovement(this.drowned.getDeltaMovement().add(0.0, -0.008, 0.0)); } @@ -3316,7 +3324,7 @@ index 6c1e816356243686f7d0bfa031badc75b54b215d..c1da9ebee7e870a9143e6224be9e9f4e } } diff --git a/net/minecraft/world/entity/monster/ElderGuardian.java b/net/minecraft/world/entity/monster/ElderGuardian.java -index 4585b7c867685f8419c4d2b5b90af5946d337f90..c6eeaf7b460408acfdf89d988b47b08eab7df4c5 100644 +index fd33a8b59f40299ab644a4c52921b66a9b6552ca..eccbb27aa7efa6e24e04db114b06c7dbf54f9938 100644 --- a/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/net/minecraft/world/entity/monster/ElderGuardian.java @@ -31,6 +31,18 @@ public class ElderGuardian extends Guardian { @@ -3339,10 +3347,10 @@ index 4585b7c867685f8419c4d2b5b90af5946d337f90..c6eeaf7b460408acfdf89d988b47b08e return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0); } diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index 8709588083fd5ca6a31d9a8d4096475d117915a1..cf511c78638e0d7aa652d1c880b3cd8172d5b3cf 100644 +index 19a047c99c3afc6f8b23d7279491b156785a2c28..f991e59e896fc39da8f318871168b4c9bb0d8328 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -90,9 +90,27 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -91,9 +91,27 @@ public class EnderMan extends Monster implements NeutralMob { this.setPathfindingMalus(PathType.WATER, -1.0F); } @@ -3370,7 +3378,7 @@ index 8709588083fd5ca6a31d9a8d4096475d117915a1..cf511c78638e0d7aa652d1c880b3cd81 this.goalSelector.addGoal(1, new EnderMan.EndermanFreezeWhenLookedAt(this)); this.goalSelector.addGoal(2, new MeleeAttackGoal(this, 1.0, false)); this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0, 0.0F)); -@@ -100,6 +118,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -101,6 +119,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)); @@ -3378,28 +3386,28 @@ index 8709588083fd5ca6a31d9a8d4096475d117915a1..cf511c78638e0d7aa652d1c880b3cd81 this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, 10, true, false, (entityliving, ignored) -> entityliving.level().purpurConfig.endermanAggroEndermites && entityliving instanceof Endermite endermite && (!entityliving.level().purpurConfig.endermanAggroEndermitesOnlyIfPlayerSpawned || endermite.isPlayerSpawned()))); // Purpur -@@ -272,7 +291,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -263,7 +282,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override protected void customServerAiStep(ServerLevel level) { -- if (level.isDay() && this.tickCount >= this.targetChangeTime + 600) { -+ if ((getRider() == null || !this.isControllable()) && level.isDay() && this.tickCount >= this.targetChangeTime + 600) { // Purpur - Ridables - no random teleporting +- if (level.isBrightOutside() && this.tickCount >= this.targetChangeTime + 600) { ++ if ((getRider() == null || !this.isControllable()) && level.isBrightOutside() && this.tickCount >= this.targetChangeTime + 600) { // Purpur - Ridables - no random teleporting float lightLevelDependentMagicValue = this.getLightLevelDependentMagicValue(); if (lightLevelDependentMagicValue > 0.5F && level.canSeeSky(this.blockPosition()) -@@ -385,6 +404,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -376,6 +395,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) { if (this.isInvulnerableTo(level, damageSource)) { return false; + } else if (getRider() != null && this.isControllable()) { return super.hurtServer(level, damageSource, amount); // Purpur - no teleporting on damage } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && damageSource.is(net.minecraft.world.damagesource.DamageTypes.IN_WALL)) { return false; // Purpur - no suffocation damage if short height - Short enderman height } else { - boolean flag = damageSource.getDirectEntity() instanceof ThrownPotion; + AbstractThrownPotion abstractThrownPotion1 = damageSource.getDirectEntity() instanceof AbstractThrownPotion abstractThrownPotion diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java -index 4e00daa6ece386f70502c074084b7b1b64caac2f..f4ab2e984dd87d2372aa10d2cbfd03a3f6fb1249 100644 +index 37eaed1455f34011c24170ca0b05f606bd03fac0..ddb40c13cee7db16fc9b094828356e743e9507f2 100644 --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java -@@ -45,14 +45,33 @@ public class Endermite extends Monster { +@@ -46,14 +46,33 @@ public class Endermite extends Monster { } // Purpur end - Add back player spawned endermite API @@ -3434,7 +3442,7 @@ index 4e00daa6ece386f70502c074084b7b1b64caac2f..f4ab2e984dd87d2372aa10d2cbfd03a3 this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } diff --git a/net/minecraft/world/entity/monster/Evoker.java b/net/minecraft/world/entity/monster/Evoker.java -index b70ea1af39cada6bb17001c6b65502510e34c4b2..2eaeb0c0c0cb917506443ed1380b81f317961d53 100644 +index cf9f0c60efc4f7cbc275ed9b154c979e82b4d50c..889f6be331b3b7b80de60c414b77d68947477f9e 100644 --- a/net/minecraft/world/entity/monster/Evoker.java +++ b/net/minecraft/world/entity/monster/Evoker.java @@ -50,10 +50,28 @@ public class Evoker extends SpellcasterIllager { @@ -3475,10 +3483,10 @@ index b70ea1af39cada6bb17001c6b65502510e34c4b2..2eaeb0c0c0cb917506443ed1380b81f3 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/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java -index b97bbfbbc8c1a4f38b4b858ef4915b637cc8a627..00c05fb5736c90c94f6fe51793acf8b65b1d0505 100644 +index 97b4352671910d2deedc6d280f3ce6e645597f3c..e087a2348dee66e0374246e992ed66bb8f18dce0 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java -@@ -42,11 +42,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); } @@ -3526,7 +3534,7 @@ index b97bbfbbc8c1a4f38b4b858ef4915b637cc8a627..00c05fb5736c90c94f6fe51793acf8b6 this.targetSelector .addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (entity, level) -> Math.abs(entity.getY() - this.getY()) <= 4.0)); } -@@ -101,7 +137,7 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -102,7 +138,7 @@ public class Ghast extends FlyingMob implements Enemy { } public static AttributeSupplier.Builder createAttributes() { @@ -3535,7 +3543,7 @@ index b97bbfbbc8c1a4f38b4b858ef4915b637cc8a627..00c05fb5736c90c94f6fe51793acf8b6 } @Override -@@ -191,7 +227,7 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -190,7 +226,7 @@ public class Ghast extends FlyingMob implements Enemy { } } @@ -3544,7 +3552,7 @@ index b97bbfbbc8c1a4f38b4b858ef4915b637cc8a627..00c05fb5736c90c94f6fe51793acf8b6 private final Ghast ghast; private int floatDuration; -@@ -201,7 +237,7 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -200,7 +236,7 @@ public class Ghast extends FlyingMob implements Enemy { } @Override @@ -3588,7 +3596,7 @@ index 969eb604851d1cce50f0f99ed479189061d5de0c..135f83484ac31db7dcc225ba6f94e2e4 return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 100.0).add(Attributes.MOVEMENT_SPEED, 0.5).add(Attributes.ATTACK_DAMAGE, 50.0); } diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java -index c8e249b8f7ee8e9c075169ec988f5a0d459a3767..c20c744522459d938c772077e542ba433bc4c80e 100644 +index a36f0181e1aa24538d6c868a8675da89427bdeae..26fb38b9741304f4fe461c929ead0f392255a3de 100644 --- a/net/minecraft/world/entity/monster/Guardian.java +++ b/net/minecraft/world/entity/monster/Guardian.java @@ -66,14 +66,35 @@ public class Guardian extends Monster { @@ -3638,7 +3646,7 @@ index c8e249b8f7ee8e9c075169ec988f5a0d459a3767..c20c744522459d938c772077e542ba43 @@ -344,7 +366,7 @@ public class Guardian extends Monster { @Override public void travel(Vec3 travelVector) { - if (this.isControlledByLocalInstance() && this.isInWater()) { + if (this.isInWater()) { - this.moveRelative(0.1F, travelVector); + this.moveRelative(getRider() != null && this.isControllable() ? getSpeed() : 0.1F, travelVector); // Purpur - Ridables this.move(MoverType.SELF, this.getDeltaMovement()); @@ -3682,7 +3690,7 @@ index c8e249b8f7ee8e9c075169ec988f5a0d459a3767..c20c744522459d938c772077e542ba43 this.guardian.setSpeed(f2); double d3 = Math.sin((this.guardian.tickCount + this.guardian.getId()) * 0.5) * 0.05; diff --git a/net/minecraft/world/entity/monster/Husk.java b/net/minecraft/world/entity/monster/Husk.java -index 6155c544ad2722a49c5e41dd7d7b02fedc56474e..23936305045299352561e866b6a28aa515cd614a 100644 +index 8d6def85583a111841b28f20f58ddb8b8cbd7bc1..0335e85f196363c06597812149e9a93cba57fa9e 100644 --- a/net/minecraft/world/entity/monster/Husk.java +++ b/net/minecraft/world/entity/monster/Husk.java @@ -21,6 +21,23 @@ public class Husk extends Zombie { @@ -3710,7 +3718,7 @@ index 6155c544ad2722a49c5e41dd7d7b02fedc56474e..23936305045299352561e866b6a28aa5 EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index 40ca12e391b2adac6b132f1832b1427acb3748bc..bd0f4d77260f5b123856fc7e72d5f8e74bb45321 100644 +index 264ec7acfc03eca4a8f5758ad8d3e11714e934b4..d75eb765f271fb7e33d0332079aea024788dc227 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -57,10 +57,28 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -3751,7 +3759,7 @@ index 40ca12e391b2adac6b132f1832b1427acb3748bc..bd0f4d77260f5b123856fc7e72d5f8e7 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/net/minecraft/world/entity/monster/MagmaCube.java b/net/minecraft/world/entity/monster/MagmaCube.java -index 905ecbd8b22c785ee4ea18004ac50eb1b7005d3f..f10b204c18b88e9110cebf050b60c23367ea3aa0 100644 +index 889c31cc9257fbbd5df8325ccee9ce39b026ec4b..4a1299d6cee2807522de0c2d0d4745c5810e4121 100644 --- a/net/minecraft/world/entity/monster/MagmaCube.java +++ b/net/minecraft/world/entity/monster/MagmaCube.java @@ -24,6 +24,28 @@ public class MagmaCube extends Slime { @@ -3792,10 +3800,10 @@ index 905ecbd8b22c785ee4ea18004ac50eb1b7005d3f..f10b204c18b88e9110cebf050b60c233 @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 9ea3acd5ff3d7751875d61861aa5f6c717d0b5e2..75c6a43a3ab4851a47990402bee49f7e8305cd60 100644 +index 73edb1a4e5daee16fa518c05de24e413847ab65d..2653cf2c353d7ae360201e74c4860a4745dd4948 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -60,6 +60,64 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -61,6 +61,64 @@ public class Phantom extends FlyingMob implements Enemy { this.lookControl = new Phantom.PhantomLookControl(this); } @@ -3860,7 +3868,7 @@ index 9ea3acd5ff3d7751875d61861aa5f6c717d0b5e2..75c6a43a3ab4851a47990402bee49f7e @Override public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; -@@ -72,9 +130,11 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -73,9 +131,11 @@ public class Phantom extends FlyingMob implements Enemy { @Override protected void registerGoals() { @@ -3872,7 +3880,7 @@ index 9ea3acd5ff3d7751875d61861aa5f6c717d0b5e2..75c6a43a3ab4851a47990402bee49f7e this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal()); } -@@ -90,6 +150,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -91,6 +151,7 @@ public class Phantom extends FlyingMob implements Enemy { private void updatePhantomSizeInfo() { this.refreshDimensions(); @@ -3880,7 +3888,7 @@ index 9ea3acd5ff3d7751875d61861aa5f6c717d0b5e2..75c6a43a3ab4851a47990402bee49f7e this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(6 + this.getPhantomSize()); } -@@ -147,6 +208,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -148,6 +209,7 @@ public class Phantom extends FlyingMob implements Enemy { @Override public void aiStep() { if (this.isAlive() && this.shouldBurnInDay && this.isSunBurnTick()) { // Paper - shouldBurnInDay API @@ -3888,7 +3896,7 @@ index 9ea3acd5ff3d7751875d61861aa5f6c717d0b5e2..75c6a43a3ab4851a47990402bee49f7e this.igniteForSeconds(8.0F); } -@@ -411,25 +473,42 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -404,25 +466,42 @@ public class Phantom extends FlyingMob implements Enemy { } } @@ -3936,7 +3944,7 @@ index 9ea3acd5ff3d7751875d61861aa5f6c717d0b5e2..75c6a43a3ab4851a47990402bee49f7e Phantom.this.setYRot(Phantom.this.getYRot() + 180.0F); this.speed = 0.1F; diff --git a/net/minecraft/world/entity/monster/Pillager.java b/net/minecraft/world/entity/monster/Pillager.java -index e855ebc5be2cef3b96e2c01a8c1d388e433c0d52..4e799981f04cd17a34f043dda82869adcf16ea98 100644 +index d7b05fed206cfb63a75fab94f687d69fb230de9c..852316c9a9d0860a538eae32001e60f05dc6938f 100644 --- a/net/minecraft/world/entity/monster/Pillager.java +++ b/net/minecraft/world/entity/monster/Pillager.java @@ -63,16 +63,35 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve @@ -3976,10 +3984,10 @@ index e855ebc5be2cef3b96e2c01a8c1d388e433c0d52..4e799981f04cd17a34f043dda82869ad this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)); diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index 6f0fad37a05e9cd53b6e15c119127da492737c95..fb4e91c4f37619ce273ada0909932b32ba3b53f5 100644 +index 85018a01b5d803a91228e2fa02717c2c518a3004..382ef8b0f8d5c5ef6a7698097e9b41b7adc04353 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java -@@ -66,15 +66,40 @@ public class Ravager extends Raider { +@@ -69,15 +69,40 @@ public class Ravager extends Raider { this.setPathfindingMalus(PathType.LEAVES, 0.0F); } @@ -4020,7 +4028,7 @@ index 6f0fad37a05e9cd53b6e15c119127da492737c95..fb4e91c4f37619ce273ada0909932b32 this.targetSelector.addGoal(2, new HurtByTargetGoal(this, Raider.class).setAlertOthers()); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true, (entity, level) -> !entity.isBaby())); -@@ -131,7 +156,7 @@ public class Ravager extends Raider { +@@ -134,7 +159,7 @@ public class Ravager extends Raider { @Override public void aiStep() { super.aiStep(); @@ -4030,10 +4038,10 @@ index 6f0fad37a05e9cd53b6e15c119127da492737c95..fb4e91c4f37619ce273ada0909932b32 this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.0); } else { diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index 3f2668c79dd3d9e7973c1bba3e424b8220749682..e0a496a0c584e1f90967a8528a73536fd991e774 100644 +index a8c5c2ad80afd03b3fc53127b519b5c2b73bff85..14cddb216b32990c2ce2381a4d6bf6f76c686f95 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -104,12 +104,31 @@ public class Shulker extends AbstractGolem implements VariantHolder(this, Player.class, true)); } diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java -index f0022458e3e01f6d01df0f8d69b2db73c77fb914..d4426daf3b8079a7e769013d43f44c72b0fce697 100644 +index d1853db754065a79a04e1c4cfa2b54c10b041157..9a197c2be40e0a69f4a68ff045c2395802f0a5f3 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -25,6 +25,23 @@ public class Skeleton extends AbstractSkeleton { +@@ -26,6 +26,23 @@ public class Skeleton extends AbstractSkeleton { super(entityType, level); } @@ -4141,18 +4149,18 @@ index f0022458e3e01f6d01df0f8d69b2db73c77fb914..d4426daf3b8079a7e769013d43f44c72 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java -index 8db4cba1be6d7a5538295ba8da1fdaf7a77a16d0..7d31d68ac0fce102af480a47db73409926611428 100644 +index 6a8a5a76400beeaf69a17d53105a7a522ec5791e..9127e99d632bcd01c2f042c33dc87dd49736b96f 100644 --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java -@@ -57,6 +57,7 @@ public class Slime extends Mob implements Enemy { +@@ -58,6 +58,7 @@ public class Slime extends Mob implements Enemy { public float oSquish; - private boolean wasOnGround; + private boolean wasOnGround = false; private boolean canWander = true; // Paper - Slime pathfinder events + protected boolean actualJump; // Purpur - Ridables public Slime(EntityType entityType, Level level) { super(entityType, level); -@@ -64,12 +65,48 @@ public class Slime extends Mob implements Enemy { +@@ -65,12 +66,48 @@ public class Slime extends Mob implements Enemy { this.moveControl = new Slime.SlimeMoveControl(this); } @@ -4201,7 +4209,7 @@ index 8db4cba1be6d7a5538295ba8da1fdaf7a77a16d0..7d31d68ac0fce102af480a47db734099 this.targetSelector .addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (entity, level) -> Math.abs(entity.getY() - this.getY()) <= 4.0)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); -@@ -371,6 +408,7 @@ public class Slime extends Mob implements Enemy { +@@ -359,6 +396,7 @@ public class Slime extends Mob implements Enemy { Vec3 deltaMovement = this.getDeltaMovement(); this.setDeltaMovement(deltaMovement.x, this.getJumpPower(), deltaMovement.z); this.hasImpulse = true; @@ -4209,7 +4217,7 @@ index 8db4cba1be6d7a5538295ba8da1fdaf7a77a16d0..7d31d68ac0fce102af480a47db734099 } @Nullable -@@ -535,7 +573,7 @@ public class Slime extends Mob implements Enemy { +@@ -523,7 +561,7 @@ public class Slime extends Mob implements Enemy { } } @@ -4218,7 +4226,7 @@ index 8db4cba1be6d7a5538295ba8da1fdaf7a77a16d0..7d31d68ac0fce102af480a47db734099 private float yRot; private int jumpDelay; private final Slime slime; -@@ -553,21 +591,33 @@ public class Slime extends Mob implements Enemy { +@@ -541,21 +579,33 @@ public class Slime extends Mob implements Enemy { } public void setWantedMovement(double speed) { @@ -4255,7 +4263,7 @@ index 8db4cba1be6d7a5538295ba8da1fdaf7a77a16d0..7d31d68ac0fce102af480a47db734099 if (this.jumpDelay-- <= 0) { this.jumpDelay = this.slime.getJumpDelay(); if (this.isAggressive) { -@@ -584,7 +634,7 @@ public class Slime extends Mob implements Enemy { +@@ -572,7 +622,7 @@ public class Slime extends Mob implements Enemy { this.mob.setSpeed(0.0F); } } else { @@ -4265,7 +4273,7 @@ index 8db4cba1be6d7a5538295ba8da1fdaf7a77a16d0..7d31d68ac0fce102af480a47db734099 } } diff --git a/net/minecraft/world/entity/monster/Spider.java b/net/minecraft/world/entity/monster/Spider.java -index af0305079a367899708ee2bbac82aefaa9129d2f..ea83335dd0d128b32d2fe513eab82e642b533b4c 100644 +index 60c4ac37bb491af13f9f9bf730b85bbe544cf81d..5721a690859a1232234c9f6a4385f7185d9800ec 100644 --- a/net/minecraft/world/entity/monster/Spider.java +++ b/net/minecraft/world/entity/monster/Spider.java @@ -50,15 +50,34 @@ public class Spider extends Monster { @@ -4304,7 +4312,7 @@ index af0305079a367899708ee2bbac82aefaa9129d2f..ea83335dd0d128b32d2fe513eab82e64 this.targetSelector.addGoal(2, new Spider.SpiderTargetGoal<>(this, Player.class)); this.targetSelector.addGoal(3, new Spider.SpiderTargetGoal<>(this, IronGolem.class)); diff --git a/net/minecraft/world/entity/monster/Stray.java b/net/minecraft/world/entity/monster/Stray.java -index 5fa2b7920a233afb3659b02cbd7ab82307ea9aaf..ed7ba19870a09ac78c1f069040a25e47c4b19d3a 100644 +index f3de370ee4bafc2cca033293d0d8e5c9c2a6737b..4a7dbd1e4d927240433882a95822e9edfc83b827 100644 --- a/net/minecraft/world/entity/monster/Stray.java +++ b/net/minecraft/world/entity/monster/Stray.java @@ -22,6 +22,23 @@ public class Stray extends AbstractSkeleton { @@ -4332,10 +4340,10 @@ index 5fa2b7920a233afb3659b02cbd7ab82307ea9aaf..ed7ba19870a09ac78c1f069040a25e47 EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java -index ce690b564ea8ee055823928169fe605893498f3d..78671f02ef28f4a3b796b357d21fb4c9b64c153e 100644 +index 9d27f55b1a3aa3b51a3b5079d5dd199eefa7d759..bb46a6ec3ad6a7d0943bf61028d5f9abf76bbeb7 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java -@@ -94,6 +94,23 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -92,6 +92,23 @@ public class Strider extends Animal implements ItemSteerable { this.setPathfindingMalus(PathType.DAMAGE_FIRE, 0.0F); } @@ -4359,7 +4367,7 @@ index ce690b564ea8ee055823928169fe605893498f3d..78671f02ef28f4a3b796b357d21fb4c9 public static boolean checkStriderSpawnRules( EntityType entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { -@@ -156,6 +173,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -138,6 +155,7 @@ public class Strider extends Animal implements ItemSteerable { @Override protected void registerGoals() { this.goalSelector.addGoal(1, new PanicGoal(this, 1.65)); @@ -4367,17 +4375,17 @@ index ce690b564ea8ee055823928169fe605893498f3d..78671f02ef28f4a3b796b357d21fb4c9 this.goalSelector.addGoal(2, new BreedGoal(this, 1.0)); this.temptGoal = new TemptGoal(this, 1.4, itemStack -> itemStack.is(ItemTags.STRIDER_TEMPT_ITEMS), false); this.goalSelector.addGoal(3, this.temptGoal); -@@ -437,7 +455,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { - InteractionResult interactionResult = super.mobInteract(player, hand); - if (!interactionResult.consumesAction()) { +@@ -417,7 +435,7 @@ public class Strider extends Animal implements ItemSteerable { ItemStack itemInHand = player.getItemInHand(hand); -- return (InteractionResult)(itemInHand.is(Items.SADDLE) ? itemInHand.interactLivingEntity(player, this, hand) : InteractionResult.PASS); -+ return (InteractionResult)(itemInHand.is(Items.SADDLE) ? itemInHand.interactLivingEntity(player, this, hand) : tryRide(player, hand)); // Purpur - Ridables + return (InteractionResult)(this.isEquippableInSlot(itemInHand, EquipmentSlot.SADDLE) + ? itemInHand.interactLivingEntity(player, this, hand) +- : InteractionResult.PASS); ++ : tryRide(player, hand)); // Purpur - Ridables } else { if (isFood && !this.isSilent()) { this.level() diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index af3fef70998cff4e4832adfa2071832324ebd91c..f5d3b8e3a84ffb2fe1c0620edd8857362cf696f5 100644 +index bc74bdc3e13f1d51ed6d31470f3ac6f9855778c9..129c712f767fbbdcc7d0df83f838194102efcd15 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -58,6 +58,50 @@ public class Vex extends Monster implements TraceableEntity { @@ -4461,7 +4469,7 @@ index af3fef70998cff4e4832adfa2071832324ebd91c..f5d3b8e3a84ffb2fe1c0620edd885736 } @Override -@@ -301,13 +347,13 @@ public class Vex extends Monster implements TraceableEntity { +@@ -291,13 +337,13 @@ public class Vex extends Monster implements TraceableEntity { } } @@ -4477,7 +4485,7 @@ index af3fef70998cff4e4832adfa2071832324ebd91c..f5d3b8e3a84ffb2fe1c0620edd885736 if (this.operation == MoveControl.Operation.MOVE_TO) { Vec3 vec3 = new Vec3(this.wantedX - Vex.this.getX(), this.wantedY - Vex.this.getY(), this.wantedZ - Vex.this.getZ()); double len = vec3.length(); -@@ -315,7 +361,7 @@ public class Vex extends Monster implements TraceableEntity { +@@ -305,7 +351,7 @@ public class Vex extends Monster implements TraceableEntity { this.operation = MoveControl.Operation.WAIT; Vex.this.setDeltaMovement(Vex.this.getDeltaMovement().scale(0.5)); } else { @@ -4487,10 +4495,10 @@ index af3fef70998cff4e4832adfa2071832324ebd91c..f5d3b8e3a84ffb2fe1c0620edd885736 Vec3 deltaMovement = Vex.this.getDeltaMovement(); Vex.this.setYRot(-((float)Mth.atan2(deltaMovement.x, deltaMovement.z)) * (180.0F / (float)Math.PI)); diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index 5e7506f64159ac4838eee8594c995387e2fceed0..c1a1bb0be8bc77a1c0f771924f3bb8b4936d367b 100644 +index 79c2248b0dce457fed6d61d4b38eeb92bbc3927e..922c5ce69fc2a3cb53dc230f4efe96bde91cd96a 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -55,15 +55,34 @@ public class Vindicator extends AbstractIllager { +@@ -56,15 +56,34 @@ public class Vindicator extends AbstractIllager { super(entityType, level); } @@ -4526,7 +4534,7 @@ index 5e7506f64159ac4838eee8594c995387e2fceed0..c1a1bb0be8bc77a1c0f771924f3bb8b4 this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)); diff --git a/net/minecraft/world/entity/monster/Witch.java b/net/minecraft/world/entity/monster/Witch.java -index 9f5676b5fa0f369adb8643391738c5ae33911df7..0b3c78e646d68ef57a7cf5d7eb77a07c497bd216 100644 +index cc156f6d98f193bc98eae75bd5aaf8abe69ace4c..4c5372be4bfc68184a88825214d36477f83edf73 100644 --- a/net/minecraft/world/entity/monster/Witch.java +++ b/net/minecraft/world/entity/monster/Witch.java @@ -56,6 +56,23 @@ public class Witch extends Raider implements RangedAttackMob { @@ -4567,7 +4575,7 @@ index 9f5676b5fa0f369adb8643391738c5ae33911df7..0b3c78e646d68ef57a7cf5d7eb77a07c this.targetSelector.addGoal(2, this.healRaidersGoal); this.targetSelector.addGoal(3, this.attackPlayersGoal); diff --git a/net/minecraft/world/entity/monster/WitherSkeleton.java b/net/minecraft/world/entity/monster/WitherSkeleton.java -index eed8dbefd4d04082dc4e091c858e50309ed5c49b..b0f155564b11ff5fd2430694b937b7826df104ea 100644 +index 3ff71ba1bd29faa4d8380dad9397ab34ef930234..d8c10f5f93e3ca92a49e1df3216256450c62f219 100644 --- a/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/net/minecraft/world/entity/monster/WitherSkeleton.java @@ -34,6 +34,23 @@ public class WitherSkeleton extends AbstractSkeleton { @@ -4595,10 +4603,10 @@ index eed8dbefd4d04082dc4e091c858e50309ed5c49b..b0f155564b11ff5fd2430694b937b782 protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/net/minecraft/world/entity/monster/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java -index 9b94e74f6317f835500225b087fe93487a7a0b22..b279e33bb14dfea4813bba770daf950f5343419d 100644 +index 4405f465ad5b136390c4204b177967c6e47738dd..636b1e88f6d76a4c0110fa34e89634eee3fbdcdf 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java -@@ -85,6 +85,23 @@ public class Zoglin extends Monster implements HoglinBase { +@@ -86,6 +86,23 @@ public class Zoglin extends Monster implements HoglinBase { this.xpReward = 5; } @@ -4622,7 +4630,7 @@ index 9b94e74f6317f835500225b087fe93487a7a0b22..b279e33bb14dfea4813bba770daf950f @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -250,6 +267,7 @@ public class Zoglin extends Monster implements HoglinBase { +@@ -251,6 +268,7 @@ public class Zoglin extends Monster implements HoglinBase { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("zoglinBrain"); @@ -4631,10 +4639,10 @@ index 9b94e74f6317f835500225b087fe93487a7a0b22..b279e33bb14dfea4813bba770daf950f profilerFiller.pop(); this.updateActivity(); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index a60c7b828332fc214caea10be9bc1505e2b5d0a9..6c6806fd7204e3610142f0365d158aee33ef8b2c 100644 +index e15df574282e0f5ba5791435020bc6ac96860d15..f9233f0689b26a8c65d60ab9421c1216d436bae7 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -100,11 +100,30 @@ public class Zombie extends Monster { +@@ -104,11 +104,30 @@ public class Zombie extends Monster { this(EntityType.ZOMBIE, level); } @@ -4666,11 +4674,11 @@ index a60c7b828332fc214caea10be9bc1505e2b5d0a9..6c6806fd7204e3610142f0365d158aee } diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 9d428724f3564289f262d8c1ca11692d133a61c5..26eebc3a37890e7e79d9cf737f2853623a14015c 100644 +index 6b0bbcf99941d768d235b9f96c3e112a4dfea2fc..2d3636697a544e78113fc1e6902dd216acee070b 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -78,6 +78,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { - .ifPresent(profession -> this.setVillagerData(this.getVillagerData().setProfession(profession.value()))); +@@ -77,6 +77,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { + .ifPresent(profession -> this.setVillagerData(this.getVillagerData().withProfession(profession))); } + // Purpur start - Ridables @@ -4694,7 +4702,7 @@ index 9d428724f3564289f262d8c1ca11692d133a61c5..26eebc3a37890e7e79d9cf737f285362 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index f1e25786ef687b4680db1cca96a5ae6068e93946..369f1224ea787ae034d86d0e92696882304cb271 100644 +index eff0dec6efe043ad0cb0126061583bc5b67ba0e2..f16aa79ba5137cd6132452c21b0dc81cbf4fac8b 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -63,6 +63,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -4722,7 +4730,7 @@ index f1e25786ef687b4680db1cca96a5ae6068e93946..369f1224ea787ae034d86d0e92696882 public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; diff --git a/net/minecraft/world/entity/monster/creaking/Creaking.java b/net/minecraft/world/entity/monster/creaking/Creaking.java -index eba1e78352f956618b2796ce7cbe5d6f7e6591b6..57ac66c2de97c9b5940c1f0af663a1a26d2c8b73 100644 +index bdefd070cfebe7f3f792c998f2f53be720cbfbcd..a23d624abb0622d362af0dc816425283e25c479a 100644 --- a/net/minecraft/world/entity/monster/creaking/Creaking.java +++ b/net/minecraft/world/entity/monster/creaking/Creaking.java @@ -102,6 +102,29 @@ public class Creaking extends Monster { @@ -4755,7 +4763,7 @@ index eba1e78352f956618b2796ce7cbe5d6f7e6591b6..57ac66c2de97c9b5940c1f0af663a1a2 @Override protected BodyRotationControl createBodyControl() { return new Creaking.CreakingBodyRotationControl(this); -@@ -580,28 +603,28 @@ public class Creaking extends Monster { +@@ -571,28 +594,28 @@ public class Creaking extends Monster { } } @@ -4791,10 +4799,10 @@ index eba1e78352f956618b2796ce7cbe5d6f7e6591b6..57ac66c2de97c9b5940c1f0af663a1a2 } } diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 0ddc0fe06a1b701f88ed8f8041ecd68f7da6c86d..028e09e1d8a14d989b2c19ca62e6544a93e1f1c4 100644 +index 0d05d21158a59dc3aa648c1d6541121c5bb547e6..7c83e0612b8b0d48966aa3808d86daac79753584 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -92,6 +92,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -95,6 +95,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { this.xpReward = 5; } @@ -4818,7 +4826,7 @@ index 0ddc0fe06a1b701f88ed8f8041ecd68f7da6c86d..028e09e1d8a14d989b2c19ca62e6544a @VisibleForTesting public void setTimeInOverworld(int timeInOverworld) { this.timeInOverworld = timeInOverworld; -@@ -160,6 +177,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -163,6 +180,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("hoglinBrain"); @@ -4827,10 +4835,10 @@ index 0ddc0fe06a1b701f88ed8f8041ecd68f7da6c86d..028e09e1d8a14d989b2c19ca62e6544a profilerFiller.pop(); HoglinAi.updateActivity(this); diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index 0257eada48b35ea024520afe30596beae8a7ef1e..02d748ecb10c3e20aafc0c449b99ca5b6cd80e04 100644 +index e200e974e46de6166d56e051806c00a69aefc9bb..589e3014fb86448456c249c0255186644abb13c2 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -151,6 +151,23 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -136,6 +136,23 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento this.xpReward = 5; } @@ -4854,7 +4862,7 @@ index 0257eada48b35ea024520afe30596beae8a7ef1e..02d748ecb10c3e20aafc0c449b99ca5b @Override public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); -@@ -346,6 +363,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -321,6 +338,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("piglinBrain"); @@ -4863,7 +4871,7 @@ index 0257eada48b35ea024520afe30596beae8a7ef1e..02d748ecb10c3e20aafc0c449b99ca5b profilerFiller.pop(); PiglinAi.updateActivity(this); diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 0964b138e87357b7601ddfe937a2b9132afd5478..97241682311797faa93927e0477a7646ce53b2c8 100644 +index 219978cb0341b2d691f44c1146707d875788881e..4c8e49ba064241ec7ac505fa6f5df6d7f9c009b6 100644 --- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java @@ -65,6 +65,23 @@ public class PiglinBrute extends AbstractPiglin { @@ -4899,10 +4907,10 @@ index 0964b138e87357b7601ddfe937a2b9132afd5478..97241682311797faa93927e0477a7646 profilerFiller.pop(); PiglinBruteAi.updateActivity(this); diff --git a/net/minecraft/world/entity/monster/warden/Warden.java b/net/minecraft/world/entity/monster/warden/Warden.java -index 9f476e587d7df797129e49738f101cccca7e10b7..f968e5c99bdb23b268bc34ea1ba5d54ae9ad0ff9 100644 +index cd28ca290c081d9f5e4498f59d7b87a566f81544..8d61d5347896481f250a18d04d17fd4d2088f633 100644 --- a/net/minecraft/world/entity/monster/warden/Warden.java +++ b/net/minecraft/world/entity/monster/warden/Warden.java -@@ -129,8 +129,32 @@ public class Warden extends Monster implements VibrationSystem { +@@ -126,8 +126,32 @@ public class Warden extends Monster implements VibrationSystem { this.setPathfindingMalus(PathType.LAVA, 8.0F); this.setPathfindingMalus(PathType.DAMAGE_FIRE, 0.0F); this.setPathfindingMalus(PathType.DANGER_FIRE, 0.0F); @@ -4935,7 +4943,7 @@ index 9f476e587d7df797129e49738f101cccca7e10b7..f968e5c99bdb23b268bc34ea1ba5d54a @Override public Packet getAddEntityPacket(ServerEntity entity) { return new ClientboundAddEntityPacket(this, entity, this.hasPose(Pose.EMERGING) ? 1 : 0); -@@ -394,6 +418,7 @@ public class Warden extends Monster implements VibrationSystem { +@@ -391,6 +415,7 @@ public class Warden extends Monster implements VibrationSystem { @Contract("null->false") public boolean canTargetEntity(@Nullable Entity entity) { @@ -4944,10 +4952,10 @@ index 9f476e587d7df797129e49738f101cccca7e10b7..f968e5c99bdb23b268bc34ea1ba5d54a && this.level() == entity.level() && EntitySelector.NO_CREATIVE_OR_SPECTATOR.test(entity) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 7eb291323dfc71189ac4a160d3cb43506957aa9e..a7424ad414b72d2adaf0863bf1055f3eff5e2989 100644 +index 49d43837b88d8f278baa5062aed83a297fe20ed8..15669f9157dc3d3d5e3fb76a668c7e3b43ee8a52 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -246,6 +246,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -249,6 +249,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end - Lobotomize stuck villagers @@ -4976,7 +4984,7 @@ index 7eb291323dfc71189ac4a160d3cb43506957aa9e..a7424ad414b72d2adaf0863bf1055f3e @Override public Brain getBrain() { return (Brain)super.getBrain(); -@@ -355,7 +377,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -358,7 +380,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end - Lobotomize stuck villagers // Pufferfish start @@ -4985,7 +4993,7 @@ index 7eb291323dfc71189ac4a160d3cb43506957aa9e..a7424ad414b72d2adaf0863bf1055f3e this.getBrain().tick(level, this); // Paper - EAR 2 } else if (this.isLobotomized && shouldRestock()) restock(); // Purpur - Lobotomize stuck villagers -@@ -415,7 +437,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -418,7 +440,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return super.mobInteract(player, hand); } else if (this.isBaby()) { this.setUnhappy(); @@ -4994,7 +5002,7 @@ index 7eb291323dfc71189ac4a160d3cb43506957aa9e..a7424ad414b72d2adaf0863bf1055f3e } else { if (!this.level().isClientSide) { boolean isEmpty = this.getOffers().isEmpty(); -@@ -428,9 +450,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -431,9 +453,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } if (isEmpty) { @@ -5008,10 +5016,10 @@ index 7eb291323dfc71189ac4a160d3cb43506957aa9e..a7424ad414b72d2adaf0863bf1055f3e this.startTrading(player); } diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index fab309dc34eb88f2b9c844078f167885121675c1..0f8ec3abead11c46205cd21290c65ec2b859efdc 100644 +index b0eec451b68a6a2697b1620410f07b25c4d2fda7..21ab5911d52e49ec2de99071cb85ff2daa090dc4 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -76,6 +76,23 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -66,6 +66,23 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill } // Purpur end - Allow leashing villagers @@ -5035,7 +5043,7 @@ index fab309dc34eb88f2b9c844078f167885121675c1..0f8ec3abead11c46205cd21290c65ec2 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -@@ -137,8 +154,9 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -127,8 +144,9 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill if (!this.level().isClientSide) { if (this.getOffers().isEmpty()) { @@ -5047,10 +5055,10 @@ index fab309dc34eb88f2b9c844078f167885121675c1..0f8ec3abead11c46205cd21290c65ec2 if (this.level().purpurConfig.wanderingTraderAllowTrading) { // Purpur - Add config for villager trading this.setTradingPlayer(player); diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index 87aabf903e64a9ab241917967616cf78938658f4..d972774332836c91a2cc31bfd89a21889cb9954b 100644 +index bd4d3a920e015db49436336cc180bc0b937750a0..2417c26a03decf756ad93cd54265277c95c653ca 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java -@@ -220,6 +220,19 @@ public abstract class Player extends LivingEntity { +@@ -230,6 +230,19 @@ public abstract class Player extends LivingEntity { } // CraftBukkit end @@ -5071,7 +5079,7 @@ index 87aabf903e64a9ab241917967616cf78938658f4..d972774332836c91a2cc31bfd89a2188 super(EntityType.PLAYER, level); this.setUUID(gameProfile.getId()); diff --git a/net/minecraft/world/entity/projectile/LlamaSpit.java b/net/minecraft/world/entity/projectile/LlamaSpit.java -index 4880db97135d54fa72f64c108b2bd4ded096438b..bc102b049047d6e2a1d29e10f92cdf5ae2c140bd 100644 +index f736f72b8e76dd82236badcdd2756f0d4da89aa4..0dbfbadcabcf1b719addb034e676cb51b74199d7 100644 --- a/net/minecraft/world/entity/projectile/LlamaSpit.java +++ b/net/minecraft/world/entity/projectile/LlamaSpit.java @@ -33,6 +33,12 @@ public class LlamaSpit extends Projectile { @@ -5088,10 +5096,10 @@ index 4880db97135d54fa72f64c108b2bd4ded096438b..bc102b049047d6e2a1d29e10f92cdf5a protected double getDefaultGravity() { return 0.06; diff --git a/net/minecraft/world/entity/projectile/WitherSkull.java b/net/minecraft/world/entity/projectile/WitherSkull.java -index 70a6f4f8aaebf4e3fc40676480a9e8cbb115c107..a0b909c745ea60cae73def06f9d947345911c5e4 100644 +index c96dc62b9f890335892a8075ed9b1285f98c9e8a..8e95577de28fc4834dcfc3d4fed747d9d14b1618 100644 --- a/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/net/minecraft/world/entity/projectile/WitherSkull.java -@@ -110,6 +110,14 @@ public class WitherSkull extends AbstractHurtingProjectile { +@@ -109,6 +109,14 @@ public class WitherSkull extends AbstractHurtingProjectile { } // Purpur end - Add canSaveToDisk to Entity diff --git a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch index 0e68624d5..8f2f93849 100644 --- a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch +++ b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java -index d0313fd5368baa53ec511c8c07fc78a1f1ecec4e..898b1e01026ec1f44cfe60e9f18a997c86e30594 100644 +index 351f92e1627f465a9a292d4a5e5c256a8e323ab3..b6f52326f52ce2885ece346944a321d7c924a470 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java -@@ -45,6 +45,13 @@ public class GlowSquid extends Squid { +@@ -46,6 +46,13 @@ public class GlowSquid extends Squid { } // Purpur end - Ridables @@ -23,19 +23,19 @@ index d0313fd5368baa53ec511c8c07fc78a1f1ecec4e..898b1e01026ec1f44cfe60e9f18a997c protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 2de776d7570f97f763033392ceeb8ffdbc0fafcd..b96fc67d28809f66181b1d36b475a8f85d596ea7 100644 +index a6739650bfee639925a63f345ac39c6e0c5c3209..5208518ad9fe86e25b07aeffa9633407aa6f2f1c 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -311,6 +311,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -278,6 +278,7 @@ public abstract class LivingEntity extends Entity implements Attackable { protected LivingEntity(EntityType entityType, Level level) { super(entityType, level); this.attributes = new AttributeMap(DefaultAttributes.getSupplier(entityType), this); // Purpur - Ridables + this.initAttributes(); // Purpur - Configurable entity base attributes - this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit + this.craftAttributes = new org.bukkit.craftbukkit.attribute.CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - this.setHealth(this.getMaxHealth()) inlined and simplified to skip the instanceof check for Player, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, this.getMaxHealth()); -@@ -324,6 +325,8 @@ public abstract class LivingEntity extends Entity implements Attackable { - this.brain = this.makeBrain(new Dynamic<>(nbtOps, nbtOps.createMap(ImmutableMap.of(nbtOps.createString("memories"), nbtOps.emptyMap())))); +@@ -297,6 +298,8 @@ public abstract class LivingEntity extends Entity implements Attackable { + return new EntityEquipment(); } + protected void initAttributes() {}// Purpur - Configurable entity base attributes @@ -44,10 +44,10 @@ index 2de776d7570f97f763033392ceeb8ffdbc0fafcd..b96fc67d28809f66181b1d36b475a8f8 return this.brain; } diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java -index e7ea944e77175ee4051b8e7361c502d0cc2115d5..ecbec552e5cd1935f57872d2fb502d3e9743e3d8 100644 +index 99845dde0c633714acefb0bb482d8422d946dd46..581894f58df1df4b50aa537252cb4be6bbcebf80 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java -@@ -94,6 +94,21 @@ public class Bat extends AmbientCreature { +@@ -95,6 +95,21 @@ public class Bat extends AmbientCreature { } // Purpur end - Ridables @@ -70,7 +70,7 @@ index e7ea944e77175ee4051b8e7361c502d0cc2115d5..ecbec552e5cd1935f57872d2fb502d3e public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index b9bf40c389460d65d2566786ddd6f6740243e9a4..c150ba5f706b3dd51925533300c0432ccf5e2b81 100644 +index e55507fa09001b431519ef9c76bf444d7df3f7ea..d07a708f06ba738369882ddaa968c2de9c6c560e 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -472,6 +472,14 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -89,10 +89,10 @@ index b9bf40c389460d65d2566786ddd6f6740243e9a4..c150ba5f706b3dd51925533300c0432c public int getRemainingPersistentAngerTime() { return this.entityData.get(DATA_REMAINING_ANGER_TIME); diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index f066b0acfa0e954f6d71e62962c76afa1f05a4a5..98ce277c5b27591e22daa3c85241be1b8689bfae 100644 +index 74a44f97dcf4fabeac28a2f8b31e9b717d47ea49..d2813c68df511a2702f2b57c31f828730a9a21c8 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java -@@ -118,6 +118,14 @@ public class Cat extends TamableAnimal implements VariantHolder itemStack.is(ItemTags.CAT_FOOD), true); + this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true); diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java -index aba1bf732bb78a24dba1f063d65894fde92789ef..509163f409a5b8988a484aedb2f3ddf042d5eb13 100644 +index 8708a6e5a493b6150671b7bdd6b9971371ef309c..40fc57f1c298e1c70fddf8b6eb2f3e8e9e41e60c 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java -@@ -68,6 +68,14 @@ public class Chicken extends Animal { +@@ -88,6 +88,14 @@ public class Chicken extends Animal { } // Purpur end - Ridables @@ -127,7 +127,7 @@ index aba1bf732bb78a24dba1f063d65894fde92789ef..509163f409a5b8988a484aedb2f3ddf0 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Cod.java b/net/minecraft/world/entity/animal/Cod.java -index 6a19086e272363701260801f3c6db9b5c91b8ef5..434e1fabf2e360a8f5f4eefed96e3883aa786d10 100644 +index 651c9243902e3c48fb438913974e996d67d6f746..ed52fbbf93e7a238d0f45981f8629ba8613bf3d4 100644 --- a/net/minecraft/world/entity/animal/Cod.java +++ b/net/minecraft/world/entity/animal/Cod.java @@ -25,6 +25,13 @@ public class Cod extends AbstractSchoolingFish { @@ -145,10 +145,10 @@ index 6a19086e272363701260801f3c6db9b5c91b8ef5..434e1fabf2e360a8f5f4eefed96e3883 public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index 656babc0c8810a85eb9f78ced1f3ad9551fdc286..d2a4bfa5334f7361067e4adac36ba5a4a4fa6ad8 100644 +index ff1b8c93baccf1d417ef0f9338a6f8d66716dafc..7c4f1eadcbc13010f6b4b5748b8e0d5c822458e1 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java -@@ -55,6 +55,14 @@ public class Cow extends Animal { +@@ -45,6 +45,14 @@ public class Cow extends AbstractCow { } // Purpur end - Ridables @@ -161,13 +161,13 @@ index 656babc0c8810a85eb9f78ced1f3ad9551fdc286..d2a4bfa5334f7361067e4adac36ba5a4 + // Purpur end - Configurable entity base attributes + @Override - protected void registerGoals() { - this.goalSelector.addGoal(0, new FloatGoal(this)); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java -index 35bce598bb5857356823594d2a001006ce19f835..5b764c686e8759a7b04a7b50708c69629be02c04 100644 +index 144b163a4a82997ca88e906bbadcf5835636aece..932ec7ed4ec102f64fa977835d2c7ebe23afa6e3 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java -@@ -148,6 +148,14 @@ public class Dolphin extends AgeableWaterCreature { +@@ -150,6 +150,14 @@ public class Dolphin extends AgeableWaterCreature { } // Purpur end - Ridables @@ -183,10 +183,10 @@ index 35bce598bb5857356823594d2a001006ce19f835..5b764c686e8759a7b04a7b50708c6962 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 8b0a813f9dd001c6dd108ba7aac04d134a20fbc1..8bf893837586ae2a9b4ef7564d242e16e4863b5d 100644 +index eb25d655140e425208ee9eeae24ebb756f1b7306..8d69b6bb1d5efd0b47595a12acdd2088cddd5ace 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -167,6 +167,14 @@ public class Fox extends Animal implements VariantHolder { +@@ -179,6 +179,14 @@ public class Fox extends Animal { } // Purpur end - Ridables @@ -202,10 +202,10 @@ index 8b0a813f9dd001c6dd108ba7aac04d134a20fbc1..8bf893837586ae2a9b4ef7564d242e16 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java -index 223c4796f659a24062a719045e484a22d31ab2f0..37a353cbb0e9b16e0fc92bd1bc8194cb4cd3c13a 100644 +index 3a78342a9ce9b5393a280530b50a8c843e201845..fd0d1abcb34862fc7a812f1e3d96969a5c917352 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java -@@ -90,6 +90,14 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -91,6 +91,14 @@ public class IronGolem extends AbstractGolem implements NeutralMob { } // Purpur end - Ridables @@ -221,10 +221,10 @@ index 223c4796f659a24062a719045e484a22d31ab2f0..37a353cbb0e9b16e0fc92bd1bc8194cb protected void registerGoals() { if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur - Iron golem calm anger options diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index 1292146341022483f78a9128ef9d7a88089274a0..990723c31aa1040a4e45b9857a18d86287ef91b4 100644 +index f04342dd4addb2be47533f12a2a475f12c1869f1..af035af33db993cf7c573b87df576529e98a842e 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -72,6 +72,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { +@@ -144,6 +144,14 @@ public class Rabbit extends Animal { } // Purpur end - Ridables @@ -385,10 +385,10 @@ index 8cac46951938c80fae3499e8b53709c25d86e9bd..e71161ecc9d4ee3fe29fa3a27d11d63e public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Salmon.java b/net/minecraft/world/entity/animal/Salmon.java -index ebbd6d39c3f5d6c66445c2c743785ed369408389..93eb3cc3605f694337c1604e2db63fed04693617 100644 +index 2b60d92eec3192416b0c39ddaa1fa490d15a6137..8559e7e8c5163eb55b997521dca2e96b5ae3c9bc 100644 --- a/net/minecraft/world/entity/animal/Salmon.java +++ b/net/minecraft/world/entity/animal/Salmon.java -@@ -47,6 +47,13 @@ public class Salmon extends AbstractSchoolingFish implements VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/net/minecraft/world/entity/animal/armadillo/Armadillo.java -index 87a190d8646d8bbed8c182f9f0f7d8c398e63d26..c10ebb66dec26b6ccc223e98effa0b9a68363626 100644 +index 2b38e942492b3324683e05d36ed906462da92ac4..67a93960b3c6fe5725783ebf9f1c5b57e931f58c 100644 --- a/net/minecraft/world/entity/animal/armadillo/Armadillo.java +++ b/net/minecraft/world/entity/animal/armadillo/Armadillo.java -@@ -97,6 +97,14 @@ public class Armadillo extends Animal { +@@ -98,6 +98,14 @@ public class Armadillo extends Animal { } // Purpur end - Ridables @@ -554,10 +516,10 @@ index 87a190d8646d8bbed8c182f9f0f7d8c398e63d26..c10ebb66dec26b6ccc223e98effa0b9a protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 2054e4624da0c9b04ea69b9bf39443c4574d48be..f2f09a529e9db88784ff4299fdf3966046c736ab 100644 +index f3f0f5d7fe79e87b893aa52113f02a774ccc057a..83b1080765eb49a8a606258bb2db8b1a7daea081 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -132,6 +132,14 @@ public class Axolotl extends Animal implements VariantHolder, B +@@ -137,6 +137,14 @@ public class Axolotl extends Animal implements Bucketable { } // Purpur end - Ridables @@ -573,10 +535,10 @@ index 2054e4624da0c9b04ea69b9bf39443c4574d48be..f2f09a529e9db88784ff4299fdf39660 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; diff --git a/net/minecraft/world/entity/animal/camel/Camel.java b/net/minecraft/world/entity/animal/camel/Camel.java -index 11311d2ec37d825e73e2218e60e2606dd3a25a1d..1d7e2358bac193af48dc4b7f5b0295e3bffa152b 100644 +index 3d4efc2918fd10a63065a052d9e460b49489cf00..6c6ef89aacbc328a2cb2dc05022998dbd79cfaf8 100644 --- a/net/minecraft/world/entity/animal/camel/Camel.java +++ b/net/minecraft/world/entity/animal/camel/Camel.java -@@ -322,6 +322,23 @@ public class Camel extends AbstractHorse { +@@ -334,6 +334,23 @@ public class Camel extends AbstractHorse { return this.dashCooldown; } @@ -598,13 +560,13 @@ index 11311d2ec37d825e73e2218e60e2606dd3a25a1d..1d7e2358bac193af48dc4b7f5b0295e3 + // Purpur end - Configurable entity base attributes + @Override - protected SoundEvent getAmbientSound() { + public SoundEvent getAmbientSound() { return SoundEvents.CAMEL_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 828406060e50ff62586929371aafb46ef7d81f92..56dc7011ed07f0bd5870fbadde2b5c0c630c5edd 100644 +index 8bd9fd0a017b9822129119d7e16e872f0bdc8c2d..601e2912790759487c8d2f270f30a82689c52236 100644 --- a/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/net/minecraft/world/entity/animal/horse/AbstractHorse.java -@@ -218,6 +218,46 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -138,6 +138,46 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory } // Purpur end - Ridables @@ -651,7 +613,7 @@ index 828406060e50ff62586929371aafb46ef7d81f92..56dc7011ed07f0bd5870fbadde2b5c0c @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HorseHasRider(this)); // Purpur - Ridables -@@ -1218,7 +1258,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -1054,7 +1094,7 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory spawnGroupData = new AgeableMob.AgeableMobGroupData(0.2F); } @@ -661,7 +623,7 @@ index 828406060e50ff62586929371aafb46ef7d81f92..56dc7011ed07f0bd5870fbadde2b5c0c } diff --git a/net/minecraft/world/entity/animal/horse/Donkey.java b/net/minecraft/world/entity/animal/horse/Donkey.java -index ee3fa710e95f2e84f7f9bdce1159d1136815172d..223f1d109680e3643ab2c8343be22713e89755fd 100644 +index 66dda36aeb668488076f0c93dc83ab6cc4ec1a31..3aa12702cd1f4ef160180bc6ba64a6566cbddc9d 100644 --- a/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/net/minecraft/world/entity/animal/horse/Donkey.java @@ -23,6 +23,23 @@ public class Donkey extends AbstractChestedHorse { @@ -686,13 +648,13 @@ index ee3fa710e95f2e84f7f9bdce1159d1136815172d..223f1d109680e3643ab2c8343be22713 + // Purpur end - Configurable entity base attributes + @Override - protected SoundEvent getAmbientSound() { + public SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java -index 361bf346153912bcbfcf962d7f716dfe12ae2a7b..8bd118e82da9e4d4153de0a3efaf6d69e3c4c540 100644 +index 5b2d1fedf61880990ca29b51b3d83a19e79047d1..e0346014de51958976459eeb6677d886e7f261ab 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java -@@ -50,6 +50,23 @@ public class Horse extends AbstractHorse implements VariantHolder { +@@ -53,6 +53,23 @@ public class Horse extends AbstractHorse { } // Purpur end - Ridables @@ -717,10 +679,10 @@ index 361bf346153912bcbfcf962d7f716dfe12ae2a7b..8bd118e82da9e4d4153de0a3efaf6d69 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index 164a429d432badcb315e8ece406e29e576a11265..58e726dd33f572a31b4910b9ff666c4252fb03a9 100644 +index b60fa4cb07d8dc6b52e76b5e9f596bafc815ba2d..10e7724d424cd39c96b91cf3de4bc4524d9311a4 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -124,6 +124,23 @@ public class Llama extends AbstractChestedHorse implements VariantHolder entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index bd0f4d77260f5b123856fc7e72d5f8e74bb45321..1d1cf8748e3fba2e2963ad2fa153fbfe990f5087 100644 +index d75eb765f271fb7e33d0332079aea024788dc227..09804a8c789bff4f40277c2697c3f9aed00c4d15 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -74,6 +74,16 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -1210,7 +1210,7 @@ index bd0f4d77260f5b123856fc7e72d5f8e74bb45321..1d1cf8748e3fba2e2963ad2fa153fbfe protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/MagmaCube.java b/net/minecraft/world/entity/monster/MagmaCube.java -index f10b204c18b88e9110cebf050b60c23367ea3aa0..2c6b0fd46d9ed6a8d1ca7e90ebf596dd3f310f0e 100644 +index 4a1299d6cee2807522de0c2d0d4745c5810e4121..bb1364c4a220cc93f7ac01cbaa617561de4cd2e3 100644 --- a/net/minecraft/world/entity/monster/MagmaCube.java +++ b/net/minecraft/world/entity/monster/MagmaCube.java @@ -46,6 +46,28 @@ public class MagmaCube extends Slime { @@ -1243,10 +1243,10 @@ index f10b204c18b88e9110cebf050b60c23367ea3aa0..2c6b0fd46d9ed6a8d1ca7e90ebf596dd return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 75c6a43a3ab4851a47990402bee49f7e8305cd60..08fc2dc0fecfa370c99e877d502149a8ea147e5f 100644 +index 2653cf2c353d7ae360201e74c4860a4745dd4948..2f14561a3722f8175a234ad656ef64d4c58e3b96 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -151,7 +151,10 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -152,7 +152,10 @@ public class Phantom extends FlyingMob implements Enemy { private void updatePhantomSizeInfo() { this.refreshDimensions(); if (level().purpurConfig.phantomFlamesOnSwoop && attackPhase == AttackPhase.SWOOP) shoot(); // Purpur - Ridables - Phantom flames on swoop @@ -1258,7 +1258,7 @@ index 75c6a43a3ab4851a47990402bee49f7e8305cd60..08fc2dc0fecfa370c99e877d502149a8 } public int getPhantomSize() { -@@ -176,6 +179,23 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -177,6 +180,23 @@ public class Phantom extends FlyingMob implements Enemy { return true; } @@ -1283,7 +1283,7 @@ index 75c6a43a3ab4851a47990402bee49f7e8305cd60..08fc2dc0fecfa370c99e877d502149a8 public void tick() { super.tick(); diff --git a/net/minecraft/world/entity/monster/Pillager.java b/net/minecraft/world/entity/monster/Pillager.java -index 4e799981f04cd17a34f043dda82869adcf16ea98..9586aa3f3eb61fb0c1224df9d0104da69d7fa6bb 100644 +index 852316c9a9d0860a538eae32001e60f05dc6938f..eb4fcf0e78c39a4b94b7edb733694a87e3103552 100644 --- a/net/minecraft/world/entity/monster/Pillager.java +++ b/net/minecraft/world/entity/monster/Pillager.java @@ -80,6 +80,14 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve @@ -1302,10 +1302,10 @@ index 4e799981f04cd17a34f043dda82869adcf16ea98..9586aa3f3eb61fb0c1224df9d0104da6 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index 09910d526cdf3484474463ee4ea1ca8501280e45..55ddffbea1b86fa0fd5c5f435a5f7633702c3e5b 100644 +index 382ef8b0f8d5c5ef6a7698097e9b41b7adc04353..3adf0ec66db61b556a06ffe0fe835b57f8520948 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java -@@ -89,6 +89,14 @@ public class Ravager extends Raider { +@@ -92,6 +92,14 @@ public class Ravager extends Raider { } // Purpur end - Ridables @@ -1321,10 +1321,10 @@ index 09910d526cdf3484474463ee4ea1ca8501280e45..55ddffbea1b86fa0fd5c5f435a5f7633 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index e0a496a0c584e1f90967a8528a73536fd991e774..03db684c122a07176aa1365550da935cdb66a1b9 100644 +index 14cddb216b32990c2ce2381a4d6bf6f76c686f95..2b19edafe00be425427f47cac045bf301e3caa39 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -121,6 +121,14 @@ public class Shulker extends AbstractGolem implements VariantHolder variant) { diff --git a/net/minecraft/world/entity/monster/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java -index 2e96d3de312c49fafc173e6d0c69ada1b11ae4ef..d3befe91bc65bbc2bc0d8651b78e8c9576cd0f75 100644 +index 19dcc657fd2a995638d5e23c2b043d012d978e79..c200d57841304ba0d7a76fdd9a440fe9f2b25136 100644 --- a/net/minecraft/world/entity/monster/Silverfish.java +++ b/net/minecraft/world/entity/monster/Silverfish.java @@ -56,6 +56,16 @@ public class Silverfish extends Monster { @@ -1370,10 +1370,10 @@ index 2e96d3de312c49fafc173e6d0c69ada1b11ae4ef..d3befe91bc65bbc2bc0d8651b78e8c95 protected void registerGoals() { this.friendsGoal = new Silverfish.SilverfishWakeUpFriendsGoal(this); diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java -index 4fa5495893ddaa3e4df1b44c16476948b7419370..e33c998233dbe366dfab3d7571e6ae879cd30ed0 100644 +index 9a197c2be40e0a69f4a68ff045c2395802f0a5f3..54941e5f93579db512472d324a48a9b272787b91 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -42,6 +42,13 @@ public class Skeleton extends AbstractSkeleton { +@@ -43,6 +43,13 @@ public class Skeleton extends AbstractSkeleton { } // Purpur end - Ridables @@ -1388,10 +1388,10 @@ index 4fa5495893ddaa3e4df1b44c16476948b7419370..e33c998233dbe366dfab3d7571e6ae87 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java -index 7d31d68ac0fce102af480a47db73409926611428..a6613f006521cbe93fee2eff3c348913b5939969 100644 +index 9127e99d632bcd01c2f042c33dc87dd49736b96f..015af82ab82c3676a7b80c01b83eaf61ee28b61b 100644 --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java -@@ -99,6 +99,39 @@ public class Slime extends Mob implements Enemy { +@@ -100,6 +100,39 @@ public class Slime extends Mob implements Enemy { } // Purpur end - Ridables @@ -1431,7 +1431,7 @@ index 7d31d68ac0fce102af480a47db73409926611428..a6613f006521cbe93fee2eff3c348913 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables -@@ -129,9 +162,9 @@ public class Slime extends Mob implements Enemy { +@@ -130,9 +163,9 @@ public class Slime extends Mob implements Enemy { this.entityData.set(ID_SIZE, i); this.reapplyPosition(); this.refreshDimensions(); @@ -1444,7 +1444,7 @@ index 7d31d68ac0fce102af480a47db73409926611428..a6613f006521cbe93fee2eff3c348913 this.setHealth(this.getMaxHealth()); } diff --git a/net/minecraft/world/entity/monster/Spider.java b/net/minecraft/world/entity/monster/Spider.java -index ea83335dd0d128b32d2fe513eab82e642b533b4c..38d75a0a024fa1e7b12bfc5e3ab0ec8bb98cb17a 100644 +index 5721a690859a1232234c9f6a4385f7185d9800ec..c2bcf769a85a28616472b050cd09d3d6cc60e81f 100644 --- a/net/minecraft/world/entity/monster/Spider.java +++ b/net/minecraft/world/entity/monster/Spider.java @@ -67,6 +67,14 @@ public class Spider extends Monster { @@ -1463,7 +1463,7 @@ index ea83335dd0d128b32d2fe513eab82e642b533b4c..38d75a0a024fa1e7b12bfc5e3ab0ec8b protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Stray.java b/net/minecraft/world/entity/monster/Stray.java -index ed7ba19870a09ac78c1f069040a25e47c4b19d3a..0323456fca18450c22bf3999df97ff148a89e4c5 100644 +index 4a7dbd1e4d927240433882a95822e9edfc83b827..b5465b552c5aea7603a54cfdeafe451bfaf38bf2 100644 --- a/net/minecraft/world/entity/monster/Stray.java +++ b/net/minecraft/world/entity/monster/Stray.java @@ -39,6 +39,13 @@ public class Stray extends AbstractSkeleton { @@ -1481,10 +1481,10 @@ index ed7ba19870a09ac78c1f069040a25e47c4b19d3a..0323456fca18450c22bf3999df97ff14 EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java -index 78671f02ef28f4a3b796b357d21fb4c9b64c153e..be0dc92bf5ae3da1368a649e9c4e7ff5dbb1c67c 100644 +index bb46a6ec3ad6a7d0943bf61028d5f9abf76bbeb7..4ea92637677997ab4c98da437394f5682ba2389a 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java -@@ -111,6 +111,14 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -109,6 +109,14 @@ public class Strider extends Animal implements ItemSteerable { } // Purpur end - Ridables @@ -1500,7 +1500,7 @@ index 78671f02ef28f4a3b796b357d21fb4c9b64c153e..be0dc92bf5ae3da1368a649e9c4e7ff5 EntityType entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index 26528bc9a9cffb68f82917a3e70900cfb65304d7..8356906b2c0707e21021bb05f9ca01a95682880a 100644 +index 129c712f767fbbdcc7d0df83f838194102efcd15..43de5ca497f5e3ac3d64345cb998f392852e6e3b 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -102,6 +102,14 @@ public class Vex extends Monster implements TraceableEntity { @@ -1519,10 +1519,10 @@ index 26528bc9a9cffb68f82917a3e70900cfb65304d7..8356906b2c0707e21021bb05f9ca01a9 public boolean isFlapping() { return this.tickCount % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index c1a1bb0be8bc77a1c0f771924f3bb8b4936d367b..0fc1b458101ba9d98d25c9637337caf0949bb893 100644 +index 922c5ce69fc2a3cb53dc230f4efe96bde91cd96a..01a5357d5359394b61f2456fdee8bf3aadf0ca32 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -72,6 +72,14 @@ public class Vindicator extends AbstractIllager { +@@ -73,6 +73,14 @@ public class Vindicator extends AbstractIllager { } // Purpur end - Ridables @@ -1538,7 +1538,7 @@ index c1a1bb0be8bc77a1c0f771924f3bb8b4936d367b..0fc1b458101ba9d98d25c9637337caf0 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Witch.java b/net/minecraft/world/entity/monster/Witch.java -index 0b3c78e646d68ef57a7cf5d7eb77a07c497bd216..ff8380246f6c6c805b222a91ac6a1eb0d130558d 100644 +index 4c5372be4bfc68184a88825214d36477f83edf73..2ff6ae7e1c809fa6607cf4d8685ba9b8ac46064c 100644 --- a/net/minecraft/world/entity/monster/Witch.java +++ b/net/minecraft/world/entity/monster/Witch.java @@ -73,6 +73,14 @@ public class Witch extends Raider implements RangedAttackMob { @@ -1557,7 +1557,7 @@ index 0b3c78e646d68ef57a7cf5d7eb77a07c497bd216..ff8380246f6c6c805b222a91ac6a1eb0 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/WitherSkeleton.java b/net/minecraft/world/entity/monster/WitherSkeleton.java -index b0f155564b11ff5fd2430694b937b7826df104ea..3342f2d92830049837636ff10b5e52f0d85fbd2c 100644 +index d8c10f5f93e3ca92a49e1df3216256450c62f219..213530a2378411db2bc597ba7e0bb68cfdb3ebc9 100644 --- a/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/net/minecraft/world/entity/monster/WitherSkeleton.java @@ -51,6 +51,14 @@ public class WitherSkeleton extends AbstractSkeleton { @@ -1576,10 +1576,10 @@ index b0f155564b11ff5fd2430694b937b7826df104ea..3342f2d92830049837636ff10b5e52f0 protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/net/minecraft/world/entity/monster/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java -index b279e33bb14dfea4813bba770daf950f5343419d..132b38d717ac3c5acc64a5ec519f345ac57021d8 100644 +index 636b1e88f6d76a4c0110fa34e89634eee3fbdcdf..9f5db385dabb01bda033aecaebd1d9b7c9e2ed0b 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java -@@ -102,6 +102,14 @@ public class Zoglin extends Monster implements HoglinBase { +@@ -103,6 +103,14 @@ public class Zoglin extends Monster implements HoglinBase { } // Purpur end - Ridables @@ -1595,10 +1595,10 @@ index b279e33bb14dfea4813bba770daf950f5343419d..132b38d717ac3c5acc64a5ec519f345a protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index 9f476680247f50ca9381a4919dadc15f210a543c..73dfc60d9d30ce53a75eaac2630cdd9a8c508ccc 100644 +index f9233f0689b26a8c65d60ab9421c1216d436bae7..126c5982c1b274cad67649b8e26391c7c4011bab 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -117,6 +117,14 @@ public class Zombie extends Monster { +@@ -121,6 +121,14 @@ public class Zombie extends Monster { } // Purpur end - Ridables @@ -1613,7 +1613,7 @@ index 9f476680247f50ca9381a4919dadc15f210a543c..73dfc60d9d30ce53a75eaac2630cdd9a @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables -@@ -631,7 +639,7 @@ public class Zombie extends Monster { +@@ -633,7 +641,7 @@ public class Zombie extends Monster { } protected void randomizeReinforcementsChance() { @@ -1623,10 +1623,10 @@ index 9f476680247f50ca9381a4919dadc15f210a543c..73dfc60d9d30ce53a75eaac2630cdd9a @Override diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 33bb29bc03bce90750b3b9376a6ed848208a569d..578cfc33a493b5ebc2ed42733577129a8953a461 100644 +index 2d3636697a544e78113fc1e6902dd216acee070b..239e78203dec09653ef8e001aef3e4b95b0f7a7c 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -95,6 +95,18 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -94,6 +94,18 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } // Purpur end - Ridables @@ -1646,7 +1646,7 @@ index 33bb29bc03bce90750b3b9376a6ed848208a569d..578cfc33a493b5ebc2ed42733577129a protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 369f1224ea787ae034d86d0e92696882304cb271..1424954f5b4cf0fbe821425cd741b4b5c1bfed50 100644 +index f16aa79ba5137cd6132452c21b0dc81cbf4fac8b..ada982eb4dca7c75a5fd3576d3793f1f12819e51 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -80,6 +80,14 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -1664,7 +1664,7 @@ index 369f1224ea787ae034d86d0e92696882304cb271..1424954f5b4cf0fbe821425cd741b4b5 @Override public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; -@@ -262,7 +270,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -265,7 +273,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @Override protected void randomizeReinforcementsChance() { @@ -1674,7 +1674,7 @@ index 369f1224ea787ae034d86d0e92696882304cb271..1424954f5b4cf0fbe821425cd741b4b5 @Nullable diff --git a/net/minecraft/world/entity/monster/creaking/Creaking.java b/net/minecraft/world/entity/monster/creaking/Creaking.java -index 57ac66c2de97c9b5940c1f0af663a1a26d2c8b73..887a81ea82b86edceaa46eb2032f53fccb84e158 100644 +index a23d624abb0622d362af0dc816425283e25c479a..d19f34616942177e736ba507c27ec93ba1e1e903 100644 --- a/net/minecraft/world/entity/monster/creaking/Creaking.java +++ b/net/minecraft/world/entity/monster/creaking/Creaking.java @@ -125,6 +125,14 @@ public class Creaking extends Monster { @@ -1693,10 +1693,10 @@ index 57ac66c2de97c9b5940c1f0af663a1a26d2c8b73..887a81ea82b86edceaa46eb2032f53fc protected BodyRotationControl createBodyControl() { return new Creaking.CreakingBodyRotationControl(this); diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 028e09e1d8a14d989b2c19ca62e6544a93e1f1c4..54924cd7c84cbcd22ffc0bd37fc24f24e73c18bc 100644 +index 7c83e0612b8b0d48966aa3808d86daac79753584..6b0eb12e9d879f22098eb2294d0d73db6ca266ed 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -109,6 +109,14 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -112,6 +112,14 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Ridables @@ -1712,10 +1712,10 @@ index 028e09e1d8a14d989b2c19ca62e6544a93e1f1c4..54924cd7c84cbcd22ffc0bd37fc24f24 public void setTimeInOverworld(int timeInOverworld) { this.timeInOverworld = timeInOverworld; diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index 02d748ecb10c3e20aafc0c449b99ca5b6cd80e04..897c57263ab7347987b289016a71d11f693bc8b2 100644 +index 589e3014fb86448456c249c0255186644abb13c2..b37038568b83db1602dca06aa06d72c4c4978cdd 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -168,6 +168,14 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -153,6 +153,14 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento } // Purpur end - Ridables @@ -1731,7 +1731,7 @@ index 02d748ecb10c3e20aafc0c449b99ca5b6cd80e04..897c57263ab7347987b289016a71d11f public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 97241682311797faa93927e0477a7646ce53b2c8..eb82252cd87797927e153974b9280b5eaa251080 100644 +index 4c8e49ba064241ec7ac505fa6f5df6d7f9c009b6..f52aba35ee7e202074cda8fb4dfd6a7d9ded1f09 100644 --- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java @@ -82,6 +82,14 @@ public class PiglinBrute extends AbstractPiglin { @@ -1750,10 +1750,10 @@ index 97241682311797faa93927e0477a7646ce53b2c8..eb82252cd87797927e153974b9280b5e return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 52b54c59efd68a955a6e7cc49b01f614043c505d..c71d0f8efacb60e49395567fdc0c1c1e6e6f5aa8 100644 +index 15669f9157dc3d3d5e3fb76a668c7e3b43ee8a52..b2687ee9494d491971fa4124382b214d7c3ba9be 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -268,6 +268,14 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -271,6 +271,14 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end - Ridables @@ -1769,10 +1769,10 @@ index 52b54c59efd68a955a6e7cc49b01f614043c505d..c71d0f8efacb60e49395567fdc0c1c1e public Brain getBrain() { return (Brain)super.getBrain(); diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 7e4d14d30eb3f06c0c7426e09084355ab4f3857d..b5af32a431b5ffe20b32bd82ccfae9b8343d0592 100644 +index 21ab5911d52e49ec2de99071cb85ff2daa090dc4..4abc4037a059b9c1dc58bf7a776e6269c5188868 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -93,6 +93,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -83,6 +83,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill } // Purpur end - Ridables diff --git a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch index c44228c21..3650fe2a9 100644 --- a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch +++ b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 2d09f2a2c97f29ac0d941b7a3fb941102a5d545e..94abb9d8f6381aee000dbd0720477db8b7ca279c 100644 +index ccea424d813a4c137fa15612b7bcf4fdb5c9a811..a1304bc3b1ebb9fa246004ae418481d48c46975c 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -1027,6 +1027,27 @@ public abstract class PlayerList { +@@ -1029,6 +1029,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API @@ -37,10 +37,10 @@ index 2d09f2a2c97f29ac0d941b7a3fb941102a5d545e..94abb9d8f6381aee000dbd0720477db8 public boolean isWhiteListed(GameProfile profile) { diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index d0321875d2a2b612b438cc7973a7e9f172a61778..15308ff3ed5835e3b8f41e7ddc2045f424e14660 100644 +index 2417c26a03decf756ad93cd54265277c95c653ca..87c8bc6f9128d2fcb19628bc3ef354e517b632bb 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java -@@ -202,6 +202,7 @@ public abstract class Player extends LivingEntity { +@@ -212,6 +212,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 burpDelay = 0; // Purpur - Burp delay public boolean canPortalInstant = false; // Purpur - Add portal permission bypass @@ -49,7 +49,7 @@ index d0321875d2a2b612b438cc7973a7e9f172a61778..15308ff3ed5835e3b8f41e7ddc2045f4 // CraftBukkit start public boolean fauxSleeping; diff --git a/net/minecraft/world/inventory/ChestMenu.java b/net/minecraft/world/inventory/ChestMenu.java -index 280169afbd637eeb67ddf7eaeb4eecd464a128d5..ba7730a24831efa33de4c5ffce57bfa7177f89d6 100644 +index 0fffa384f928ab84451331380968fb4650eafe26..0399092c9f7a43ac100c11505176ade6d95a39da 100644 --- a/net/minecraft/world/inventory/ChestMenu.java +++ b/net/minecraft/world/inventory/ChestMenu.java @@ -66,10 +66,30 @@ public class ChestMenu extends AbstractContainerMenu { @@ -84,7 +84,7 @@ index 280169afbd637eeb67ddf7eaeb4eecd464a128d5..ba7730a24831efa33de4c5ffce57bfa7 return new ChestMenu(MenuType.GENERIC_9x6, containerId, playerInventory, container, 6); } diff --git a/net/minecraft/world/inventory/PlayerEnderChestContainer.java b/net/minecraft/world/inventory/PlayerEnderChestContainer.java -index a6a359bab2a727f4631b633a8bb370dd40decc75..d2d75e5c34c97300ce5da8c7ea70958aba31fa4a 100644 +index bc2b95973192069fc64581b59583b19df876f55d..b68d57eee9605dba8ecd31f82185ec3ea81d60c1 100644 --- a/net/minecraft/world/inventory/PlayerEnderChestContainer.java +++ b/net/minecraft/world/inventory/PlayerEnderChestContainer.java @@ -25,11 +25,18 @@ public class PlayerEnderChestContainer extends SimpleContainer { @@ -108,7 +108,7 @@ index a6a359bab2a727f4631b633a8bb370dd40decc75..d2d75e5c34c97300ce5da8c7ea70958a this.activeChest = enderChestBlockEntity; } diff --git a/net/minecraft/world/level/block/EnderChestBlock.java b/net/minecraft/world/level/block/EnderChestBlock.java -index f5533960708bdbaf2eacefbc7c7c3123b7d26502..17aa27885b4431bf7b98799e02d080b5a0ecbbf1 100644 +index 5077a9ff7b78801bdc53536a37aee07b8d86ee4d..72794e204f7fcc31ece94913b7fd9f36ae022b10 100644 --- a/net/minecraft/world/level/block/EnderChestBlock.java +++ b/net/minecraft/world/level/block/EnderChestBlock.java @@ -85,8 +85,8 @@ public class EnderChestBlock extends AbstractChestBlock i @@ -159,13 +159,13 @@ index f5533960708bdbaf2eacefbc7c7c3123b7d26502..17aa27885b4431bf7b98799e02d080b5 public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { return new EnderChestBlockEntity(pos, state); diff --git a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java -index 0f808855f58281578c2758513787f0f7330c9291..9f6063089f0aa3a68d26ae7cfe39379123ab2f47 100644 +index 027502d0af5512c31878978c4d05c52fa3029cca..f5216355ef13593bc7333d50a003012e25b3d7ea 100644 --- a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java +++ b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java -@@ -55,7 +55,17 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { - this.maxStack = i; +@@ -56,7 +56,17 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { } // CraftBukkit end + - private NonNullList items = NonNullList.withSize(27, ItemStack.EMPTY); + // Purpur start - Barrels and enderchests 6 rows + private NonNullList items = NonNullList.withSize(switch (org.purpurmc.purpur.PurpurConfig.barrelRows) { @@ -181,7 +181,7 @@ index 0f808855f58281578c2758513787f0f7330c9291..9f6063089f0aa3a68d26ae7cfe393791 public final ContainerOpenersCounter openersCounter = new ContainerOpenersCounter() { @Override protected void onOpen(Level level, BlockPos pos, BlockState state) { -@@ -107,7 +117,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { +@@ -108,7 +118,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { @Override public int getContainerSize() { @@ -199,7 +199,7 @@ index 0f808855f58281578c2758513787f0f7330c9291..9f6063089f0aa3a68d26ae7cfe393791 } @Override -@@ -127,7 +146,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { +@@ -128,7 +147,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { @Override protected AbstractContainerMenu createMenu(int id, Inventory player) { diff --git a/purpur-server/minecraft-patches/features/0005-Chickens-can-retaliate.patch b/purpur-server/minecraft-patches/features/0005-Chickens-can-retaliate.patch index 9156be5d5..eb8fb9cec 100644 --- a/purpur-server/minecraft-patches/features/0005-Chickens-can-retaliate.patch +++ b/purpur-server/minecraft-patches/features/0005-Chickens-can-retaliate.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Chickens can retaliate diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java -index 509163f409a5b8988a484aedb2f3ddf042d5eb13..d718f0ed362c49803260dceed64bd93e2b6744fc 100644 +index 40fc57f1c298e1c70fddf8b6eb2f3e8e9e41e60c..fc3291b5e1a2c3956802b268abb58189b24a7a16 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java -@@ -73,6 +73,11 @@ public class Chicken extends Animal { +@@ -93,6 +93,11 @@ public class Chicken extends Animal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.chickenMaxHealth); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.chickenScale); @@ -20,7 +20,7 @@ index 509163f409a5b8988a484aedb2f3ddf042d5eb13..d718f0ed362c49803260dceed64bd93e } // Purpur end - Configurable entity base attributes -@@ -80,13 +85,21 @@ public class Chicken extends Animal { +@@ -100,13 +105,21 @@ public class Chicken extends Animal { protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables @@ -43,7 +43,7 @@ index 509163f409a5b8988a484aedb2f3ddf042d5eb13..d718f0ed362c49803260dceed64bd93e } @Override -@@ -95,7 +108,7 @@ public class Chicken extends Animal { +@@ -115,7 +128,7 @@ public class Chicken extends Animal { } public static AttributeSupplier.Builder createAttributes() { diff --git a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch index 51ac344e0..c4cf26cfb 100644 --- a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch +++ b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 7ebecee1de098c218304868b1223b914941cae8a..561ee18dfd063f1853a1389f245e8b29bc0b68a7 100644 +index cf26a10e4ccf0f28817ce53b3c5bf1df02259273..580e79d19a728deed4719a8d2e5d70b532397781 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -1247,6 +1247,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1149,6 +1149,11 @@ public class ServerPlayer extends Player { } else { // Purpur start - Add boat fall damage config if (damageSource.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) { @@ -21,13 +21,13 @@ index 7ebecee1de098c218304868b1223b914941cae8a..561ee18dfd063f1853a1389f245e8b29 return false; } diff --git a/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index 9e15e7159cf98b3928110df9eae6de93793bf44e..6df4d736d94b9e49a3eb3d59a329e37127aa64cd 100644 +index 99617c08cbd989092ba357d8df928786fd04c89a..9d88b260528c3cea2c5fe8e2760094b0a8a35667 100644 --- a/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/net/minecraft/world/entity/vehicle/AbstractMinecart.java -@@ -83,6 +83,10 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -103,6 +103,10 @@ public abstract class AbstractMinecart extends VehicleEntity { private double flyingY = 0.95; private double flyingZ = 0.95; - public Double maxSpeed; + public @Nullable Double maxSpeed; + // Purpur start - Minecart settings and WASD controls + public double storedMaxSpeed; + public boolean isNewBehavior; @@ -35,7 +35,7 @@ index 9e15e7159cf98b3928110df9eae6de93793bf44e..6df4d736d94b9e49a3eb3d59a329e371 public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Friction API // CraftBukkit end -@@ -91,8 +95,13 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -111,8 +115,13 @@ public abstract class AbstractMinecart extends VehicleEntity { this.blocksBuilding = true; if (useExperimentalMovement(level)) { this.behavior = new NewMinecartBehavior(this); @@ -49,7 +49,7 @@ index 9e15e7159cf98b3928110df9eae6de93793bf44e..6df4d736d94b9e49a3eb3d59a329e371 } } -@@ -258,6 +267,14 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -277,6 +286,14 @@ public abstract class AbstractMinecart extends VehicleEntity { @Override public void tick() { @@ -64,7 +64,7 @@ index 9e15e7159cf98b3928110df9eae6de93793bf44e..6df4d736d94b9e49a3eb3d59a329e371 // CraftBukkit start double prevX = this.getX(); double prevY = this.getY(); -@@ -394,15 +411,61 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -384,15 +401,61 @@ public abstract class AbstractMinecart extends VehicleEntity { this.behavior.moveAlongTrack(level); } diff --git a/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch b/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch index 64b658e5b..fc5022641 100644 --- a/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch +++ b/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Villagers follow emerald blocks diff --git a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -index 61ed4d687120fcbb7b91863e400f3657ebcde687..e773c426567964fc8269237d71c3434a5473985c 100644 +index 75d8fe03558ba38caf46c826dfea5208f88bde52..46022a0aabc9c319deeb75913d356eeb74f1a12c 100644 --- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java @@ -162,7 +162,7 @@ public class DefaultAttributes { @@ -31,23 +31,22 @@ index 438d6347778a94b4fe430320b268a2d67afa209a..f88f618d34fb343b31de3af1a875d663 @Override diff --git a/net/minecraft/world/entity/npc/AbstractVillager.java b/net/minecraft/world/entity/npc/AbstractVillager.java -index a71d16d968bb90fd7aca6f01a3dd56df4f9a7ce6..b4e79cac5611942240ce85120f7bbee329ae2fb8 100644 +index 1d3381f1481bb2b192bb78462c85c2a185d94ad5..e574c38e1c1c13fc2f96340138f784697cef8c48 100644 --- a/net/minecraft/world/entity/npc/AbstractVillager.java +++ b/net/minecraft/world/entity/npc/AbstractVillager.java -@@ -45,6 +45,8 @@ import org.bukkit.event.entity.VillagerAcquireTradeEvent; - // CraftBukkit end +@@ -35,6 +35,7 @@ import net.minecraft.world.level.portal.TeleportTransition; + import net.minecraft.world.phys.Vec3; public abstract class AbstractVillager extends AgeableMob implements InventoryCarrier, Npc, Merchant { + static final net.minecraft.world.item.crafting.Ingredient TEMPT_ITEMS = net.minecraft.world.item.crafting.Ingredient.of(net.minecraft.world.level.block.Blocks.EMERALD_BLOCK.asItem()); // Purpur - Villagers follow emerald blocks -+ - // CraftBukkit start - @Override - public CraftMerchant getCraftMerchant() { + private static final EntityDataAccessor DATA_UNHAPPY_COUNTER = SynchedEntityData.defineId(AbstractVillager.class, EntityDataSerializers.INT); + public static final int VILLAGER_SLOT_OFFSET = 300; + private static final int VILLAGER_INVENTORY_SIZE = 8; diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index c71d0f8efacb60e49395567fdc0c1c1e6e6f5aa8..2f685a186b2dc27e70cddd5c4951c27e7ee3ef53 100644 +index b2687ee9494d491971fa4124382b214d7c3ba9be..005af720a6385056f09f939813e97c10a7414a91 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -265,6 +265,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -268,6 +268,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); @@ -55,7 +54,7 @@ index c71d0f8efacb60e49395567fdc0c1c1e6e6f5aa8..2f685a186b2dc27e70cddd5c4951c27e } // Purpur end - Ridables -@@ -273,6 +274,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -276,6 +277,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.villagerMaxHealth); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.villagerScale); @@ -63,7 +62,7 @@ index c71d0f8efacb60e49395567fdc0c1c1e6e6f5aa8..2f685a186b2dc27e70cddd5c4951c27e } // Purpur end - Configurable entity base attributes -@@ -341,7 +343,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -344,7 +346,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public static AttributeSupplier.Builder createAttributes() { @@ -73,10 +72,10 @@ index c71d0f8efacb60e49395567fdc0c1c1e6e6f5aa8..2f685a186b2dc27e70cddd5c4951c27e public boolean assignProfessionWhenSpawned() { diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index b5af32a431b5ffe20b32bd82ccfae9b8343d0592..f9755f36f7863b9742fe5b840a8130891ddff7c7 100644 +index 4abc4037a059b9c1dc58bf7a776e6269c5188868..e726893a3ddf49bdfd2d190477bccf6e33de1847 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -97,9 +97,16 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -87,9 +87,16 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @Override public void initAttributes() { this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.wanderingTraderMaxHealth); @@ -93,7 +92,7 @@ index b5af32a431b5ffe20b32bd82ccfae9b8343d0592..f9755f36f7863b9742fe5b840a813089 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -@@ -134,6 +141,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -124,6 +131,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill this.goalSelector.addGoal(1, new PanicGoal(this, 0.5)); this.goalSelector.addGoal(1, new LookAtTradingPlayerGoal(this)); this.goalSelector.addGoal(2, new WanderingTrader.WanderToPositionGoal(this, 2.0, 0.35)); diff --git a/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch b/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch index 839f90b9e..a4f3ae80d 100644 --- a/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch +++ b/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch @@ -7,10 +7,10 @@ temporarily migrate to paper's config drop patch on the next minecraft release diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 2bd5a295be2500f198230a62f48900b51038d22b..96253bf49a6895524f6f606a9c434cb1b78948a6 100644 +index 6ad266592c16bdeccfb689fb2ef2ee37e79a7b41..e950e74d7c14d2e180e5ca879eb1048866d85051 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1222,6 +1222,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop list = EquipmentSlot.VALUES.stream().filter(slot -> canGlideUsing(this.getItemBySlot(slot), slot)).toList(); +@@ -3644,7 +3644,18 @@ public abstract class LivingEntity extends Entity implements Attackable { + .filter(equipmentSlot1 -> canGlideUsing(this.getItemBySlot(equipmentSlot1), equipmentSlot1)) + .toList(); EquipmentSlot equipmentSlot = Util.getRandom(list, this.random); - this.getItemBySlot(equipmentSlot).hurtAndBreak(1, this, equipmentSlot); + @@ -29,10 +29,10 @@ index 631ac66e7bad8c0b789cf762b54db3b8ffe4b44a..ea8ef5c1b2ad9be827ea35a2858cbe8d this.gameEvent(GameEvent.ELYTRA_GLIDE); diff --git a/net/minecraft/world/item/FireworkRocketItem.java b/net/minecraft/world/item/FireworkRocketItem.java -index 75a9bd205f32b77c5d242cb9fac0f571ce36045a..b03f182c62c699cc222e67c1ae6eadf99c45d48d 100644 +index 18d63d2da49451a2d5e1da7bf0c00e05e2f192bc..ab35b0db023f48854476497d0dbdb0dffbeddb43 100644 --- a/net/minecraft/world/item/FireworkRocketItem.java +++ b/net/minecraft/world/item/FireworkRocketItem.java -@@ -66,6 +66,19 @@ public class FireworkRocketItem extends Item implements ProjectileItem { +@@ -62,6 +62,19 @@ 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) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemInHand), (org.bukkit.entity.Firework) delayed.projectile().getBukkitEntity(), org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand)); if (event.callEvent() && delayed.attemptSpawn()) { player.awardStat(Stats.ITEM_USED.get(this)); // Moved up from below @@ -53,10 +53,10 @@ index 75a9bd205f32b77c5d242cb9fac0f571ce36045a..b03f182c62c699cc222e67c1ae6eadf9 itemInHand.shrink(1); // Moved up from below } else { diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java -index c5426585f53a3139dc9d188a73e3a7ff4cb2e492..264b713e8b7c3d5f7d8e1facc90a60349f2cf414 100644 +index 8c9f64140f016edfadeeb75463655cc2f3fafc0c..84e7f1b119ccfdabf48ccac51278e19743840da7 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java -@@ -733,6 +733,14 @@ public final class ItemStack implements DataComponentHolder { +@@ -725,6 +725,14 @@ public final class ItemStack implements DataComponentHolder { org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent(serverPlayer, this); // Paper - Add EntityDamageItemEvent } // CraftBukkit end @@ -72,10 +72,10 @@ index c5426585f53a3139dc9d188a73e3a7ff4cb2e492..264b713e8b7c3d5f7d8e1facc90a6034 onBreak.accept(item); } diff --git a/net/minecraft/world/item/TridentItem.java b/net/minecraft/world/item/TridentItem.java -index 07f8c7644a112bb1ba283d1eadd8661010e888a4..7ea7db834e7b627a1d7d37ca87cd43eb61408565 100644 +index 5ed862c4eeb9995b25f6a0ee1b57b2fdafb92551..59b1a455895d2842e45d916dcf53dead32e1c72a 100644 --- a/net/minecraft/world/item/TridentItem.java +++ b/net/minecraft/world/item/TridentItem.java -@@ -133,6 +133,18 @@ public class TridentItem extends Item implements ProjectileItem { +@@ -127,6 +127,18 @@ public class TridentItem extends Item implements ProjectileItem { f1 *= tridentSpinAttackStrength / squareRoot; f2 *= tridentSpinAttackStrength / squareRoot; org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerRiptideEvent(player, stack, f, f1, f2); // CraftBukkit diff --git a/purpur-server/minecraft-patches/features/0010-Configurable-jockey-options.patch b/purpur-server/minecraft-patches/features/0010-Configurable-jockey-options.patch index b97e69bbc..8b865c59d 100644 --- a/purpur-server/minecraft-patches/features/0010-Configurable-jockey-options.patch +++ b/purpur-server/minecraft-patches/features/0010-Configurable-jockey-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable jockey options diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java -index 3b0b5eadb80490b98b24aa632ab956e6403e2df2..173c0f13202e1ab3491ffde72ece95e2b4a46fd6 100644 +index 526de34154d873d1479f9276981e181be959ebef..2004595c51564d863aee65fc47541014ea184e10 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java @@ -105,6 +105,23 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -33,7 +33,7 @@ index 3b0b5eadb80490b98b24aa632ab956e6403e2df2..173c0f13202e1ab3491ffde72ece95e2 protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0)); diff --git a/net/minecraft/world/entity/monster/Husk.java b/net/minecraft/world/entity/monster/Husk.java -index c2365ae1cf6f98e262f302a117c4647c383dfbb5..7a8951f93e65c6df145e30d44b9d928dd0c39189 100644 +index 5b0794bd87423715cada1f860b4141fdacd9ede6..75cb1db5584c04e442583ab2f50a26132ed48bfb 100644 --- a/net/minecraft/world/entity/monster/Husk.java +++ b/net/minecraft/world/entity/monster/Husk.java @@ -50,6 +50,23 @@ public class Husk extends Zombie { @@ -61,10 +61,10 @@ index c2365ae1cf6f98e262f302a117c4647c383dfbb5..7a8951f93e65c6df145e30d44b9d928d EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index 4b0f04c861397af694c477a8d3dc0de707e36874..b600fc46ed96d46769b7b289997a6e3cd422417b 100644 +index 126c5982c1b274cad67649b8e26391c7c4011bab..02073d4374580278829e680b875d596844213e78 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -125,6 +125,20 @@ public class Zombie extends Monster { +@@ -129,6 +129,20 @@ public class Zombie extends Monster { } // Purpur end - Configurable entity base attributes @@ -85,7 +85,7 @@ index 4b0f04c861397af694c477a8d3dc0de707e36874..b600fc46ed96d46769b7b289997a6e3c @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables -@@ -556,19 +570,18 @@ public class Zombie extends Monster { +@@ -558,19 +572,18 @@ public class Zombie extends Monster { } if (spawnGroupData instanceof Zombie.ZombieGroupData zombieGroupData) { @@ -110,8 +110,8 @@ index 4b0f04c861397af694c477a8d3dc0de707e36874..b600fc46ed96d46769b7b289997a6e3c + } else { // Purpur - Configurable jockey options Chicken chicken1 = EntityType.CHICKEN.create(this.level(), EntitySpawnReason.JOCKEY); if (chicken1 != null) { - chicken1.moveTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), 0.0F); -@@ -577,6 +590,7 @@ public class Zombie extends Monster { + chicken1.snapTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), 0.0F); +@@ -579,6 +592,7 @@ public class Zombie extends Monster { this.startRiding(chicken1); level.addFreshEntity(chicken1, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit } @@ -120,10 +120,10 @@ index 4b0f04c861397af694c477a8d3dc0de707e36874..b600fc46ed96d46769b7b289997a6e3c } } diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 610e5e5330462646034c5667c15245fdb2af77a0..54df75681a89df93f59a589189c7e96b4acc4c77 100644 +index 239e78203dec09653ef8e001aef3e4b95b0f7a7c..6bd633390df582e0b1999f5c67cd76e2b23a04eb 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -107,6 +107,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -106,6 +106,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } // Purpur end - Configurable entity base attributes @@ -148,7 +148,7 @@ index 610e5e5330462646034c5667c15245fdb2af77a0..54df75681a89df93f59a589189c7e96b protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 486906b860b3ccbeb1702d9bd7a5d9f11f534b1a..eaa2682de228cf5e9aff22b15f045c9ecbeec77b 100644 +index ada982eb4dca7c75a5fd3576d3793f1f12819e51..a8916a8fe5bed57e7b1f755a20e15bed544567fb 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -88,6 +88,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { diff --git a/purpur-server/minecraft-patches/features/0011-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/purpur-server/minecraft-patches/features/0011-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index beeba7f4c..203e0f291 100644 --- a/purpur-server/minecraft-patches/features/0011-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/purpur-server/minecraft-patches/features/0011-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms diff --git a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index 67711964552a8e32d3590a64aff78e1db768b026..d58829c88b86358a0c06a982b302fc9a31c15853 100644 +index 57f9f705c62706902efe9a7873f0e3866820f7d9..90ac1e4bdca5b6233eeae9bc84549770bed383da 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java @@ -26,6 +26,12 @@ public class EndCrystal extends Entity { - private static final EntityDataAccessor DATA_SHOW_BOTTOM = SynchedEntityData.defineId(EndCrystal.class, EntityDataSerializers.BOOLEAN); + private static final boolean DEFAULT_SHOW_BOTTOM = true; public int time; public boolean generatedByDragonFight = false; // Paper - Fix invulnerable end crystals + // Purpur start - Phantoms attracted to crystals and crystals shoot phantoms @@ -72,18 +72,18 @@ index 67711964552a8e32d3590a64aff78e1db768b026..d58829c88b86358a0c06a982b302fc9a @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 08fc2dc0fecfa370c99e877d502149a8ea147e5f..aea7b608d88d243113f67665844841ac879c3f88 100644 +index 2f14561a3722f8175a234ad656ef64d4c58e3b96..6c41a2cc9a772c216abfc2b241429ec712119bb4 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -47,6 +47,7 @@ public class Phantom extends FlyingMob implements Enemy { - Vec3 moveTargetPoint = Vec3.ZERO; - public BlockPos anchorPoint = BlockPos.ZERO; +@@ -48,6 +48,7 @@ public class Phantom extends FlyingMob implements Enemy { + @Nullable + public BlockPos anchorPoint; Phantom.AttackPhase attackPhase = Phantom.AttackPhase.CIRCLE; + Vec3 crystalPosition; // Purpur - Phantoms attracted to crystals and crystals shoot phantoms // Paper start @Nullable public java.util.UUID spawningEntity; -@@ -118,6 +119,25 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -119,6 +120,25 @@ public class Phantom extends FlyingMob implements Enemy { } // Purpur end - Ridables @@ -109,7 +109,7 @@ index 08fc2dc0fecfa370c99e877d502149a8ea147e5f..aea7b608d88d243113f67665844841ac @Override public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; -@@ -131,9 +151,15 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -132,9 +152,15 @@ public class Phantom extends FlyingMob implements Enemy { @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables @@ -128,7 +128,7 @@ index 08fc2dc0fecfa370c99e877d502149a8ea147e5f..aea7b608d88d243113f67665844841ac this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal()); } -@@ -509,6 +535,124 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -502,6 +528,124 @@ public class Phantom extends FlyingMob implements Enemy { } } diff --git a/purpur-server/minecraft-patches/features/0012-Phantoms-burn-in-light.patch b/purpur-server/minecraft-patches/features/0012-Phantoms-burn-in-light.patch index 34631ae4b..2b429096d 100644 --- a/purpur-server/minecraft-patches/features/0012-Phantoms-burn-in-light.patch +++ b/purpur-server/minecraft-patches/features/0012-Phantoms-burn-in-light.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Phantoms burn in light diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index aea7b608d88d243113f67665844841ac879c3f88..4cc1c8d8967b1e9ee5b0b1c50d887f3de3e8a882 100644 +index 6c41a2cc9a772c216abfc2b241429ec712119bb4..eaa5f2db1bc6b01ef6a508cc5a60ff1e252c2360 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -53,6 +53,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -54,6 +54,7 @@ public class Phantom extends FlyingMob implements Enemy { public java.util.UUID spawningEntity; public boolean shouldBurnInDay = true; // Paper end @@ -16,7 +16,7 @@ index aea7b608d88d243113f67665844841ac879c3f88..4cc1c8d8967b1e9ee5b0b1c50d887f3d public Phantom(EntityType entityType, Level level) { super(entityType, level); -@@ -253,7 +254,11 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -254,7 +255,11 @@ public class Phantom extends FlyingMob implements Enemy { @Override public void aiStep() { @@ -29,7 +29,7 @@ index aea7b608d88d243113f67665844841ac879c3f88..4cc1c8d8967b1e9ee5b0b1c50d887f3d if (getRider() == null || !this.isControllable()) // Purpur - Ridables this.igniteForSeconds(8.0F); } -@@ -374,6 +379,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -363,6 +368,7 @@ public class Phantom extends FlyingMob implements Enemy { List nearbyPlayers = serverLevel.getNearbyPlayers( this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0, 64.0, 16.0) ); @@ -37,7 +37,7 @@ index aea7b608d88d243113f67665844841ac879c3f88..4cc1c8d8967b1e9ee5b0b1c50d887f3d if (!nearbyPlayers.isEmpty()) { nearbyPlayers.sort(Comparator.comparing(Entity::getY).reversed()); -@@ -739,6 +745,12 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -732,6 +738,12 @@ public class Phantom extends FlyingMob implements Enemy { return false; } else if (!target.isAlive()) { return false; diff --git a/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch b/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch index 415f95334..234b1ac10 100644 --- a/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch +++ b/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Make entity breeding times configurable diff --git a/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java b/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java -index 8fe5bd54b5a4848da1f08ea65fe2bc3514bed8c8..54eeb72b638127b180470887a3b59d55773f3bc9 100644 +index 2591e4bbd234e51ff2c6b00db888d3b158f5a07d..e3d48c7c6615185f8a14bc96476a665bdadc275b 100644 --- a/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java +++ b/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java @@ -118,8 +118,10 @@ public class VillagerMakeLove extends Behavior { + if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(breedOffspring, parent, partner, null, null, 0).isCancelled()) { return Optional.empty(); } - // Move age setting down - parent.setAge(6000); - partner.setAge(6000); + // Purpur start - Make entity breeding times configurable @@ -22,21 +22,21 @@ index 8fe5bd54b5a4848da1f08ea65fe2bc3514bed8c8..54eeb72b638127b180470887a3b59d55 // CraftBukkit end - call EntityBreedEvent level.broadcastEntityEvent(breedOffspring, (byte)12); diff --git a/net/minecraft/world/entity/animal/Animal.java b/net/minecraft/world/entity/animal/Animal.java -index da1f5dcc213b9a5f8d26a546e7575b063fb0473c..452270f7f1c54ca98c34dcf9a9d29acae77737c8 100644 +index 2ce0099460c14a6dd8b128f268ee915ea4be5183..1cae770340e969ec4f037b9121142878894102d3 100644 --- a/net/minecraft/world/entity/animal/Animal.java +++ b/net/minecraft/world/entity/animal/Animal.java -@@ -40,6 +40,7 @@ public abstract class Animal extends AgeableMob { +@@ -42,6 +42,7 @@ public abstract class Animal extends AgeableMob { @Nullable public UUID loveCause; - public ItemStack breedItem; // CraftBukkit - Add breedItem variable + public @Nullable ItemStack breedItem; // CraftBukkit - Add breedItem variable + public abstract int getPurpurBreedTime(); // Purpur - Make entity breeding times configurable protected Animal(EntityType entityType, Level level) { super(entityType, level); -@@ -282,8 +283,10 @@ public abstract class Animal extends AgeableMob { +@@ -283,8 +284,10 @@ public abstract class Animal extends AgeableMob { player.awardStat(Stats.ANIMALS_BRED); CriteriaTriggers.BRED_ANIMALS.trigger(player, this, animal, baby); - } // Paper - call EntityBreedEvent + } // Paper - Call EntityBreedEvent - this.setAge(6000); - animal.setAge(6000); + // Purpur start - Make entity breeding times configurable @@ -47,7 +47,7 @@ index da1f5dcc213b9a5f8d26a546e7575b063fb0473c..452270f7f1c54ca98c34dcf9a9d29aca animal.resetLove(); level.broadcastEntityEvent(this, (byte)18); diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index a6dfd2013312d7542cb597a6e3976c68e9971148..31854506641874bed3306b9688d71e5c47fd9e35 100644 +index d07a708f06ba738369882ddaa968c2de9c6c560e..afe7fd92348e6a2a26f8f258373b0c57bb5f4f3f 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -480,6 +480,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -65,10 +65,10 @@ index a6dfd2013312d7542cb597a6e3976c68e9971148..31854506641874bed3306b9688d71e5c public int getRemainingPersistentAngerTime() { return this.entityData.get(DATA_REMAINING_ANGER_TIME); diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index 98ce277c5b27591e22daa3c85241be1b8689bfae..584568cef949cee24aa7850d2ff99d47cd089a6e 100644 +index d2813c68df511a2702f2b57c31f828730a9a21c8..75a63c8e8917f20b389f8194ae3089ff41e9d0ff 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java -@@ -126,6 +126,13 @@ public class Cat extends TamableAnimal implements VariantHolder itemStack.is(ItemTags.CAT_FOOD), true); + this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true); diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java -index d718f0ed362c49803260dceed64bd93e2b6744fc..39ad1729ef03fc35a6365ee215be214eccfd959a 100644 +index fc3291b5e1a2c3956802b268abb58189b24a7a16..ef808c4462387bb73466b33d1c3156796fea251b 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java -@@ -81,6 +81,13 @@ public class Chicken extends Animal { +@@ -101,6 +101,13 @@ public class Chicken extends Animal { } // Purpur end - Configurable entity base attributes @@ -101,10 +101,10 @@ index d718f0ed362c49803260dceed64bd93e2b6744fc..39ad1729ef03fc35a6365ee215be214e protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index d2a4bfa5334f7361067e4adac36ba5a4a4fa6ad8..e4965300eb41512d03a0b111422c98627cf29a54 100644 +index 7c4f1eadcbc13010f6b4b5748b8e0d5c822458e1..0f4f732d9501df42e0d42fe978692c4b0e3d8f0b 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java -@@ -63,6 +63,13 @@ public class Cow extends Animal { +@@ -53,6 +53,13 @@ public class Cow extends AbstractCow { } // Purpur end - Configurable entity base attributes @@ -116,13 +116,13 @@ index d2a4bfa5334f7361067e4adac36ba5a4a4fa6ad8..e4965300eb41512d03a0b111422c9862 + // Purpur end - Make entity breeding times configurable + @Override - protected void registerGoals() { - this.goalSelector.addGoal(0, new FloatGoal(this)); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 9b8f5049b7a73b6b51ea76ed92228ff0d53b1cfb..7bc31391b0bd696ce73223d639a96278994010ca 100644 +index 8d69b6bb1d5efd0b47595a12acdd2088cddd5ace..6a531e5d93d42d3dca7a5e49fb2ba14063665d2e 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -175,6 +175,13 @@ public class Fox extends Animal implements VariantHolder { +@@ -187,6 +187,13 @@ public class Fox extends Animal { } // Purpur end - Configurable entity base attributes @@ -136,7 +136,7 @@ index 9b8f5049b7a73b6b51ea76ed92228ff0d53b1cfb..7bc31391b0bd696ce73223d639a96278 @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); -@@ -973,8 +980,10 @@ public class Fox extends Animal implements VariantHolder { +@@ -996,8 +1003,10 @@ public class Fox extends Animal { CriteriaTriggers.BRED_ANIMALS.trigger(serverPlayer, this.animal, this.partner, fox); } @@ -150,10 +150,10 @@ index 9b8f5049b7a73b6b51ea76ed92228ff0d53b1cfb..7bc31391b0bd696ce73223d639a96278 this.partner.resetLove(); serverLevel.addFreshEntityWithPassengers(fox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index 990723c31aa1040a4e45b9857a18d86287ef91b4..a64b609bf5ce38a252bfa1bcff869f88e14389b5 100644 +index af035af33db993cf7c573b87df576529e98a842e..24313a5dd5f5be39677ac8080ecf56703c751923 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -79,6 +79,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { +@@ -152,6 +152,13 @@ public class Rabbit extends Animal { } // Purpur end - Configurable entity base attributes @@ -275,29 +275,11 @@ index e71161ecc9d4ee3fe29fa3a27d11d63e1a28d1a0..bbdd06002b07699fffebdf6ed8148abd @Override public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); -diff --git a/net/minecraft/world/entity/animal/Sheep.java b/net/minecraft/world/entity/animal/Sheep.java -index b66440f5cfbd714c6d2f5b7f66b4e755602b4521..882c799cb66a2acada33ff24f3adb7eb611f89c1 100644 ---- a/net/minecraft/world/entity/animal/Sheep.java -+++ b/net/minecraft/world/entity/animal/Sheep.java -@@ -106,6 +106,13 @@ public class Sheep extends Animal implements Shearable { - } - // Purpur end - Configurable entity base attributes - -+ // Purpur start - Make entity breeding times configurable -+ @Override -+ public int getPurpurBreedTime() { -+ return this.level().purpurConfig.sheepBreedingTicks; -+ } -+ // Purpur end - Make entity breeding times configurable -+ - @Override - protected void registerGoals() { - this.eatBlockGoal = new EatBlockGoal(this); diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java -index 4f0fbbb2caeda6d1477d3297fd68f802e4f3a9ca..030414049c6af6f6a6324d56aa7b2f1cf7afdc61 100644 +index 11772e81d932fae6542a0cb2d283ef91b5bbbd76..57e4cb66fbf29b992a144ca923f2e22983cc1db5 100644 --- a/net/minecraft/world/entity/animal/Turtle.java +++ b/net/minecraft/world/entity/animal/Turtle.java -@@ -109,6 +109,13 @@ public class Turtle extends Animal { +@@ -110,6 +110,13 @@ public class Turtle extends Animal { } // Purpur end - Configurable entity base attributes @@ -309,9 +291,9 @@ index 4f0fbbb2caeda6d1477d3297fd68f802e4f3a9ca..030414049c6af6f6a6324d56aa7b2f1c + // Purpur end - Make entity breeding times configurable + public void setHomePos(BlockPos homePos) { - this.entityData.set(HOME_POS, homePos); + this.homePos = homePos; } -@@ -394,8 +401,10 @@ public class Turtle extends Animal { +@@ -350,8 +357,10 @@ public class Turtle extends Animal { } this.turtle.setHasEgg(true); @@ -324,29 +306,11 @@ index 4f0fbbb2caeda6d1477d3297fd68f802e4f3a9ca..030414049c6af6f6a6324d56aa7b2f1c this.animal.resetLove(); this.partner.resetLove(); RandomSource random = this.animal.getRandom(); -diff --git a/net/minecraft/world/entity/animal/Wolf.java b/net/minecraft/world/entity/animal/Wolf.java -index afc12968313a408e8a71a20c2c0defde52605c4e..9d79946497cfc92ff11160b86d5064d86916af36 100644 ---- a/net/minecraft/world/entity/animal/Wolf.java -+++ b/net/minecraft/world/entity/animal/Wolf.java -@@ -210,6 +210,13 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder, B +@@ -145,6 +145,13 @@ public class Axolotl extends Animal implements Bucketable { } // Purpur end - Configurable entity base attributes @@ -379,10 +343,10 @@ index f2f09a529e9db88784ff4299fdf3966046c736ab..07eee1f82331a2172aede02219a7eae8 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; diff --git a/net/minecraft/world/entity/animal/camel/Camel.java b/net/minecraft/world/entity/animal/camel/Camel.java -index 1d7e2358bac193af48dc4b7f5b0295e3bffa152b..1d7ae2a08968860636918e7c66b60139a9d761b4 100644 +index 6c6ef89aacbc328a2cb2dc05022998dbd79cfaf8..344edef98e13831d1238e5ae155d81b13126a696 100644 --- a/net/minecraft/world/entity/animal/camel/Camel.java +++ b/net/minecraft/world/entity/animal/camel/Camel.java -@@ -90,6 +90,13 @@ public class Camel extends AbstractHorse { +@@ -96,6 +96,13 @@ public class Camel extends AbstractHorse { } // Purpur end - Ridables @@ -397,10 +361,10 @@ index 1d7e2358bac193af48dc4b7f5b0295e3bffa152b..1d7ae2a08968860636918e7c66b60139 public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); diff --git a/net/minecraft/world/entity/animal/frog/Frog.java b/net/minecraft/world/entity/animal/frog/Frog.java -index 9a400c8bf2b54aa5fbcbe65b61670cac5fbebf05..143a740ce2e7f9d384b71b4d64e8b8218f60cba7 100644 +index 054811d807c56018617dc4a8e10af87ed15ad00c..71c09b9b8cc66d1a6f557a685539f9f4c93c0b8b 100644 --- a/net/minecraft/world/entity/animal/frog/Frog.java +++ b/net/minecraft/world/entity/animal/frog/Frog.java -@@ -165,6 +165,13 @@ public class Frog extends Animal implements VariantHolder> { +@@ -164,6 +164,13 @@ public class Frog extends Animal { } // Purpur end - Ridables @@ -415,10 +379,10 @@ index 9a400c8bf2b54aa5fbcbe65b61670cac5fbebf05..143a740ce2e7f9d384b71b4d64e8b821 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index 302208b566038a3a352ca867dd70a61887bac104..0a018dbfe3750cf91892d8cfb5c0eac18e83d587 100644 +index b922d8c37b89a5762c8ed29e6a5fa545f408511e..a04892dce1f904fad3312499352ad56853ea658e 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -128,6 +128,13 @@ public class Goat extends Animal { +@@ -131,6 +131,13 @@ public class Goat extends Animal { } // Purpur end - Ridables @@ -433,7 +397,7 @@ index 302208b566038a3a352ca867dd70a61887bac104..0a018dbfe3750cf91892d8cfb5c0eac1 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/horse/Donkey.java b/net/minecraft/world/entity/animal/horse/Donkey.java -index 223f1d109680e3643ab2c8343be22713e89755fd..b977597785df5665176ab2f330633ec61b7c9feb 100644 +index 3aa12702cd1f4ef160180bc6ba64a6566cbddc9d..9e1100d672bfb712854d23203d0b730b8cc78a3d 100644 --- a/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/net/minecraft/world/entity/animal/horse/Donkey.java @@ -40,6 +40,13 @@ public class Donkey extends AbstractChestedHorse { @@ -448,13 +412,13 @@ index 223f1d109680e3643ab2c8343be22713e89755fd..b977597785df5665176ab2f330633ec6 + // Purpur end - Make entity breeding times configurable + @Override - protected SoundEvent getAmbientSound() { + public SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java -index 8bd118e82da9e4d4153de0a3efaf6d69e3c4c540..0339ab08b3029a9ffc102c5b865e411aca2a863c 100644 +index e0346014de51958976459eeb6677d886e7f261ab..6c1897fadaf93e9a71f0e361a602e6d9475a4f50 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java -@@ -67,6 +67,13 @@ public class Horse extends AbstractHorse implements VariantHolder { +@@ -70,6 +70,13 @@ public class Horse extends AbstractHorse { } // Purpur end - Configurable entity base attributes @@ -469,10 +433,10 @@ index 8bd118e82da9e4d4153de0a3efaf6d69e3c4c540..0339ab08b3029a9ffc102c5b865e411a protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index 58e726dd33f572a31b4910b9ff666c4252fb03a9..6efe52edb6909ed2b38210ce6a0334eddc55f261 100644 +index 10e7724d424cd39c96b91cf3de4bc4524d9311a4..db73d8821b3374341fa77fbbb3308a21abb60db6 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -141,6 +141,13 @@ public class Llama extends AbstractChestedHorse implements VariantHolder entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 54924cd7c84cbcd22ffc0bd37fc24f24e73c18bc..5af04c4d58d59b795c3f43eeb30232ab07a4e8c7 100644 +index 6b0eb12e9d879f22098eb2294d0d73db6ca266ed..df763444e9935b8f43ea65b3695c715993903fb8 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -117,6 +117,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -120,6 +120,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Configurable entity base attributes diff --git a/purpur-server/minecraft-patches/features/0014-Apply-display-names-from-item-forms-of-entities-to-e.patch b/purpur-server/minecraft-patches/features/0014-Apply-display-names-from-item-forms-of-entities-to-e.patch index 15d244724..8b4a0c168 100644 --- a/purpur-server/minecraft-patches/features/0014-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/purpur-server/minecraft-patches/features/0014-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/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java -index d368b1971b270c44efc849464a100832bc29a679..8c0ab32487c56e2caf42404184f86c9bcf5f8b41 100644 +index fb3b4e57e98b45adb3a908ddbc2d4ac066e22034..e0489ff30373c214927f34d78787fb85192318b3 100644 --- a/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -564,6 +564,7 @@ public class ArmorStand extends LivingEntity { +@@ -492,6 +492,7 @@ public class ArmorStand extends LivingEntity { private org.bukkit.event.entity.EntityDeathEvent brokenByPlayer(ServerLevel level, DamageSource damageSource) { // Paper ItemStack itemStack = new ItemStack(Items.ARMOR_STAND); @@ -18,10 +18,10 @@ index d368b1971b270c44efc849464a100832bc29a679..8c0ab32487c56e2caf42404184f86c9b this.drops.add(new DefaultDrop(itemStack, stack -> Block.popResource(this.level(), this.blockPosition(), stack))); // CraftBukkit - add to drops // Paper - Restore vanilla drops behavior return this.brokenByAnything(level, damageSource); // Paper diff --git a/net/minecraft/world/entity/decoration/ItemFrame.java b/net/minecraft/world/entity/decoration/ItemFrame.java -index 65e1d7c5ac94b1cfb921fa009be59d3e5872f0b5..3ee1d8798db666ee8d83556047e40ff217cda732 100644 +index f9a97000b75db7999b1cbe1f72d680d4d7b803b7..9dfadb5639e840e69274b35f3366322141527104 100644 --- a/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/net/minecraft/world/entity/decoration/ItemFrame.java -@@ -223,7 +223,11 @@ public class ItemFrame extends HangingEntity { +@@ -232,7 +232,11 @@ public class ItemFrame extends HangingEntity { this.removeFramedMap(item); } else { if (dropItem) { @@ -35,10 +35,10 @@ index 65e1d7c5ac94b1cfb921fa009be59d3e5872f0b5..3ee1d8798db666ee8d83556047e40ff2 if (!item.isEmpty()) { diff --git a/net/minecraft/world/entity/decoration/Painting.java b/net/minecraft/world/entity/decoration/Painting.java -index 5b905a4d49c44b04d5795c2bf297f3c69d183d7c..b6429a2bbb6fc1e08610ab20e50f8f0414f0ad26 100644 +index 3f13bb1ad260d250efe2622297e432dc300e73a0..b1ee059501532cc2df5f0824e5becbd2bc6727b2 100644 --- a/net/minecraft/world/entity/decoration/Painting.java +++ b/net/minecraft/world/entity/decoration/Painting.java -@@ -162,7 +162,11 @@ public class Painting extends HangingEntity implements VariantHoldercreateDefaultStackConfig(level, itemInHand, player).accept(hangingEntity); ++ EntityType.appendDefaultStackConfig(entity -> {if (!level.purpurConfig.persistentDroppableEntityDisplayNames) entity.setCustomName(null);}, level, itemInHand, player).accept(hangingEntity); // Purpur - Apply display names from item forms of entities to entities and vice versa if (hangingEntity.survives()) { + if (!level.isClientSide) { + // CraftBukkit start - fire HangingPlaceEvent diff --git a/purpur-server/minecraft-patches/features/0015-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/purpur-server/minecraft-patches/features/0015-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index f196a03cf..fc69100b5 100644 --- a/purpur-server/minecraft-patches/features/0015-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/purpur-server/minecraft-patches/features/0015-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -8,7 +8,7 @@ farm Nether Wart. Reimplemented based on a feature of the carpet-extra mod. diff --git a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -index 4106549bd4dec1cc47d8765be8f5d119fe33bf56..e98fac58b29f78cb63bd868811cca41e1644e9ac 100644 +index de89e45ecd4ac4c6db8b74bbe3dd6b4a7cf21671..f15e4cfd8c0ac5e08779dbe6b9aa40bfe9ce4d8f 100644 --- a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +++ b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java @@ -32,6 +32,7 @@ public class HarvestFarmland extends Behavior { @@ -23,11 +23,11 @@ index 4106549bd4dec1cc47d8765be8f5d119fe33bf56..e98fac58b29f78cb63bd868811cca41e protected boolean checkExtraStartConditions(ServerLevel level, Villager owner) { if (!level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { return false; -- } else if (owner.getVillagerData().getProfession() != VillagerProfession.FARMER) { -+ } else if (owner.getVillagerData().getProfession() != VillagerProfession.FARMER && !(level.purpurConfig.villagerClericsFarmWarts && owner.getVillagerData().getProfession() == VillagerProfession.CLERIC)) { // Purpur - Option for Villager Clerics to farm Nether Wart +- } else if (!owner.getVillagerData().profession().is(VillagerProfession.FARMER)) { ++ } else if (!owner.getVillagerData().profession().is(VillagerProfession.FARMER) && !(level.purpurConfig.villagerClericsFarmWarts && owner.getVillagerData().profession().is(VillagerProfession.CLERIC))) { // Purpur - Option for Villager Clerics to farm Nether Wart return false; } else { -+ if (!this.clericWartFarmer && owner.getVillagerData().getProfession() == VillagerProfession.CLERIC) this.clericWartFarmer = true; // Purpur - Option for Villager Clerics to farm Nether Wart ++ if (!this.clericWartFarmer && owner.getVillagerData().profession().is(VillagerProfession.CLERIC)) this.clericWartFarmer = true; // Purpur - Option for Villager Clerics to farm Nether Wart BlockPos.MutableBlockPos mutableBlockPos = owner.blockPosition().mutable(); this.validFarmlandAroundVillager.clear(); @@ -72,7 +72,7 @@ index 4106549bd4dec1cc47d8765be8f5d119fe33bf56..e98fac58b29f78cb63bd868811cca41e 1.0F, 1.0F diff --git a/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java b/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java -index 243ac036f95794e7766aefb4630b635681ae5a5f..4d8523a43d60cd6b4fd5546ffb3a61417b2c475b 100644 +index 623dd33a85cb67ecb835de18e9aac29f3394ce28..72cca4897f9697573fd6987a5f0d2df52761b8c3 100644 --- a/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java +++ b/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java @@ -59,6 +59,12 @@ public class TradeWithVillager extends Behavior { @@ -80,7 +80,7 @@ index 243ac036f95794e7766aefb4630b635681ae5a5f..4d8523a43d60cd6b4fd5546ffb3a6141 } + // Purpur start - Option for Villager Clerics to farm Nether Wart -+ if (level.purpurConfig.villagerClericsFarmWarts && level.purpurConfig.villagerClericFarmersThrowWarts && owner.getVillagerData().getProfession() == VillagerProfession.CLERIC && owner.getInventory().countItem(Items.NETHER_WART) > Items.NETHER_WART.getDefaultMaxStackSize() / 2) { ++ if (level.purpurConfig.villagerClericsFarmWarts && level.purpurConfig.villagerClericFarmersThrowWarts && owner.getVillagerData().profession().is(VillagerProfession.CLERIC) && owner.getInventory().countItem(Items.NETHER_WART) > Items.NETHER_WART.getDefaultMaxStackSize() / 2) { + throwHalfStack(owner, ImmutableSet.of(Items.NETHER_WART), villager); + } + // Purpur end - Option for Villager Clerics to farm Nether Wart @@ -89,26 +89,26 @@ index 243ac036f95794e7766aefb4630b635681ae5a5f..4d8523a43d60cd6b4fd5546ffb3a6141 throwHalfStack(owner, this.trades, villager); } diff --git a/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java b/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java -index 84afd8646b05409c582f29d73f9fea4b09feb603..32779b121322688a4b14e460b1f902ef67770b32 100644 +index c65f80aadeb27685653f6a4731888c612d4a59d6..bb07aa944ce60ec7db96e2b57bd6c2c862e2f787 100644 --- a/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java +++ b/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java -@@ -74,8 +74,13 @@ public class VillagerGoalPackages { - } - - public static ImmutableList>> getWorkPackage(VillagerProfession profession, float speedModifier) { +@@ -79,8 +79,13 @@ public class VillagerGoalPackages { + public static ImmutableList>> getWorkPackage( + Holder profession, float speedModifier + ) { + // Purpur start - Option for Villager Clerics to farm Nether Wart + return getWorkPackage(profession, speedModifier, false); + } -+ public static ImmutableList>> getWorkPackage(VillagerProfession profession, float speedModifier, boolean clericsFarmWarts) { ++ public static ImmutableList>> getWorkPackage(Holder profession, float speedModifier, boolean clericsFarmWarts) { + // Purpur end - Option for Villager Clerics to farm Nether Wart WorkAtPoi workAtPoi; -- if (profession == VillagerProfession.FARMER) { -+ if (profession == VillagerProfession.FARMER || (clericsFarmWarts && profession == VillagerProfession.CLERIC)) { // Purpur - Option for Villager Clerics to farm Nether Wart +- if (profession.is(VillagerProfession.FARMER)) { ++ if (profession.is(VillagerProfession.FARMER) || (clericsFarmWarts && profession.is(VillagerProfession.CLERIC))) { // Purpur - Option for Villager Clerics to farm Nether Wart workAtPoi = new WorkAtComposter(); } else { workAtPoi = new WorkAtPoi(); diff --git a/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java b/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java -index 6b99afb4f237b5d6def98f3e03492975b795bc95..234e9d4aca14bc2a2e138918be1430516d710060 100644 +index f0583076ef62189508a392a76c3fb6b741bbdde9..dc4a9ddb8479e9d0c4895b19d7d677cdd8ad3faa 100644 --- a/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java +++ b/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java @@ -22,6 +22,13 @@ public class SecondaryPoiSensor extends Sensor { @@ -117,7 +117,7 @@ index 6b99afb4f237b5d6def98f3e03492975b795bc95..234e9d4aca14bc2a2e138918be143051 protected void doTick(ServerLevel level, Villager entity) { + // Purpur start - Option for Villager Clerics to farm Nether Wart - make sure clerics don't wander to soul sand when the option is off + Brain brain = entity.getBrain(); -+ if (!level.purpurConfig.villagerClericsFarmWarts && entity.getVillagerData().getProfession() == net.minecraft.world.entity.npc.VillagerProfession.CLERIC) { ++ if (!level.purpurConfig.villagerClericsFarmWarts && entity.getVillagerData().profession().is(net.minecraft.world.entity.npc.VillagerProfession.CLERIC)) { + brain.eraseMemory(MemoryModuleType.SECONDARY_JOB_SITE); + return; + } @@ -135,37 +135,37 @@ index 6b99afb4f237b5d6def98f3e03492975b795bc95..234e9d4aca14bc2a2e138918be143051 brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index ff07cfe07200be23f17310522d737fca3251a580..017b54e0b8dec8996c90a3c6651867277dd516df 100644 +index 005af720a6385056f09f939813e97c10a7414a91..2846aca7bad55b56430738baeee9554e34da316c 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -311,7 +311,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -314,7 +314,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler villagerBrain.setSchedule(Schedule.VILLAGER_DEFAULT); villagerBrain.addActivityWithConditions( Activity.WORK, -- VillagerGoalPackages.getWorkPackage(profession, 0.5F), -+ VillagerGoalPackages.getWorkPackage(profession, 0.5F, this.level().purpurConfig.villagerClericsFarmWarts), // Purpur - Option for Villager Clerics to farm Nether Wart +- VillagerGoalPackages.getWorkPackage(holder, 0.5F), ++ VillagerGoalPackages.getWorkPackage(holder, 0.5F, this.level().purpurConfig.villagerClericsFarmWarts), // Purpur - Option for Villager Clerics to farm Nether Wart ImmutableSet.of(Pair.of(MemoryModuleType.JOB_SITE, MemoryStatus.VALUE_PRESENT)) ); } -@@ -977,7 +977,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -965,7 +965,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public boolean hasFarmSeeds() { -- return this.getInventory().hasAnyMatching(itemStack -> itemStack.is(ItemTags.VILLAGER_PLANTABLE_SEEDS)); -+ return this.getInventory().hasAnyMatching(itemStack -> this.level().purpurConfig.villagerClericsFarmWarts && this.getVillagerData().getProfession() == VillagerProfession.CLERIC ? itemStack.is(Items.NETHER_WART) : itemStack.is(ItemTags.VILLAGER_PLANTABLE_SEEDS)); // Purpur - Option for Villager Clerics to farm Nether Wart +- return this.getInventory().hasAnyMatching(stack -> stack.is(ItemTags.VILLAGER_PLANTABLE_SEEDS)); ++ return this.getInventory().hasAnyMatching(stack -> this.level().purpurConfig.villagerClericsFarmWarts && this.getVillagerData().profession().is(VillagerProfession.CLERIC) ? stack.is(Items.NETHER_WART) : stack.is(ItemTags.VILLAGER_PLANTABLE_SEEDS)); // Purpur - Option for Villager Clerics to farm Nether Wart } @Override diff --git a/net/minecraft/world/entity/npc/VillagerProfession.java b/net/minecraft/world/entity/npc/VillagerProfession.java -index 1ec8ad124c76483d11057eb97fcfb9aebee0c301..f783d058a080408d572938d36ba031f33a08e9af 100644 +index 0b7fdbc19f8a977be8168bca198c157fbe90044b..abfc2542a486d5a64bf88eac69f7d9587869d3cf 100644 --- a/net/minecraft/world/entity/npc/VillagerProfession.java +++ b/net/minecraft/world/entity/npc/VillagerProfession.java -@@ -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 - Option for Villager Clerics to farm Nether Wart - public static final VillagerProfession FARMER = register( - "farmer", - PoiTypes.FARMER, +@@ -103,7 +103,7 @@ public record VillagerProfession( + register(registry, ARMORER, PoiTypes.ARMORER, SoundEvents.VILLAGER_WORK_ARMORER); + register(registry, BUTCHER, PoiTypes.BUTCHER, SoundEvents.VILLAGER_WORK_BUTCHER); + register(registry, CARTOGRAPHER, PoiTypes.CARTOGRAPHER, SoundEvents.VILLAGER_WORK_CARTOGRAPHER); +- register(registry, CLERIC, PoiTypes.CLERIC, SoundEvents.VILLAGER_WORK_CLERIC); ++ register(registry, CLERIC, PoiTypes.CLERIC, ImmutableSet.of(Items.NETHER_WART), ImmutableSet.of(Blocks.SOUL_SAND), SoundEvents.VILLAGER_WORK_CLERIC); // Purpur - Option for Villager Clerics to farm Nether Wart + register( + registry, + FARMER, diff --git a/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch b/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch index f2c255a34..6f765ea9a 100644 --- a/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 4388a1e3d409a55cffd66fc32cae8753c39dd064..611732d56e5bb71973cb33a41507f61195c4cd2d 100644 +index 7b635a3f047a7f645322bdd8ce5bfa8350d7a739..2a7434872472b950fe09bfe8f5f334d9964b51d6 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -1818,7 +1818,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1905,7 +1905,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (this.level() instanceof ServerLevel serverLevel) { boolean var6 = false; if (this.dead && entitySource instanceof WitherBoss) { // Paper @@ -18,10 +18,10 @@ index 4388a1e3d409a55cffd66fc32cae8753c39dd064..611732d56e5bb71973cb33a41507f611 BlockState blockState = Blocks.WITHER_ROSE.defaultBlockState(); if (this.level().getBlockState(blockPos).isAir() && blockState.canSurvive(this.level(), blockPos)) { diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index c431f28c3f4f6cec946048f5752c364429af5ba1..d93584c6793818463e8883ffe399bf16b03263a9 100644 +index ca1d0164c90e695731f05de39c1d2fff947ecfc1..b828524d62a940f89f0c0fa926ef0423019ec212 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -648,7 +648,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -519,7 +519,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab && this.canPickUpLoot() && this.isAlive() && !this.dead @@ -31,7 +31,7 @@ index c431f28c3f4f6cec946048f5752c364429af5ba1..d93584c6793818463e8883ffe399bf16 for (ItemEntity itemEntity : this.level() diff --git a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -index e98fac58b29f78cb63bd868811cca41e1644e9ac..56d49bc71cb0cb0a08ff771991fd77ab774b4b59 100644 +index f15e4cfd8c0ac5e08779dbe6b9aa40bfe9ce4d8f..d90a616eca474ae940d46cda94e816bddda70183 100644 --- a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +++ b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java @@ -49,7 +49,7 @@ public class HarvestFarmland extends Behavior { @@ -41,7 +41,7 @@ index e98fac58b29f78cb63bd868811cca41e1644e9ac..56d49bc71cb0cb0a08ff771991fd77ab - if (!level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { + if (!level.purpurConfig.villagerBypassMobGriefing == !level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur - Add mobGriefing bypass to everything affected return false; - } else if (owner.getVillagerData().getProfession() != VillagerProfession.FARMER && !(level.purpurConfig.villagerClericsFarmWarts && owner.getVillagerData().getProfession() == VillagerProfession.CLERIC)) { // Purpur - Option for Villager Clerics to farm Nether Wart + } else if (!owner.getVillagerData().profession().is(VillagerProfession.FARMER) && !(level.purpurConfig.villagerClericsFarmWarts && owner.getVillagerData().profession().is(VillagerProfession.CLERIC))) { // Purpur - Option for Villager Clerics to farm Nether Wart return false; diff --git a/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java b/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java index e026e07ca86700c864a3dceda6817fb7b6cb11e9..f1dfe0bf047e7d331b2379a672ff7b8eae4c9c90 100644 @@ -57,13 +57,13 @@ index e026e07ca86700c864a3dceda6817fb7b6cb11e9..f1dfe0bf047e7d331b2379a672ff7b8e && !this.isOpen(); } diff --git a/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/net/minecraft/world/entity/ai/goal/EatBlockGoal.java -index e84893780b533b1ecb3675606b5c2daf7339b861..65eb4d8001b07cb3f7cda17565eea10a88a9c47c 100644 +index 7a75415a469bc99f45a5cfaab038181717903f1d..fc244a1fbd401f6ea92e7428b9738939e0cb2b1e 100644 --- a/net/minecraft/world/entity/ai/goal/EatBlockGoal.java +++ b/net/minecraft/world/entity/ai/goal/EatBlockGoal.java @@ -67,7 +67,7 @@ public class EatBlockGoal extends Goal { BlockPos blockPos = this.mob.blockPosition(); final BlockState blockState = this.level.getBlockState(blockPos); // Paper - fix wrong block state - if (IS_TALL_GRASS.test(blockState)) { // Paper - fix wrong block state + if (IS_EDIBLE.test(blockState)) { // Paper - fix wrong block state - if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockPos, blockState.getFluidState().createLegacyBlock(), !getServerLevel(this.level).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - fix wrong block state + if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockPos, blockState.getFluidState().createLegacyBlock(), !getServerLevel(this.level).purpurConfig.sheepBypassMobGriefing == !getServerLevel(this.level).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - fix wrong block state // Purpur - Add mobGriefing bypass to everything affected this.level.destroyBlock(blockPos, false); @@ -79,7 +79,7 @@ index e84893780b533b1ecb3675606b5c2daf7339b861..65eb4d8001b07cb3f7cda17565eea10a this.level.setBlock(blockPos1, Blocks.DIRT.defaultBlockState(), 2); } diff --git a/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java b/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java -index 579ca031d461ed4327fe4fb45c5289565322e64e..95fa516910a3834bbd4db6d11279e13a1f0dac41 100644 +index 3d40911970caf6f1de2a1ebee1df4c077703226a..9b29c0c676a45de2abdc76e0502ac06ac1e53097 100644 --- a/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java +++ b/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java @@ -35,7 +35,7 @@ public class RemoveBlockGoal extends MoveToBlockGoal { @@ -92,10 +92,10 @@ index 579ca031d461ed4327fe4fb45c5289565322e64e..95fa516910a3834bbd4db6d11279e13a } else if (this.nextStartTick > 0) { this.nextStartTick--; diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 7bc31391b0bd696ce73223d639a96278994010ca..950bf1c834111e00a3f3eda1390da7ede177ae15 100644 +index 6a531e5d93d42d3dca7a5e49fb2ba14063665d2e..e3631adee6ef690807768c90045c28570982b315 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -1038,7 +1038,7 @@ public class Fox extends Animal implements VariantHolder { +@@ -1061,7 +1061,7 @@ public class Fox extends Animal { } protected void onReachedTarget() { @@ -105,10 +105,10 @@ index 7bc31391b0bd696ce73223d639a96278994010ca..950bf1c834111e00a3f3eda1390da7ed if (blockState.is(Blocks.SWEET_BERRY_BUSH)) { this.pickSweetBerries(blockState); diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index bbdd06002b07699fffebdf6ed8148abdb69c24cc..7379def14f3f700fb8a746dc89d89e249e93b7b9 100644 +index 6c1e23e96352aa777c4e0c7d00f7620aa3f29a32..1c88e12d743325a429cad27928ea1ac43a696e8a 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java -@@ -620,7 +620,7 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -647,7 +647,7 @@ public class Rabbit extends Animal { @Override public boolean canUse() { if (this.nextStartTick <= 0) { @@ -118,10 +118,10 @@ index bbdd06002b07699fffebdf6ed8148abdb69c24cc..7379def14f3f700fb8a746dc89d89e24 } diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index 495284016f0141d34fcda3c1a1799233a5f708cf..0faa2d786a1162f125c531d93a5d1f215f310dfe 100644 +index 764429b9d20ac105c9ae3b050adf5d3defbd6038..1bf6fdc0149975fefbb73563e0d4861b178459b8 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java -@@ -136,7 +136,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -135,7 +135,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM this.hurtServer(serverLevel, this.damageSources().onFire().knownCause(org.bukkit.event.entity.EntityDamageEvent.DamageCause.MELTING), 1.0F); // CraftBukkit } @@ -131,10 +131,10 @@ index 495284016f0141d34fcda3c1a1799233a5f708cf..0faa2d786a1162f125c531d93a5d1f21 } diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index ca900bb646e16c7b4342f23c3ffae786eab28145..724d259d4b793f2043e63dda9022bdfddc4dca38 100644 +index 793567170b33ba21016b8767598d294fca4acec4..f014b4ca2baf97edf472ce4d8af1209eaf4d53d1 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -547,7 +547,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -543,7 +543,7 @@ public class EnderDragon extends Mob implements Enemy { BlockPos blockPos = new BlockPos(i, i1, i2); BlockState blockState = level.getBlockState(blockPos); if (!blockState.isAir() && !blockState.is(BlockTags.DRAGON_TRANSPARENT)) { @@ -144,10 +144,10 @@ index ca900bb646e16c7b4342f23c3ffae786eab28145..724d259d4b793f2043e63dda9022bdfd //flag1 = level.removeBlock(blockPos, false) || flag1; flag1 = true; diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 60e666aa8afe14b519010b6d137a89e3d22f6c81..a325fa87e149e7f354ed4cf3dbb30a002c4ce32a 100644 +index f0ec9334d9e6bf879568a085db691c46f7c652b6..951de2194f8e669e454edd8678cd254e94d18ab7 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -493,7 +493,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -494,7 +494,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { if (this.destroyBlocksTick > 0) { this.destroyBlocksTick--; @@ -157,10 +157,10 @@ index 60e666aa8afe14b519010b6d137a89e3d22f6c81..a325fa87e149e7f354ed4cf3dbb30a00 int alternativeTarget = Mth.floor(this.getBbWidth() / 2.0F + 1.0F); int floor = Mth.floor(this.getBbHeight()); diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index f8d6935439b4e672ed655b2a458451d4b1fa8ffd..7b74322aef3d7d45a322abccc71d9168b3c0911b 100644 +index c01c91db94136700f9501624763e3bd735986a9f..0cae67d67af733b0bc6558f8cc1056b45554e3ce 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -516,7 +516,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -509,7 +509,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls return this.enderman.getCarriedBlock() != null @@ -169,7 +169,7 @@ index f8d6935439b4e672ed655b2a458451d4b1fa8ffd..7b74322aef3d7d45a322abccc71d9168 && this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0; } -@@ -666,7 +666,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -659,7 +659,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls return this.enderman.getCarriedBlock() == null @@ -179,7 +179,7 @@ index f8d6935439b4e672ed655b2a458451d4b1fa8ffd..7b74322aef3d7d45a322abccc71d9168 } diff --git a/net/minecraft/world/entity/monster/Evoker.java b/net/minecraft/world/entity/monster/Evoker.java -index d3d7e11a12af404d83e81888a9a633dfb93412ec..91574baf7ca095eae909e8e7225ad500bde15af2 100644 +index 5773dd99ad2b014dde6666f4b32a1e6ee024a9fc..b14b72f7bbf6cb65b1515c12bae47187fe1371b5 100644 --- a/net/minecraft/world/entity/monster/Evoker.java +++ b/net/minecraft/world/entity/monster/Evoker.java @@ -323,7 +323,7 @@ public class Evoker extends SpellcasterIllager { @@ -192,10 +192,10 @@ index d3d7e11a12af404d83e81888a9a633dfb93412ec..91574baf7ca095eae909e8e7225ad500 } else { List nearbyEntities = serverLevel.getNearbyEntities( diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index 36ebfc1102a18e4050eb9a2441d75bafcf3784b8..3449628fb87fd760abd730d84699c3a09c6ec761 100644 +index 3adf0ec66db61b556a06ffe0fe835b57f8520948..568a0d17600a82109263de715f3d54fc24039452 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java -@@ -175,7 +175,7 @@ public class Ravager extends Raider { +@@ -178,7 +178,7 @@ public class Ravager extends Raider { if (this.level() instanceof ServerLevel serverLevel && this.horizontalCollision @@ -205,7 +205,7 @@ index 36ebfc1102a18e4050eb9a2441d75bafcf3784b8..3449628fb87fd760abd730d84699c3a0 AABB aabb = this.getBoundingBox().inflate(0.2); diff --git a/net/minecraft/world/entity/monster/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java -index d3befe91bc65bbc2bc0d8651b78e8c9576cd0f75..0d3b8b64a23a19d67a1a4a01faaf6649a59f54ad 100644 +index c200d57841304ba0d7a76fdd9a440fe9f2b25136..ff3761507f2025fd1e652afee03a18de3508676a 100644 --- a/net/minecraft/world/entity/monster/Silverfish.java +++ b/net/minecraft/world/entity/monster/Silverfish.java @@ -170,7 +170,7 @@ public class Silverfish extends Monster { @@ -227,10 +227,10 @@ index d3befe91bc65bbc2bc0d8651b78e8c9576cd0f75..0d3b8b64a23a19d67a1a4a01faaf6649 continue; } diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index 897c57263ab7347987b289016a71d11f693bc8b2..d923a424e2b33b7d4e9e4ecdce8e0a8c825038de 100644 +index b37038568b83db1602dca06aa06d72c4c4978cdd..8d37820522b12f2e513ca38c6ccdbb6ef3c2fc71 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -473,7 +473,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -449,7 +449,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @Override public boolean wantsToPickUp(ServerLevel level, ItemStack stack) { @@ -240,10 +240,10 @@ index 897c57263ab7347987b289016a71d11f693bc8b2..d923a424e2b33b7d4e9e4ecdce8e0a8c protected boolean canReplaceCurrentItem(ItemStack candidate) { diff --git a/net/minecraft/world/entity/projectile/LargeFireball.java b/net/minecraft/world/entity/projectile/LargeFireball.java -index 4a752ace041228f095af7b1b4878a03c5ed2381f..3e8b5d042eddb817dee2504ff9aa263f6195b1c7 100644 +index db1b5bce212a5147be82504469f1fa9660812ebc..b97ea6fea26182945b6360644f17d172166574d3 100644 --- a/net/minecraft/world/entity/projectile/LargeFireball.java +++ b/net/minecraft/world/entity/projectile/LargeFireball.java -@@ -18,20 +18,20 @@ public class LargeFireball extends Fireball { +@@ -19,20 +19,20 @@ public class LargeFireball extends Fireball { public LargeFireball(EntityType entityType, Level level) { super(entityType, level); @@ -266,12 +266,12 @@ index 4a752ace041228f095af7b1b4878a03c5ed2381f..3e8b5d042eddb817dee2504ff9aa263f + boolean _boolean = serverLevel.purpurConfig.fireballsBypassMobGriefing ^ serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur - Add mobGriefing bypass to everything affected // CraftBukkit start - fire ExplosionPrimeEvent org.bukkit.event.entity.ExplosionPrimeEvent event = new org.bukkit.event.entity.ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); - this.level().getCraftServer().getPluginManager().callEvent(event); + if (event.callEvent()) { diff --git a/net/minecraft/world/entity/projectile/Projectile.java b/net/minecraft/world/entity/projectile/Projectile.java -index ad0bb896d6ea669ce88bfe6490319e8ba7a29001..843f1396a6567672e5e8002d7e48fb18cf39d5de 100644 +index 4487c03183d20a187d391dd124abb7b926508b5b..3f0fe1190f5ec11efb148d481e0ed5d97f177969 100644 --- a/net/minecraft/world/entity/projectile/Projectile.java +++ b/net/minecraft/world/entity/projectile/Projectile.java -@@ -454,7 +454,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -466,7 +466,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { @Override public boolean mayInteract(ServerLevel level, BlockPos pos) { Entity owner = this.getOwner(); @@ -294,10 +294,10 @@ index 8c84cea43fc0e42a576004663670977eac99f1a6..808aa5dcb27c87b6ba5c1eee63948606 // CraftBukkit end } diff --git a/net/minecraft/world/entity/raid/Raider.java b/net/minecraft/world/entity/raid/Raider.java -index 8270d76a753bfd26a4c8ef6610bee5c24ee59cfe..c06b589e669b055a26f662df60070d5908256220 100644 +index e81ae747fe95c22321fc69791a6509d601826fd6..77bb3aa7ff042aab6464aac55c846cb9082e5b97 100644 --- a/net/minecraft/world/entity/raid/Raider.java +++ b/net/minecraft/world/entity/raid/Raider.java -@@ -399,7 +399,7 @@ public abstract class Raider extends PatrollingMonster { +@@ -400,7 +400,7 @@ public abstract class Raider extends PatrollingMonster { } private boolean cannotPickUpBanner() { @@ -307,12 +307,12 @@ index 8270d76a753bfd26a4c8ef6610bee5c24ee59cfe..c06b589e669b055a26f662df60070d59 return true; } else if (this.mob.getCurrentRaid().isOver()) { diff --git a/net/minecraft/world/level/block/CropBlock.java b/net/minecraft/world/level/block/CropBlock.java -index b43f16297ac4441d78d0dc1fadb555698b0c3f6d..27f0c5c886a3f8b14ef9a00e2aaaabf4bf09c7db 100644 +index b370b955ac8636275dfada4f38a7ca10297f7dac..275eabf64977cdf262de55124c3e5f88d8667213 100644 --- a/net/minecraft/world/level/block/CropBlock.java +++ b/net/minecraft/world/level/block/CropBlock.java -@@ -182,7 +182,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock { +@@ -169,7 +169,7 @@ public class CropBlock extends VegetationBlock implements BonemealableBlock { @Override - protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity) { + protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent - if (level instanceof ServerLevel serverLevel && entity instanceof Ravager && serverLevel.purpurConfig.ravagerGriefableBlocks.contains(serverLevel.getBlockState(pos).getBlock()) && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Purpur - Configurable ravager griefable blocks list + if (level instanceof ServerLevel serverLevel && entity instanceof Ravager && serverLevel.purpurConfig.ravagerGriefableBlocks.contains(serverLevel.getBlockState(pos).getBlock()) && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !serverLevel.purpurConfig.ravagerBypassMobGriefing == !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Purpur - Configurable ravager griefable blocks list // Purpur - Add mobGriefing bypass to everything affected @@ -320,36 +320,36 @@ index b43f16297ac4441d78d0dc1fadb555698b0c3f6d..27f0c5c886a3f8b14ef9a00e2aaaabf4 } diff --git a/net/minecraft/world/level/block/FarmBlock.java b/net/minecraft/world/level/block/FarmBlock.java -index 6ab9a1188ce60e114ef35e393d9f2f46d490af83..9a7ca836e54cc3f58001c85f0079747f4d4941ad 100644 +index ba3b8b1e0c646c09e0b3566d632f2735c1ed9051..35c9a20116b971d184181d0dcb1e52c84f480383 100644 --- a/net/minecraft/world/level/block/FarmBlock.java +++ b/net/minecraft/world/level/block/FarmBlock.java @@ -114,7 +114,7 @@ public class FarmBlock extends Block { if (level instanceof ServerLevel serverLevel - && (serverLevel.purpurConfig.farmlandTrampleHeight >= 0D ? fallDistance >= serverLevel.purpurConfig.farmlandTrampleHeight : level.random.nextFloat() < fallDistance - 0.5F) // // Purpur - Configurable farmland trample height + && (serverLevel.purpurConfig.farmlandTrampleHeight >= 0D ? fallDistance >= serverLevel.purpurConfig.farmlandTrampleHeight : level.random.nextFloat() < fallDistance - 0.5) // Purpur - Configurable farmland trample height && entity instanceof LivingEntity - && (entity instanceof Player || serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) -+ && (entity instanceof Player || serverLevel.purpurConfig.farmlandBypassMobGriefing ^ serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) ++ && (entity instanceof Player || serverLevel.purpurConfig.farmlandBypassMobGriefing ^ serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) // Purpur - Add mobGriefing bypass to everything affected && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) { // CraftBukkit start - Interact soil org.bukkit.event.Cancellable cancellable; diff --git a/net/minecraft/world/level/block/PowderSnowBlock.java b/net/minecraft/world/level/block/PowderSnowBlock.java -index 9c0ded7ae7e3a520704033a866f80743ae85d772..4f3646961beb877520e257e11224c3045467d351 100644 +index 248ac9bc820a96fc7653471308b18834fc735a77..5c6ebde129289f2f7feb44dc1083aa030f55fbff 100644 --- a/net/minecraft/world/level/block/PowderSnowBlock.java +++ b/net/minecraft/world/level/block/PowderSnowBlock.java -@@ -84,7 +84,7 @@ public class PowderSnowBlock extends Block implements BucketPickup { - // CraftBukkit - move down - && entity.mayInteract(serverLevel, pos)) { - // CraftBukkit start -- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !(serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) || entity instanceof Player))) { -+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !(serverLevel.purpurConfig.powderSnowBypassMobGriefing ^ serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) || entity instanceof Player))) { - return; - } - // CraftBukkit end +@@ -89,7 +89,7 @@ public class PowderSnowBlock extends Block implements BucketPickup { + // CraftBukkit - move down + && entity1.mayInteract(serverLevel, blockPos)) { + // CraftBukkit start +- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity1, pos, Blocks.AIR.defaultBlockState(), !(serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) || entity1 instanceof Player))) { ++ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity1, pos, Blocks.AIR.defaultBlockState(), !(serverLevel.purpurConfig.powderSnowBypassMobGriefing ^ serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) || entity1 instanceof Player))) { // Purpur - Add mobGriefing bypass to everything affected + return; + } + // CraftBukkit end diff --git a/net/minecraft/world/level/block/TurtleEggBlock.java b/net/minecraft/world/level/block/TurtleEggBlock.java -index c97d5bd7b4c1b6f8eccbe2d123292e913a285ef2..a3a093d95306baac22e5cf720f5b14f733b548d4 100644 +index 31851c5404ba3e60c8e8063c6bd0fa94acac6375..4cafcf185dcc0f6c1a380c40d3b654055b492a9a 100644 --- a/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -216,7 +216,7 @@ public class TurtleEggBlock extends Block { +@@ -213,7 +213,7 @@ public class TurtleEggBlock extends Block { // Purpur end - Option to disable turtle egg trampling with feather falling if (entity instanceof Player) return true; diff --git a/purpur-server/minecraft-patches/features/0017-Add-EntityTeleportHinderedEvent.patch b/purpur-server/minecraft-patches/features/0017-Add-EntityTeleportHinderedEvent.patch index 3947801b1..b550e197f 100644 --- a/purpur-server/minecraft-patches/features/0017-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/minecraft-patches/features/0017-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/net/minecraft/world/level/block/EndGatewayBlock.java b/net/minecraft/world/level/block/EndGatewayBlock.java -index 84a1bd5e40e635962d795506861447851e443eee..54abeb142e119edd1c1d1c263821b95b1f05c388 100644 +index 68914268ca9350a6c1d794e011e1f9a8aecd609c..8e53b45dbf740de6c6fe499ef424d11b2b15f9d8 100644 --- a/net/minecraft/world/level/block/EndGatewayBlock.java +++ b/net/minecraft/world/level/block/EndGatewayBlock.java -@@ -98,6 +98,13 @@ public class EndGatewayBlock extends BaseEntityBlock implements Portal { - org.bukkit.event.entity.EntityPortalEnterEvent event = new org.bukkit.event.entity.EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(level.getWorld(), pos.getX(), pos.getY(), pos.getZ()), org.bukkit.PortalType.END_GATEWAY); // Paper - add portal type +@@ -99,6 +99,13 @@ public class EndGatewayBlock extends BaseEntityBlock implements Portal { + org.bukkit.event.entity.EntityPortalEnterEvent event = new org.bukkit.event.entity.EntityPortalEnterEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, level), org.bukkit.PortalType.END_GATEWAY); // Paper - add portal type if (!event.callEvent()) return; // Paper end - call EntityPortalEnterEvent + // Purpur start - Add EntityTeleportHinderedEvent @@ -35,11 +35,11 @@ index 84a1bd5e40e635962d795506861447851e443eee..54abeb142e119edd1c1d1c263821b95b TheEndGatewayBlockEntity.triggerCooldown(level, pos, state, theEndGatewayBlockEntity); } diff --git a/net/minecraft/world/level/block/EndPortalBlock.java b/net/minecraft/world/level/block/EndPortalBlock.java -index 01cddd7001b4a7f99c1b1d147fac904d3064d733..7e60bcadd2d343e00fc554dba0b85c9191f7efb6 100644 +index cf2b105c98a3b22b9bea59cbafcd598657dc92b5..65d3477ed32c3f0db58aab6ab87d8f1721cbe876 100644 --- a/net/minecraft/world/level/block/EndPortalBlock.java +++ b/net/minecraft/world/level/block/EndPortalBlock.java -@@ -58,6 +58,13 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal { - protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity) { +@@ -59,6 +59,13 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal { + protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent if (entity.canUsePortal(false)) { + // Purpur start - Add EntityTeleportHinderedEvent @@ -50,14 +50,14 @@ index 01cddd7001b4a7f99c1b1d147fac904d3064d733..7e60bcadd2d343e00fc554dba0b85c91 + } + // Purpur end - Add EntityTeleportHinderedEvent // CraftBukkit start - Entity in portal - org.bukkit.event.entity.EntityPortalEnterEvent event = new org.bukkit.event.entity.EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(level.getWorld(), pos.getX(), pos.getY(), pos.getZ()), org.bukkit.PortalType.ENDER); // Paper - add portal type + org.bukkit.event.entity.EntityPortalEnterEvent event = new org.bukkit.event.entity.EntityPortalEnterEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, level), org.bukkit.PortalType.ENDER); // Paper - add portal type level.getCraftServer().getPluginManager().callEvent(event); diff --git a/net/minecraft/world/level/block/NetherPortalBlock.java b/net/minecraft/world/level/block/NetherPortalBlock.java -index 006444811c00a8820bddaf75950e794271efdd82..eb659209008209c0930770e5f9671a3d7a4abae6 100644 +index fa0d6baa40c6052c993d870d124af911e8621f0a..1c58af94050b75cd8f405a201448c822792e594a 100644 --- a/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/net/minecraft/world/level/block/NetherPortalBlock.java -@@ -117,6 +117,13 @@ public class NetherPortalBlock extends Block implements Portal { - protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity) { +@@ -118,6 +118,13 @@ public class NetherPortalBlock extends Block implements Portal { + protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent if (entity.canUsePortal(false)) { + // Purpur start - Add EntityTeleportHinderedEvent @@ -68,5 +68,5 @@ index 006444811c00a8820bddaf75950e794271efdd82..eb659209008209c0930770e5f9671a3d + } + // Purpur end - Add EntityTeleportHinderedEvent // CraftBukkit start - Entity in portal - org.bukkit.event.entity.EntityPortalEnterEvent event = new org.bukkit.event.entity.EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(level.getWorld(), pos.getX(), pos.getY(), pos.getZ()), org.bukkit.PortalType.NETHER); // Paper - add portal type + org.bukkit.event.entity.EntityPortalEnterEvent event = new org.bukkit.event.entity.EntityPortalEnterEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, level), org.bukkit.PortalType.NETHER); // Paper - add portal type level.getCraftServer().getPluginManager().callEvent(event); diff --git a/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch b/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch index 426f0ac07..8abe2c0c0 100644 --- a/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch +++ b/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for water sensitive mob damage diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java -index 898b1e01026ec1f44cfe60e9f18a997c86e30594..e717c063c8f9623b8c4b4ea3843d05fd79af3653 100644 +index b6f52326f52ce2885ece346944a321d7c924a470..fe6f29c5e663daea017b19aaafaddda40b4c22bb 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java -@@ -52,6 +52,13 @@ public class GlowSquid extends Squid { +@@ -53,6 +53,13 @@ public class GlowSquid extends Squid { } // Purpur end - Configurable entity base attributes @@ -23,10 +23,10 @@ index 898b1e01026ec1f44cfe60e9f18a997c86e30594..e717c063c8f9623b8c4b4ea3843d05fd protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java -index ecbec552e5cd1935f57872d2fb502d3e9743e3d8..4fa526496265a85b637136f0fd0692ef4f570ad6 100644 +index 581894f58df1df4b50aa537252cb4be6bbcebf80..4d44b35ee34eb256b9aff9d74b1cb9ae1ac9503f 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java -@@ -109,6 +109,13 @@ public class Bat extends AmbientCreature { +@@ -110,6 +110,13 @@ public class Bat extends AmbientCreature { } // Purpur end - Configurable entity base attributes @@ -41,10 +41,10 @@ index ecbec552e5cd1935f57872d2fb502d3e9743e3d8..4fa526496265a85b637136f0fd0692ef public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index 31854506641874bed3306b9688d71e5c47fd9e35..950988bf89f36e8555605d370bb039fe89c66fc7 100644 +index afe7fd92348e6a2a26f8f258373b0c57bb5f4f3f..8da974e98f2207d76e8962eda54c75d0356ecc6f 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -177,7 +177,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -181,7 +181,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { // Paper end - Fix MC-167279 this.lookControl = new Bee.BeeLookControl(this); this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F); @@ -68,10 +68,10 @@ index 31854506641874bed3306b9688d71e5c47fd9e35..950988bf89f36e8555605d370bb039fe public int getRemainingPersistentAngerTime() { return this.entityData.get(DATA_REMAINING_ANGER_TIME); diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index 584568cef949cee24aa7850d2ff99d47cd089a6e..b41ca04043e65f107edaebc49d398650898e35fb 100644 +index 75a63c8e8917f20b389f8194ae3089ff41e9d0ff..1d758dd3ee0834fcf9ebf737bc7a016b881145e5 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java -@@ -133,6 +133,13 @@ public class Cat extends TamableAnimal implements VariantHolder itemStack.is(ItemTags.CAT_FOOD), true); + this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true); diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java -index 39ad1729ef03fc35a6365ee215be214eccfd959a..2364596156c21e82879f5bf4fd873b9d90b1c308 100644 +index ef808c4462387bb73466b33d1c3156796fea251b..3faa8ac614b6d2f8f90c7092900aa24aa976c0ac 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java -@@ -88,6 +88,13 @@ public class Chicken extends Animal { +@@ -108,6 +108,13 @@ public class Chicken extends Animal { } // Purpur end - Make entity breeding times configurable @@ -104,7 +104,7 @@ index 39ad1729ef03fc35a6365ee215be214eccfd959a..2364596156c21e82879f5bf4fd873b9d protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Cod.java b/net/minecraft/world/entity/animal/Cod.java -index 434e1fabf2e360a8f5f4eefed96e3883aa786d10..ac7259cfc8428131f90956d7f76f2227049ffae3 100644 +index ed52fbbf93e7a238d0f45981f8629ba8613bf3d4..6128ed595cb97cc11c1a0e1e1673b3af8e428fb8 100644 --- a/net/minecraft/world/entity/animal/Cod.java +++ b/net/minecraft/world/entity/animal/Cod.java @@ -32,6 +32,13 @@ public class Cod extends AbstractSchoolingFish { @@ -122,10 +122,10 @@ index 434e1fabf2e360a8f5f4eefed96e3883aa786d10..ac7259cfc8428131f90956d7f76f2227 public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index e4965300eb41512d03a0b111422c98627cf29a54..a8c76fcbbaa4afd2d0bd568874995b91d8d67c03 100644 +index 0f4f732d9501df42e0d42fe978692c4b0e3d8f0b..4bc6d0eb56b4674e2ac0f13010521314a95e0096 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java -@@ -70,6 +70,13 @@ public class Cow extends Animal { +@@ -60,6 +60,13 @@ public class Cow extends AbstractCow { } // Purpur end - Make entity breeding times configurable @@ -137,13 +137,13 @@ index e4965300eb41512d03a0b111422c98627cf29a54..a8c76fcbbaa4afd2d0bd568874995b91 + // Purpur end - Toggle for water sensitive mob damage + @Override - protected void registerGoals() { - this.goalSelector.addGoal(0, new FloatGoal(this)); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java -index 5b764c686e8759a7b04a7b50708c69629be02c04..e104058b3c01bea4cc8a77de2ad4378465903b34 100644 +index 932ec7ed4ec102f64fa977835d2c7ebe23afa6e3..4f3777ee9cf7a67d5e2f489dbcf40ec2a1ed13cd 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java -@@ -156,6 +156,13 @@ public class Dolphin extends AgeableWaterCreature { +@@ -158,6 +158,13 @@ public class Dolphin extends AgeableWaterCreature { } // Purpur end - Configurable entity base attributes @@ -158,10 +158,10 @@ index 5b764c686e8759a7b04a7b50708c69629be02c04..e104058b3c01bea4cc8a77de2ad43784 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 950bf1c834111e00a3f3eda1390da7ede177ae15..59695ebc6758cbbc444f23ffdf2f7d66cff54430 100644 +index e3631adee6ef690807768c90045c28570982b315..98cb5c75bb4397914271f81aeace045105a9572e 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -182,6 +182,13 @@ public class Fox extends Animal implements VariantHolder { +@@ -194,6 +194,13 @@ public class Fox extends Animal { } // Purpur end - Make entity breeding times configurable @@ -176,10 +176,10 @@ index 950bf1c834111e00a3f3eda1390da7ede177ae15..59695ebc6758cbbc444f23ffdf2f7d66 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java -index 37a353cbb0e9b16e0fc92bd1bc8194cb4cd3c13a..23108729ce65ef8b7b215b82f29347513cfd4ebf 100644 +index fd0d1abcb34862fc7a812f1e3d96969a5c917352..498302a20b783f2208417b56716f4fc4f18bc333 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java -@@ -98,6 +98,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -99,6 +99,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob { } // Purpur end - Configurable entity base attributes @@ -194,10 +194,10 @@ index 37a353cbb0e9b16e0fc92bd1bc8194cb4cd3c13a..23108729ce65ef8b7b215b82f2934751 protected void registerGoals() { if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur - Iron golem calm anger options diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index a64b609bf5ce38a252bfa1bcff869f88e14389b5..5e9795f447e88a42909730d383eaa36acfaf18f5 100644 +index 24313a5dd5f5be39677ac8080ecf56703c751923..114d893f74dfb4422380cad649b7f3708c29c1c3 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -86,6 +86,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { +@@ -159,6 +159,13 @@ public class Rabbit extends Animal { } // Purpur end - Make entity breeding times configurable @@ -338,10 +338,10 @@ index 7379def14f3f700fb8a746dc89d89e249e93b7b9..9c0ff4d4af5db81973c36c278ae32bf7 public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Salmon.java b/net/minecraft/world/entity/animal/Salmon.java -index 93eb3cc3605f694337c1604e2db63fed04693617..8bd4b2b29438bff65ed00a42bbc9639111af181f 100644 +index 8559e7e8c5163eb55b997521dca2e96b5ae3c9bc..78f83edd809a72bf5a2f908d8d5e3b1755541a29 100644 --- a/net/minecraft/world/entity/animal/Salmon.java +++ b/net/minecraft/world/entity/animal/Salmon.java -@@ -54,6 +54,13 @@ public class Salmon extends AbstractSchoolingFish implements VariantHolder, B +@@ -152,6 +152,13 @@ public class Axolotl extends Animal implements Bucketable { } // Purpur end - Make entity breeding times configurable @@ -477,10 +441,10 @@ index 07eee1f82331a2172aede02219a7eae8e82c7b59..ee426f8a52c9ff5519641ace0f36a38a public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index 0a018dbfe3750cf91892d8cfb5c0eac18e83d587..0c357ffacfe4dd982a58e6cf2338c7e6b24610f5 100644 +index a04892dce1f904fad3312499352ad56853ea658e..47de7e4710234676358378fb5fa9a6b034662e42 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -135,6 +135,13 @@ public class Goat extends Animal { +@@ -138,6 +138,13 @@ public class Goat extends Animal { } // Purpur end - Make entity breeding times configurable @@ -495,7 +459,7 @@ index 0a018dbfe3750cf91892d8cfb5c0eac18e83d587..0c357ffacfe4dd982a58e6cf2338c7e6 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/horse/Donkey.java b/net/minecraft/world/entity/animal/horse/Donkey.java -index b977597785df5665176ab2f330633ec61b7c9feb..1db6ccdc6c83c704aa84a46ee2751a17125bf457 100644 +index 9e1100d672bfb712854d23203d0b730b8cc78a3d..9b17b1acf63fddb5f5b6cdf95283ae8f619a8120 100644 --- a/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/net/minecraft/world/entity/animal/horse/Donkey.java @@ -47,6 +47,13 @@ public class Donkey extends AbstractChestedHorse { @@ -510,13 +474,13 @@ index b977597785df5665176ab2f330633ec61b7c9feb..1db6ccdc6c83c704aa84a46ee2751a17 + // Purpur end - Toggle for water sensitive mob damage + @Override - protected SoundEvent getAmbientSound() { + public SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java -index 0339ab08b3029a9ffc102c5b865e411aca2a863c..f257d549570918381925cef98734fc0aa605f8f2 100644 +index 6c1897fadaf93e9a71f0e361a602e6d9475a4f50..8754c3d6fd06bd2c834fe06e238afa330b24e547 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java -@@ -74,6 +74,13 @@ public class Horse extends AbstractHorse implements VariantHolder { +@@ -77,6 +77,13 @@ public class Horse extends AbstractHorse { } // Purpur end - Make entity breeding times configurable @@ -531,10 +495,10 @@ index 0339ab08b3029a9ffc102c5b865e411aca2a863c..f257d549570918381925cef98734fc0a protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index 6efe52edb6909ed2b38210ce6a0334eddc55f261..872a54186a20fd855fe7981f3ff1c867f4c64d19 100644 +index db73d8821b3374341fa77fbbb3308a21abb60db6..2e776404e65c5dc6040d00a1ed8b5ce0df7badc0 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -148,6 +148,13 @@ public class Llama extends AbstractChestedHorse implements VariantHolder entityType, Level level) { super(entityType, level); @@ -763,7 +763,7 @@ index 7b74322aef3d7d45a322abccc71d9168b3c0911b..6fccfb243c26c27b665df57e5e19eb33 } // Purpur start - Ridables -@@ -294,7 +294,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -285,7 +285,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean isSensitiveToWater() { @@ -773,10 +773,10 @@ index 7b74322aef3d7d45a322abccc71d9168b3c0911b..6fccfb243c26c27b665df57e5e19eb33 @Override diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java -index 2ea45eba13d0b0ea2d3c1d1a3666d6e2e027a3ef..38e3b3ed2c003fe7bbb476f7bf9a882ea2de792a 100644 +index a3095f2a5ff162d502502ad2ed0a485daba86962..c4bfd0fb0fbee4fa72e4cf17931c95831daaf73f 100644 --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java -@@ -70,6 +70,13 @@ public class Endermite extends Monster { +@@ -71,6 +71,13 @@ public class Endermite extends Monster { } // Purpur end - Configurable entity base attributes @@ -791,7 +791,7 @@ index 2ea45eba13d0b0ea2d3c1d1a3666d6e2e027a3ef..38e3b3ed2c003fe7bbb476f7bf9a882e protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Evoker.java b/net/minecraft/world/entity/monster/Evoker.java -index 91574baf7ca095eae909e8e7225ad500bde15af2..61ed6606948cc5f8af543eb9ae05f9aeb4e73b89 100644 +index b14b72f7bbf6cb65b1515c12bae47187fe1371b5..e1debcc5d859961a9d9893fa5ffbe67deea35f6d 100644 --- a/net/minecraft/world/entity/monster/Evoker.java +++ b/net/minecraft/world/entity/monster/Evoker.java @@ -75,6 +75,13 @@ public class Evoker extends SpellcasterIllager { @@ -809,10 +809,10 @@ index 91574baf7ca095eae909e8e7225ad500bde15af2..61ed6606948cc5f8af543eb9ae05f9ae protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java -index c5987f50b343ded580b3d3f264498d3893433f92..68debfa8c6d0fc3ff536d2b4d89c131fd6aca935 100644 +index a55d588709bbf04d4267bd991fb3be0daaba34d4..4864009a9e531d37f9c3747a042d8ea1ed6ccbf7 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java -@@ -84,6 +84,13 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -85,6 +85,13 @@ public class Ghast extends FlyingMob implements Enemy { } // Purpur end - Configurable entity base attributes @@ -845,7 +845,7 @@ index 73da18c4b54e250c434fd75971ef0a8f7c8cf6a3..009b8a8b1b9aabc0aef1c12a0c0f65f9 return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 100.0).add(Attributes.MOVEMENT_SPEED, 0.5).add(Attributes.ATTACK_DAMAGE, 50.0); } diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java -index 546a4fe6d038d04c0be500e76ff4aebb02c3681a..819679a224ffe33e03d8e6b429c8e31b67c769fa 100644 +index 2b03af6e0f378d855c42fa688d0cd2bc8480102b..9868117ecf0a3b36f81086297c639f6f274e0055 100644 --- a/net/minecraft/world/entity/monster/Guardian.java +++ b/net/minecraft/world/entity/monster/Guardian.java @@ -98,6 +98,13 @@ public class Guardian extends Monster { @@ -863,7 +863,7 @@ index 546a4fe6d038d04c0be500e76ff4aebb02c3681a..819679a224ffe33e03d8e6b429c8e31b protected void registerGoals() { MoveTowardsRestrictionGoal moveTowardsRestrictionGoal = new MoveTowardsRestrictionGoal(this, 1.0); diff --git a/net/minecraft/world/entity/monster/Husk.java b/net/minecraft/world/entity/monster/Husk.java -index 7a8951f93e65c6df145e30d44b9d928dd0c39189..31eef2869945d9de565d627cac3fc1a5db380a2a 100644 +index 75cb1db5584c04e442583ab2f50a26132ed48bfb..9baec22561093d64157d93449e84c23b3f238b39 100644 --- a/net/minecraft/world/entity/monster/Husk.java +++ b/net/minecraft/world/entity/monster/Husk.java @@ -67,6 +67,13 @@ public class Husk extends Zombie { @@ -881,7 +881,7 @@ index 7a8951f93e65c6df145e30d44b9d928dd0c39189..31eef2869945d9de565d627cac3fc1a5 EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index 1d1cf8748e3fba2e2963ad2fa153fbfe990f5087..ad661f2bf8957644605b52a469d6a7cf8e064398 100644 +index 09804a8c789bff4f40277c2697c3f9aed00c4d15..553a8f0f5b895f3d8528f10efdc918466e4f4d87 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -84,6 +84,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -899,7 +899,7 @@ index 1d1cf8748e3fba2e2963ad2fa153fbfe990f5087..ad661f2bf8957644605b52a469d6a7cf protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/MagmaCube.java b/net/minecraft/world/entity/monster/MagmaCube.java -index 2c6b0fd46d9ed6a8d1ca7e90ebf596dd3f310f0e..bf26f5f6017c60d5991d5f6c87da2acbd95ef5bb 100644 +index bb1364c4a220cc93f7ac01cbaa617561de4cd2e3..da90b7dc79aa6d01e88c1250fff662ba1b001dc3 100644 --- a/net/minecraft/world/entity/monster/MagmaCube.java +++ b/net/minecraft/world/entity/monster/MagmaCube.java @@ -68,6 +68,13 @@ public class MagmaCube extends Slime { @@ -917,10 +917,10 @@ index 2c6b0fd46d9ed6a8d1ca7e90ebf596dd3f310f0e..bf26f5f6017c60d5991d5f6c87da2acb return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 4cc1c8d8967b1e9ee5b0b1c50d887f3de3e8a882..32b7c34d3c68dcfa936b628b2d038524204129a3 100644 +index eaa5f2db1bc6b01ef6a508cc5a60ff1e252c2360..409e98d0981aa8be0d35bc5c93f7130a9ce16860 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -139,6 +139,13 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -140,6 +140,13 @@ public class Phantom extends FlyingMob implements Enemy { } // Purpur end - Phantoms attracted to crystals and crystals shoot phantoms @@ -935,7 +935,7 @@ index 4cc1c8d8967b1e9ee5b0b1c50d887f3de3e8a882..32b7c34d3c68dcfa936b628b2d038524 public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Pillager.java b/net/minecraft/world/entity/monster/Pillager.java -index 9586aa3f3eb61fb0c1224df9d0104da69d7fa6bb..869a1007de13f3f5d757968d0f84cbf43786c870 100644 +index eb4fcf0e78c39a4b94b7edb733694a87e3103552..4c41e7e0a164779bf1d6765fdb750dcd60acd104 100644 --- a/net/minecraft/world/entity/monster/Pillager.java +++ b/net/minecraft/world/entity/monster/Pillager.java @@ -88,6 +88,13 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve @@ -953,10 +953,10 @@ index 9586aa3f3eb61fb0c1224df9d0104da69d7fa6bb..869a1007de13f3f5d757968d0f84cbf4 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index 3449628fb87fd760abd730d84699c3a09c6ec761..3d9eae0403875a99c25ccb47888dc591f051e744 100644 +index 568a0d17600a82109263de715f3d54fc24039452..0b6550c3abad0eb00af4f303725045a8aa3dc4b1 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java -@@ -97,6 +97,13 @@ public class Ravager extends Raider { +@@ -100,6 +100,13 @@ public class Ravager extends Raider { } // Purpur end - Configurable entity base attributes @@ -971,10 +971,10 @@ index 3449628fb87fd760abd730d84699c3a09c6ec761..3d9eae0403875a99c25ccb47888dc591 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index 03db684c122a07176aa1365550da935cdb66a1b9..c26e4858a14571d58e439cabd5f2593da4ee2634 100644 +index 2b19edafe00be425427f47cac045bf301e3caa39..c9dab7d6b1afe8749022d99aa988782c75270561 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -129,6 +129,13 @@ public class Shulker extends AbstractGolem implements VariantHolder entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java -index f36e94437b4e21961532ac9ab91767617f9c3c32..d01bc46d77340b10b23d0c0d50bddc37657028c8 100644 +index 309cdc88d98eaf61691bc1594275250f55b4f30c..7b19d64d6b1d61922a2368e38f2b31a42ea29a1a 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java -@@ -88,7 +88,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -86,7 +86,7 @@ public class Strider extends Animal implements ItemSteerable { public Strider(EntityType entityType, Level level) { super(entityType, level); this.blocksBuilding = true; @@ -1091,7 +1091,7 @@ index f36e94437b4e21961532ac9ab91767617f9c3c32..d01bc46d77340b10b23d0c0d50bddc37 this.setPathfindingMalus(PathType.LAVA, 0.0F); this.setPathfindingMalus(PathType.DANGER_FIRE, 0.0F); this.setPathfindingMalus(PathType.DAMAGE_FIRE, 0.0F); -@@ -403,7 +403,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -389,7 +389,7 @@ public class Strider extends Animal implements ItemSteerable { @Override public boolean isSensitiveToWater() { @@ -1101,7 +1101,7 @@ index f36e94437b4e21961532ac9ab91767617f9c3c32..d01bc46d77340b10b23d0c0d50bddc37 @Override diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index f0fe810d4ee2387b6b37c391e0c2feaa52b05c05..20f78e3a37f4c7257b32f2279a6404415aa00e2c 100644 +index 43de5ca497f5e3ac3d64345cb998f392852e6e3b..bc8727a4ae3f1f30f4de5ab81a79c15a8153e34a 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -110,6 +110,13 @@ public class Vex extends Monster implements TraceableEntity { @@ -1119,10 +1119,10 @@ index f0fe810d4ee2387b6b37c391e0c2feaa52b05c05..20f78e3a37f4c7257b32f2279a640441 public boolean isFlapping() { return this.tickCount % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index 0fc1b458101ba9d98d25c9637337caf0949bb893..5f68d73460adfac2ead57d168156a2784af979ae 100644 +index 01a5357d5359394b61f2456fdee8bf3aadf0ca32..50da0e9246f50be6073e26c8fa042fe2b4eabb32 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -80,6 +80,13 @@ public class Vindicator extends AbstractIllager { +@@ -81,6 +81,13 @@ public class Vindicator extends AbstractIllager { } // Purpur end - Configurable entity base attributes @@ -1137,7 +1137,7 @@ index 0fc1b458101ba9d98d25c9637337caf0949bb893..5f68d73460adfac2ead57d168156a278 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Witch.java b/net/minecraft/world/entity/monster/Witch.java -index ff8380246f6c6c805b222a91ac6a1eb0d130558d..96ba35f3530ab405a960c79955699666deb6b845 100644 +index 2ff6ae7e1c809fa6607cf4d8685ba9b8ac46064c..e90ac2c977555793ee8c25f04ec3c33b0332d312 100644 --- a/net/minecraft/world/entity/monster/Witch.java +++ b/net/minecraft/world/entity/monster/Witch.java @@ -81,6 +81,13 @@ public class Witch extends Raider implements RangedAttackMob { @@ -1155,7 +1155,7 @@ index ff8380246f6c6c805b222a91ac6a1eb0d130558d..96ba35f3530ab405a960c79955699666 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/WitherSkeleton.java b/net/minecraft/world/entity/monster/WitherSkeleton.java -index 3342f2d92830049837636ff10b5e52f0d85fbd2c..a4dc9b7fbde19b08eb389dc42df21aa5df94e703 100644 +index 213530a2378411db2bc597ba7e0bb68cfdb3ebc9..ef2a7fdc8abe05b7718b71e23556258aba392c75 100644 --- a/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/net/minecraft/world/entity/monster/WitherSkeleton.java @@ -59,6 +59,13 @@ public class WitherSkeleton extends AbstractSkeleton { @@ -1173,10 +1173,10 @@ index 3342f2d92830049837636ff10b5e52f0d85fbd2c..a4dc9b7fbde19b08eb389dc42df21aa5 protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/net/minecraft/world/entity/monster/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java -index 132b38d717ac3c5acc64a5ec519f345ac57021d8..79a4a3f4e10e1f9c1a6100060a95636075fc8236 100644 +index 9f5db385dabb01bda033aecaebd1d9b7c9e2ed0b..7cb2bc8b126a0027216ec4afd7f6e54fe328b8be 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java -@@ -110,6 +110,13 @@ public class Zoglin extends Monster implements HoglinBase { +@@ -111,6 +111,13 @@ public class Zoglin extends Monster implements HoglinBase { } // Purpur end - Configurable entity base attributes @@ -1191,10 +1191,10 @@ index 132b38d717ac3c5acc64a5ec519f345ac57021d8..79a4a3f4e10e1f9c1a6100060a956360 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index 63446c874e7153dcfb99133145c8b5311d7d86cd..bb8c37c8348172947efe14d48ed9ae203409affa 100644 +index 02073d4374580278829e680b875d596844213e78..7f9ee637f443f55ae901d1a0aebedd8f7411996d 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -139,6 +139,13 @@ public class Zombie extends Monster { +@@ -143,6 +143,13 @@ public class Zombie extends Monster { } // Purpur end - Configurable jockey options @@ -1209,10 +1209,10 @@ index 63446c874e7153dcfb99133145c8b5311d7d86cd..bb8c37c8348172947efe14d48ed9ae20 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index f1e9bf75c50f353bd377051be82a391f97d952fd..94b9abc765b78a40a7ecbf4cbd775b778d49c815 100644 +index 6bd633390df582e0b1999f5c67cd76e2b23a04eb..c6e460c21af6145321cad527112adc15e9f30d8d 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -124,6 +124,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -123,6 +123,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } // Purpur end - Configurable jockey options @@ -1227,7 +1227,7 @@ index f1e9bf75c50f353bd377051be82a391f97d952fd..94b9abc765b78a40a7ecbf4cbd775b77 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 9603589e0501feee900cd21b04eb84b02bb45de2..09c991d8e344f11bc84dea453042ee35c39e580e 100644 +index a8916a8fe5bed57e7b1f755a20e15bed544567fb..34e259b95abfc514e07584a699ecc80de0014250 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -105,6 +105,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -1245,10 +1245,10 @@ index 9603589e0501feee900cd21b04eb84b02bb45de2..09c991d8e344f11bc84dea453042ee35 public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 5af04c4d58d59b795c3f43eeb30232ab07a4e8c7..9b82be9ec52fd4bc3b85e8289e7e8f9b79b74b9a 100644 +index df763444e9935b8f43ea65b3695c715993903fb8..ee2cd8bfb74dead58f77f9755f306aa7166285fd 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -124,6 +124,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -127,6 +127,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Make entity breeding times configurable @@ -1263,10 +1263,10 @@ index 5af04c4d58d59b795c3f43eeb30232ab07a4e8c7..9b82be9ec52fd4bc3b85e8289e7e8f9b public void setTimeInOverworld(int timeInOverworld) { this.timeInOverworld = timeInOverworld; diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index d923a424e2b33b7d4e9e4ecdce8e0a8c825038de..55ebfa5df06a59203248514d10dced9660ebf215 100644 +index 8d37820522b12f2e513ca38c6ccdbb6ef3c2fc71..0059e926f09317e056f3f722c4ca775c43bc0b86 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -176,6 +176,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -161,6 +161,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento } // Purpur end - Configurable entity base attributes @@ -1281,7 +1281,7 @@ index d923a424e2b33b7d4e9e4ecdce8e0a8c825038de..55ebfa5df06a59203248514d10dced96 public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index eb82252cd87797927e153974b9280b5eaa251080..2237681f298113bda0556699e19e880f4b04a853 100644 +index f52aba35ee7e202074cda8fb4dfd6a7d9ded1f09..f4893cc54d7f144025da0057beedb3a974c80dc1 100644 --- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java @@ -90,6 +90,13 @@ public class PiglinBrute extends AbstractPiglin { @@ -1299,10 +1299,10 @@ index eb82252cd87797927e153974b9280b5eaa251080..2237681f298113bda0556699e19e880f return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 017b54e0b8dec8996c90a3c6651867277dd516df..97e5bb0cc335b23211e78044919282bfabad26a5 100644 +index 2846aca7bad55b56430738baeee9554e34da316c..654935f2994c588c8545c21d6de839711c55cdfc 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -278,6 +278,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -281,6 +281,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end - Configurable entity base attributes @@ -1317,10 +1317,10 @@ index 017b54e0b8dec8996c90a3c6651867277dd516df..97e5bb0cc335b23211e78044919282bf public Brain getBrain() { return (Brain)super.getBrain(); diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 4ba2921dd99f674344fe3371332c9b23365d3aa2..8046a2d640e7c4d59cb5b9c6dff3bf5f026c7153 100644 +index e726893a3ddf49bdfd2d190477bccf6e33de1847..7ad6a8479a0bdda570ac286220eacd0ba8642111 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -107,6 +107,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -97,6 +97,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill } // Purpur end - Villagers follow emerald blocks diff --git a/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch index c15868c7d..3780d764e 100644 --- a/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch @@ -6,19 +6,19 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 680a7b609db5de96742a8042d0f9ab5e0a8a8e7f..3709efe15b30e4140ba677ffdcd4634b06e34d7d 100644 +index d4e989889ed21e3900062eed142f26a9bdaaa8d9..66c4047a35be22803b38a9249b74ae32dcb98748 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -531,6 +531,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -414,6 +414,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Purpur end - Add canSaveToDisk to Entity + // Purpur start - copied from Mob - API for any mob to burn daylight + public boolean isSunBurnTick() { -+ if (this.level().isDay() && !this.level().isClientSide) { ++ if (this.level().isBrightOutside() && !this.level().isClientSide) { + float lightLevelDependentMagicValue = this.getLightLevelDependentMagicValue(); + BlockPos blockPos = BlockPos.containing(this.getX(), this.getEyeY(), this.getZ()); -+ boolean flag = this.isInWaterRainOrBubble() || this.isInPowderSnow || this.wasInPowderSnow; ++ boolean flag = this.isInWaterOrRain() || this.isInPowderSnow || this.wasInPowderSnow; + if (lightLevelDependentMagicValue > 0.5F + && this.random.nextFloat() * 30.0F < (lightLevelDependentMagicValue - 0.4F) * 2.0F + && !flag @@ -35,40 +35,35 @@ index 680a7b609db5de96742a8042d0f9ab5e0a8a8e7f..3709efe15b30e4140ba677ffdcd4634b this.type = entityType; this.level = level; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index cef0c2bd5c010e9ca6a8f42f2def832c244eae31..c5a5bd367478c32672fbf5ec237bef432814e553 100644 +index 2a7434872472b950fe09bfe8f5f334d9964b51d6..a92ef9269b59305334ed1a8f1b253493e2223306 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -301,6 +301,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 +@@ -273,6 +273,7 @@ public abstract class LivingEntity extends Entity implements Attackable { 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 + public int shieldBlockingDelay = this.level().paperConfig().misc.shieldBlockingDelay; // Paper - Make shield blocking delay configurable + protected boolean shouldBurnInDay = false; public boolean shouldBurnInDay() { return this.shouldBurnInDay; } public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; } // Purpur - API for any mob to burn daylight + // CraftBukkit end - @Override - public float getBukkitYaw() { -@@ -809,6 +810,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - }); + protected LivingEntity(EntityType entityType, Level level) { +@@ -768,6 +769,7 @@ public abstract class LivingEntity extends Entity implements Attackable { + this.getSleepingPos().ifPresent(pos -> compound.store("sleeping_pos", BlockPos.CODEC, pos)); DataResult dataResult = this.brain.serializeStart(NbtOps.INSTANCE); - dataResult.resultOrPartial(LOGGER::error).ifPresent(brain -> compound.put("Brain", brain)); + dataResult.resultOrPartial(LOGGER::error).ifPresent(tag -> compound.put("Brain", tag)); + compound.putBoolean("Purpur.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - API for any mob to burn daylight - } - - @Override -@@ -892,6 +894,12 @@ public abstract class LivingEntity extends Entity implements Attackable { - if (compound.contains("Brain", 10)) { - this.brain = this.makeBrain(new Dynamic<>(NbtOps.INSTANCE, compound.get("Brain"))); - } -+ -+ // Purpur start - API for any mob to burn daylight -+ if (compound.contains("Purpur.ShouldBurnInDay")) { -+ this.shouldBurnInDay = compound.getBoolean("Purpur.ShouldBurnInDay"); -+ } -+ // Purpur end - API for any mob to burn daylight - } - - // CraftBukkit start -@@ -3599,6 +3607,32 @@ public abstract class LivingEntity extends Entity implements Attackable { - if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { + if (this.lastHurtByPlayer != null) { + this.lastHurtByPlayer.store(compound, "last_hurt_by_player"); + compound.putInt("last_hurt_by_player_memory_time", this.lastHurtByPlayerMemoryTime); +@@ -891,6 +893,7 @@ public abstract class LivingEntity extends Entity implements Attackable { + } // Paper - The sleeping pos will always also set the actual pos, so a desync suggests something is wrong + }, this::clearSleepingPos); + compound.getCompound("Brain").ifPresent(compoundTag -> this.brain = this.makeBrain(new Dynamic<>(NbtOps.INSTANCE, compoundTag))); ++ this.shouldBurnInDay = compound.getBooleanOr("Purpur.ShouldBurnInDay", false); // Purpur - API for any mob to burn daylight + this.lastHurtByPlayer = EntityReference.read(compound, "last_hurt_by_player"); + this.lastHurtByPlayerMemoryTime = compound.getIntOr("last_hurt_by_player_memory_time", 0); + this.lastHurtByMob = EntityReference.read(compound, "last_hurt_by_mob"); +@@ -3615,6 +3618,32 @@ public abstract class LivingEntity extends Entity implements Attackable { + if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterOrRain()) { this.hurtServer(serverLevel, this.damageSources().drown(), 1.0F); } + @@ -99,19 +94,19 @@ index cef0c2bd5c010e9ca6a8f42f2def832c244eae31..c5a5bd367478c32672fbf5ec237bef43 + // Purpur end - copied from Zombie - API for any mob to burn daylight } - public boolean isSensitiveToWater() { + protected void applyInput() { diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index 0b14919c8d7c153d2715abb286e1b466945e86fc..bc22d67bba9b1ebb6bef84f5326375100d24461d 100644 +index b828524d62a940f89f0c0fa926ef0423019ec212..e9344f61a943d610dfabe4918c227ddba166f17f 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -1657,19 +1657,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1531,19 +1531,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } public boolean isSunBurnTick() { -- if (this.level().isDay() && !this.level().isClientSide) { +- if (this.level().isBrightOutside() && !this.level().isClientSide) { - float lightLevelDependentMagicValue = this.getLightLevelDependentMagicValue(); - BlockPos blockPos = BlockPos.containing(this.getX(), this.getEyeY(), this.getZ()); -- boolean flag = this.isInWaterRainOrBubble() || this.isInPowderSnow || this.wasInPowderSnow; +- boolean flag = this.isInWaterOrRain() || this.isInPowderSnow || this.wasInPowderSnow; - if (lightLevelDependentMagicValue > 0.5F - && this.random.nextFloat() * 30.0F < (lightLevelDependentMagicValue - 0.4F) * 2.0F - && !flag @@ -127,7 +122,7 @@ index 0b14919c8d7c153d2715abb286e1b466945e86fc..bc22d67bba9b1ebb6bef84f532637510 @Override diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java -index e186aee80b052b7fc4bfe02763010bfb2d55ea35..223739818e9ac6c9fe396b82bce53a3ab029610a 100644 +index 0a5de00d41c59528e9f85a7cf82363c45e24d2bc..185edd9878f5193c44b75a126e8182caade7e943 100644 --- a/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -64,11 +64,12 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -173,16 +168,15 @@ index e186aee80b052b7fc4bfe02763010bfb2d55ea35..223739818e9ac6c9fe396b82bce53a3a super.aiStep(); } -@@ -243,7 +224,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -242,14 +223,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo + public void readAdditionalSaveData(CompoundTag compound) { super.readAdditionalSaveData(compound); this.reassessWeaponGoal(); - // Paper start - shouldBurnInDay API -- if (compound.contains("Paper.ShouldBurnInDay")) { -+ if (false && compound.contains("Paper.ShouldBurnInDay")) { // Purpur - implemented in LivingEntity - API for any mob to burn daylight - this.shouldBurnInDay = compound.getBoolean("Paper.ShouldBurnInDay"); - } - // Paper end - shouldBurnInDay API -@@ -252,7 +233,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +- this.shouldBurnInDay = compound.getBooleanOr("Paper.ShouldBurnInDay", true); // Paper - shouldBurnInDay API ++ //this.shouldBurnInDay = compound.getBooleanOr("Paper.ShouldBurnInDay", true); // Paper - shouldBurnInDay API // Purpur - implemented in LivingEntity - API for any mob to burn daylight + } + + // Paper start - shouldBurnInDay API @Override public void addAdditionalSaveData(final net.minecraft.nbt.CompoundTag nbt) { super.addAdditionalSaveData(nbt); @@ -192,7 +186,7 @@ index e186aee80b052b7fc4bfe02763010bfb2d55ea35..223739818e9ac6c9fe396b82bce53a3a // Paper end - shouldBurnInDay API diff --git a/net/minecraft/world/entity/monster/Husk.java b/net/minecraft/world/entity/monster/Husk.java -index 31eef2869945d9de565d627cac3fc1a5db380a2a..e618e716cb5ff3a3c5d284e985455694cc0edde0 100644 +index 9baec22561093d64157d93449e84c23b3f238b39..3f331215ef49c52fa3a53bcf744159d2221111f5 100644 --- a/net/minecraft/world/entity/monster/Husk.java +++ b/net/minecraft/world/entity/monster/Husk.java @@ -19,6 +19,7 @@ import net.minecraft.world.level.ServerLevelAccessor; @@ -213,10 +207,10 @@ index 31eef2869945d9de565d627cac3fc1a5db380a2a..e618e716cb5ff3a3c5d284e985455694 @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 32b7c34d3c68dcfa936b628b2d038524204129a3..41ae39349c6f7e6c5d0187257a72782c5dc4c8eb 100644 +index 409e98d0981aa8be0d35bc5c93f7130a9ce16860..c2bc638b0029ac46cf388187ca74545060a54914 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -60,6 +60,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -61,6 +61,7 @@ public class Phantom extends FlyingMob implements Enemy { this.xpReward = 5; this.moveControl = new Phantom.PhantomMoveControl(this); this.lookControl = new Phantom.PhantomLookControl(this); @@ -224,7 +218,7 @@ index 32b7c34d3c68dcfa936b628b2d038524204129a3..41ae39349c6f7e6c5d0187257a72782c } // Purpur start - Ridables -@@ -146,6 +147,16 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -147,6 +148,16 @@ public class Phantom extends FlyingMob implements Enemy { } // Purpur end - Toggle for water sensitive mob damage @@ -241,7 +235,7 @@ index 32b7c34d3c68dcfa936b628b2d038524204129a3..41ae39349c6f7e6c5d0187257a72782c @Override public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; -@@ -261,15 +272,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -262,15 +273,7 @@ public class Phantom extends FlyingMob implements Enemy { @Override public void aiStep() { @@ -258,31 +252,31 @@ index 32b7c34d3c68dcfa936b628b2d038524204129a3..41ae39349c6f7e6c5d0187257a72782c super.aiStep(); } -@@ -299,7 +302,7 @@ public class Phantom extends FlyingMob implements Enemy { - if (compound.hasUUID("Paper.SpawningEntity")) { - this.spawningEntity = compound.getUUID("Paper.SpawningEntity"); - } -- if (compound.contains("Paper.ShouldBurnInDay")) { -+ if (false && compound.contains("Paper.ShouldBurnInDay")) { // Purpur - implemented in LivingEntity - API for any mob to burn daylight - this.shouldBurnInDay = compound.getBoolean("Paper.ShouldBurnInDay"); - } +@@ -294,7 +297,7 @@ public class Phantom extends FlyingMob implements Enemy { + this.setPhantomSize(compound.getIntOr("size", 0)); + // Paper start + this.spawningEntity = compound.read("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC).orElse(null); +- this.shouldBurnInDay = compound.getBooleanOr("Paper.ShouldBurnInDay", true); ++ //this.shouldBurnInDay = compound.getBooleanOr("Paper.ShouldBurnInDay", true); // Purpur - implemented in LivingEntity - API for any mob to burn daylight // Paper end -@@ -316,7 +319,7 @@ public class Phantom extends FlyingMob implements Enemy { - if (this.spawningEntity != null) { - compound.putUUID("Paper.SpawningEntity", this.spawningEntity); - } + } + +@@ -305,7 +308,7 @@ public class Phantom extends FlyingMob implements Enemy { + compound.putInt("size", this.getPhantomSize()); + // Paper start + compound.storeNullable("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC, this.spawningEntity); - compound.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); + //compound.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - implemented in LivingEntity - API for any mob to burn daylight // Paper end } diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index bb8c37c8348172947efe14d48ed9ae203409affa..b1da45df27f02395d793e7eafe576f5f92aa3a7b 100644 +index 7f9ee637f443f55ae901d1a0aebedd8f7411996d..aed6db357f5b4550407a424a5b83c590044568ee 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -89,11 +89,12 @@ public class Zombie extends Monster { - private boolean canBreakDoors; - private int inWaterTime; +@@ -93,11 +93,12 @@ public class Zombie extends Monster { + private boolean canBreakDoors = false; + private int inWaterTime = 0; public int conversionTime; - private boolean shouldBurnInDay = true; // Paper - Add more Zombie API + //private boolean shouldBurnInDay = true; // Paper - Add more Zombie API // Purpur - implemented in LivingEntity - API for any mob to burn daylight @@ -294,7 +288,7 @@ index bb8c37c8348172947efe14d48ed9ae203409affa..b1da45df27f02395d793e7eafe576f5f } public Zombie(Level level) { -@@ -290,29 +291,7 @@ public class Zombie extends Monster { +@@ -294,29 +295,7 @@ public class Zombie extends Monster { @Override public void aiStep() { @@ -325,7 +319,7 @@ index bb8c37c8348172947efe14d48ed9ae203409affa..b1da45df27f02395d793e7eafe576f5f super.aiStep(); } -@@ -371,6 +350,7 @@ public class Zombie extends Monster { +@@ -375,6 +354,7 @@ public class Zombie extends Monster { // CraftBukkit end } @@ -333,7 +327,7 @@ index bb8c37c8348172947efe14d48ed9ae203409affa..b1da45df27f02395d793e7eafe576f5f public boolean isSunSensitive() { return this.shouldBurnInDay; // Paper - Add more Zombie API } -@@ -509,7 +489,7 @@ public class Zombie extends Monster { +@@ -512,7 +492,7 @@ public class Zombie extends Monster { compound.putBoolean("CanBreakDoors", this.canBreakDoors()); compound.putInt("InWaterTime", this.isInWater() ? this.inWaterTime : -1); compound.putInt("DrownedConversionTime", this.isUnderWaterConverting() ? this.conversionTime : -1); @@ -342,12 +336,12 @@ index bb8c37c8348172947efe14d48ed9ae203409affa..b1da45df27f02395d793e7eafe576f5f } @Override -@@ -522,7 +502,7 @@ public class Zombie extends Monster { - this.startUnderWaterConversion(compound.getInt("DrownedConversionTime")); +@@ -527,7 +507,7 @@ public class Zombie extends Monster { + } else { + this.getEntityData().set(DATA_DROWNED_CONVERSION_ID, false); } - // Paper start - Add more Zombie API -- if (compound.contains("Paper.ShouldBurnInDay")) { -+ if (false && compound.contains("Paper.ShouldBurnInDay")) { // Purpur - implemented in LivingEntity - API for any mob to burn daylight - this.shouldBurnInDay = compound.getBoolean("Paper.ShouldBurnInDay"); - } - // Paper end - Add more Zombie API +- this.shouldBurnInDay = compound.getBooleanOr("Paper.ShouldBurnInDay", true); // Paper - Add more Zombie API ++ //this.shouldBurnInDay = compound.getBooleanOr("Paper.ShouldBurnInDay", true); // Paper - Add more Zombie API // Purpur - implemented in LivingEntity - API for any mob to burn daylight + } + + @Override diff --git a/purpur-server/minecraft-patches/features/0020-Cows-naturally-aggressive-to-players-chance.patch b/purpur-server/minecraft-patches/features/0020-Cows-naturally-aggressive-to-players-chance.patch index 9df4054e7..44ab17c07 100644 --- a/purpur-server/minecraft-patches/features/0020-Cows-naturally-aggressive-to-players-chance.patch +++ b/purpur-server/minecraft-patches/features/0020-Cows-naturally-aggressive-to-players-chance.patch @@ -4,20 +4,33 @@ Date: Mon, 30 Aug 2021 22:49:53 -0500 Subject: [PATCH] Cows naturally aggressive to players chance +diff --git a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +index 46022a0aabc9c319deeb75913d356eeb74f1a12c..9952eed6a8ac31c757d5c27e043b85d7a949b481 100644 +--- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java ++++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +@@ -126,7 +126,7 @@ public class DefaultAttributes { + .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.MOOSHROOM, net.minecraft.world.entity.animal.AbstractCow.createAttributes().build()) // Purpur - Cows naturally aggressive to players chance + .put(EntityType.MULE, AbstractChestedHorse.createBaseChestedHorseAttributes().build()) + .put(EntityType.OCELOT, Ocelot.createAttributes().build()) + .put(EntityType.PANDA, Panda.createAttributes().build()) diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index a8c76fcbbaa4afd2d0bd568874995b91d8d67c03..b62c4449047da36d8b4d4b87d03c77906d12dc31 100644 +index 4bc6d0eb56b4674e2ac0f13010521314a95e0096..34700b4e599efa6fb9ea8c1d0da26bd7fe8fb9eb 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java -@@ -32,6 +32,8 @@ import net.minecraft.world.level.Level; - import net.minecraft.world.level.block.state.BlockState; +@@ -22,6 +22,8 @@ import net.minecraft.world.level.Level; + import net.minecraft.world.level.ServerLevelAccessor; - public class Cow extends Animal { + public class Cow extends AbstractCow { + private boolean isNaturallyAggressiveToPlayers; // Purpur - Cows naturally aggressive to players chance + - private static final EntityDimensions BABY_DIMENSIONS = EntityType.COW.getDimensions().scale(0.5F).withEyeHeight(0.665F); + private static final EntityDataAccessor> DATA_VARIANT_ID = SynchedEntityData.defineId(Cow.class, EntityDataSerializers.COW_VARIANT); public Cow(EntityType entityType, Level level) { -@@ -60,6 +62,7 @@ public class Cow extends Animal { +@@ -50,6 +52,7 @@ public class Cow extends AbstractCow { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.cowMaxHealth); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.cowScale); @@ -25,7 +38,7 @@ index a8c76fcbbaa4afd2d0bd568874995b91d8d67c03..b62c4449047da36d8b4d4b87d03c7790 } // Purpur end - Configurable entity base attributes -@@ -77,17 +80,27 @@ public class Cow extends Animal { +@@ -67,6 +70,21 @@ public class Cow extends AbstractCow { } // Purpur end - Toggle for water sensitive mob damage @@ -37,28 +50,26 @@ index a8c76fcbbaa4afd2d0bd568874995b91d8d67c03..b62c4449047da36d8b4d4b87d03c7790 + } + // Purpur end - Cows naturally aggressive to players chance + - @Override - protected void registerGoals() { - this.goalSelector.addGoal(0, new FloatGoal(this)); - this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables - this.goalSelector.addGoal(1, new PanicGoal(this, 2.0)); ++ @Override ++ protected void registerGoals() { ++ super.registerGoals(); + this.goalSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.MeleeAttackGoal(this, 1.2000000476837158D, true)); // Purpur - Cows naturally aggressive to players chance - this.goalSelector.addGoal(2, new BreedGoal(this, 1.0)); - this.goalSelector.addGoal(3, new TemptGoal(this, 1.25, itemStack -> level().purpurConfig.cowFeedMushrooms > 0 && (itemStack.is(net.minecraft.world.level.block.Blocks.RED_MUSHROOM.asItem()) || itemStack.is(net.minecraft.world.level.block.Blocks.BROWN_MUSHROOM.asItem())) || itemStack.is(ItemTags.COW_FOOD), false)); // Purpur - Cows eat mushrooms - this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25)); - this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(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 net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (ignored, ignored2) -> isNaturallyAggressiveToPlayers)); // Purpur - Cows naturally aggressive to players chance - } - ++ this.targetSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, net.minecraft.world.entity.player.Player.class, 10, true, false, (ignored, ignored2) -> isNaturallyAggressiveToPlayers)); // Purpur - Cows naturally aggressive to players chance ++ } ++ @Override -@@ -96,7 +109,7 @@ public class Cow extends Animal { - } - - public static AttributeSupplier.Builder createAttributes() { -- return Animal.createAnimalAttributes().add(Attributes.MAX_HEALTH, 10.0).add(Attributes.MOVEMENT_SPEED, 0.2F); -+ return Animal.createAnimalAttributes().add(Attributes.MAX_HEALTH, 10.0).add(Attributes.MOVEMENT_SPEED, 0.2F).add(Attributes.ATTACK_DAMAGE, 0.0D); // Purpur - Cows naturally aggressive to players chance + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); +@@ -79,6 +97,12 @@ public class Cow extends AbstractCow { + VariantUtils.writeVariant(compound, this.getVariant()); } ++ // Purpur start - Cows naturally aggressive to players chance ++ public static net.minecraft.world.entity.ai.attributes.AttributeSupplier.Builder createAttributes() { ++ return AbstractCow.createAttributes().add(net.minecraft.world.entity.ai.attributes.Attributes.ATTACK_DAMAGE, 0.0D); ++ } ++ // Purpur end - Cows naturally aggressive to players chance ++ @Override + public void readAdditionalSaveData(CompoundTag compound) { + super.readAdditionalSaveData(compound); diff --git a/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch index e9f4d0ddd..87182c064 100644 --- a/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch +++ b/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Mobs always drop experience diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java -index e717c063c8f9623b8c4b4ea3843d05fd79af3653..b982d4b7bdf39fcaf5f22cc889467d7b953e3a8e 100644 +index fe6f29c5e663daea017b19aaafaddda40b4c22bb..745f73e1f80d9c433630e31769b404eeeb63cb88 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java -@@ -59,6 +59,13 @@ public class GlowSquid extends Squid { +@@ -60,6 +60,13 @@ public class GlowSquid extends Squid { } // Purpur end - Toggle for water sensitive mob damage @@ -23,10 +23,10 @@ index e717c063c8f9623b8c4b4ea3843d05fd79af3653..b982d4b7bdf39fcaf5f22cc889467d7b protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java -index 4fa526496265a85b637136f0fd0692ef4f570ad6..4ac052a78841939a53dac2afb575cb115581e249 100644 +index 4d44b35ee34eb256b9aff9d74b1cb9ae1ac9503f..46aaba94e7b6bde26ad3b61fcf5e0aa07fed7987 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java -@@ -116,6 +116,13 @@ public class Bat extends AmbientCreature { +@@ -117,6 +117,13 @@ public class Bat extends AmbientCreature { } // Purpur end - Toggle for water sensitive mob damage @@ -41,7 +41,7 @@ index 4fa526496265a85b637136f0fd0692ef4f570ad6..4ac052a78841939a53dac2afb575cb11 public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index 950988bf89f36e8555605d370bb039fe89c66fc7..d5727999eb67ff30dbf47865d59452483338e170 100644 +index 8da974e98f2207d76e8962eda54c75d0356ecc6f..531d18c5a47eb4676c3dd9b5353f8f9d49b17b54 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -494,6 +494,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -59,10 +59,10 @@ index 950988bf89f36e8555605d370bb039fe89c66fc7..d5727999eb67ff30dbf47865d5945248 public int getRemainingPersistentAngerTime() { return this.entityData.get(DATA_REMAINING_ANGER_TIME); diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index b41ca04043e65f107edaebc49d398650898e35fb..edd796fd34e43d66a48104201d885756fdd968c3 100644 +index 1d758dd3ee0834fcf9ebf737bc7a016b881145e5..db536a60f3f370d163e4429865634b449f4c0cfb 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java -@@ -140,6 +140,13 @@ public class Cat extends TamableAnimal implements VariantHolder itemStack.is(ItemTags.CAT_FOOD), true); + this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true); diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java -index 2364596156c21e82879f5bf4fd873b9d90b1c308..4d0b172a9d54b1524c8052051859c7178774bef7 100644 +index 3faa8ac614b6d2f8f90c7092900aa24aa976c0ac..75cccc11019c5c6587d441e2c759d351dcb56153 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java -@@ -95,6 +95,13 @@ public class Chicken extends Animal { +@@ -115,6 +115,13 @@ public class Chicken extends Animal { } // Purpur end - Toggle for water sensitive mob damage @@ -95,7 +95,7 @@ index 2364596156c21e82879f5bf4fd873b9d90b1c308..4d0b172a9d54b1524c8052051859c717 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Cod.java b/net/minecraft/world/entity/animal/Cod.java -index ac7259cfc8428131f90956d7f76f2227049ffae3..b259de78198e0e3df9e5901019283ad246c8e044 100644 +index 6128ed595cb97cc11c1a0e1e1673b3af8e428fb8..7e08573cba6efcd78fcce37bccc2923f374f3c44 100644 --- a/net/minecraft/world/entity/animal/Cod.java +++ b/net/minecraft/world/entity/animal/Cod.java @@ -39,6 +39,13 @@ public class Cod extends AbstractSchoolingFish { @@ -113,10 +113,10 @@ index ac7259cfc8428131f90956d7f76f2227049ffae3..b259de78198e0e3df9e5901019283ad2 public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index b62c4449047da36d8b4d4b87d03c77906d12dc31..a0297ac3ba520122ed2095d6008c057d749b731e 100644 +index 34700b4e599efa6fb9ea8c1d0da26bd7fe8fb9eb..4a68181d200c26485f290216f9e52b79965215eb 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java -@@ -88,6 +88,13 @@ public class Cow extends Animal { +@@ -78,6 +78,13 @@ public class Cow extends AbstractCow { } // Purpur end - Cows naturally aggressive to players chance @@ -129,12 +129,12 @@ index b62c4449047da36d8b4d4b87d03c77906d12dc31..a0297ac3ba520122ed2095d6008c057d + @Override protected void registerGoals() { - this.goalSelector.addGoal(0, new FloatGoal(this)); + super.registerGoals(); diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java -index e104058b3c01bea4cc8a77de2ad4378465903b34..7003b532182737a745491e397a967b72e6b308aa 100644 +index 4f3777ee9cf7a67d5e2f489dbcf40ec2a1ed13cd..87ba416479df56bad5d13c01e96e92e45b7802a3 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java -@@ -163,6 +163,13 @@ public class Dolphin extends AgeableWaterCreature { +@@ -165,6 +165,13 @@ public class Dolphin extends AgeableWaterCreature { } // Purpur end - Toggle for water sensitive mob damage @@ -149,10 +149,10 @@ index e104058b3c01bea4cc8a77de2ad4378465903b34..7003b532182737a745491e397a967b72 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 59695ebc6758cbbc444f23ffdf2f7d66cff54430..90452f0945e761077608692877677f522d38bccd 100644 +index 98cb5c75bb4397914271f81aeace045105a9572e..fcda990a5575288b39f6aa16b0ec48d2a57542e9 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -189,6 +189,13 @@ public class Fox extends Animal implements VariantHolder { +@@ -201,6 +201,13 @@ public class Fox extends Animal { } // Purpur end - Toggle for water sensitive mob damage @@ -167,10 +167,10 @@ index 59695ebc6758cbbc444f23ffdf2f7d66cff54430..90452f0945e761077608692877677f52 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java -index 23108729ce65ef8b7b215b82f29347513cfd4ebf..ccadc9a151e258ff2c74c65c374b1f09d56d10ec 100644 +index 498302a20b783f2208417b56716f4fc4f18bc333..21ed6bfcba6ea58663dc8e932814c1ac084d0402 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java -@@ -105,6 +105,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -106,6 +106,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob { } // Purpur end - Toggle for water sensitive mob damage @@ -185,10 +185,10 @@ index 23108729ce65ef8b7b215b82f29347513cfd4ebf..ccadc9a151e258ff2c74c65c374b1f09 protected void registerGoals() { if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur - Iron golem calm anger options diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index 5e9795f447e88a42909730d383eaa36acfaf18f5..3bcd119757dfc579df790fcc8919a3636bafa7fe 100644 +index 114d893f74dfb4422380cad649b7f3708c29c1c3..07c89507b13d44dfc7903570e0d8c834e91866b7 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -93,6 +93,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { +@@ -166,6 +166,13 @@ public class Rabbit extends Animal { } // Purpur end - Toggle for water sensitive mob damage @@ -329,10 +329,10 @@ index 9c0ff4d4af5db81973c36c278ae32bf76ef5d558..da5b32a17283e540615373097acc511d public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Salmon.java b/net/minecraft/world/entity/animal/Salmon.java -index 8bd4b2b29438bff65ed00a42bbc9639111af181f..5da2f14770aebb2286c3e8cbd9622a89a33e0e20 100644 +index 78f83edd809a72bf5a2f908d8d5e3b1755541a29..25811130990e680174a0e930a6d066ad2d580f60 100644 --- a/net/minecraft/world/entity/animal/Salmon.java +++ b/net/minecraft/world/entity/animal/Salmon.java -@@ -61,6 +61,13 @@ public class Salmon extends AbstractSchoolingFish implements VariantHolder, B +@@ -159,6 +159,13 @@ public class Axolotl extends Animal implements Bucketable { } // Purpur end - Toggle for water sensitive mob damage @@ -473,10 +437,10 @@ index ee426f8a52c9ff5519641ace0f36a38a36ecd24b..eb74d8313fd3cc15a33330fe7bafaca4 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index 0c357ffacfe4dd982a58e6cf2338c7e6b24610f5..6f106f10466440f8e65e04511f67d48f082d703f 100644 +index 47de7e4710234676358378fb5fa9a6b034662e42..5eb656a33cb6ca8a93125c27cd7db175d35b80c3 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -142,6 +142,13 @@ public class Goat extends Animal { +@@ -145,6 +145,13 @@ public class Goat extends Animal { } // Purpur end - Toggle for water sensitive mob damage @@ -491,7 +455,7 @@ index 0c357ffacfe4dd982a58e6cf2338c7e6b24610f5..6f106f10466440f8e65e04511f67d48f protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/horse/Donkey.java b/net/minecraft/world/entity/animal/horse/Donkey.java -index 1db6ccdc6c83c704aa84a46ee2751a17125bf457..3e0181578a6f2d22d1da3776abf30bf97d124620 100644 +index 9b17b1acf63fddb5f5b6cdf95283ae8f619a8120..0783d41a6c4622b03d9d368c1af949af1292dcb7 100644 --- a/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/net/minecraft/world/entity/animal/horse/Donkey.java @@ -54,6 +54,13 @@ public class Donkey extends AbstractChestedHorse { @@ -506,13 +470,13 @@ index 1db6ccdc6c83c704aa84a46ee2751a17125bf457..3e0181578a6f2d22d1da3776abf30bf9 + // Purpur end - Mobs always drop experience + @Override - protected SoundEvent getAmbientSound() { + public SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java -index f257d549570918381925cef98734fc0aa605f8f2..be0d636ca894c5995f28f59c196cd8e56dd228c4 100644 +index 8754c3d6fd06bd2c834fe06e238afa330b24e547..206f911d1184a22f401d217f713495e6e85263be 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java -@@ -81,6 +81,13 @@ public class Horse extends AbstractHorse implements VariantHolder { +@@ -84,6 +84,13 @@ public class Horse extends AbstractHorse { } // Purpur end - Toggle for water sensitive mob damage @@ -527,10 +491,10 @@ index f257d549570918381925cef98734fc0aa605f8f2..be0d636ca894c5995f28f59c196cd8e5 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index 872a54186a20fd855fe7981f3ff1c867f4c64d19..c21d558a6a3a61d6c54b8163f8cb4963846b2c26 100644 +index 2e776404e65c5dc6040d00a1ed8b5ce0df7badc0..e300a1284fd98791871ba1780bb7352cd848766a 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -155,6 +155,13 @@ public class Llama extends AbstractChestedHorse implements VariantHolder entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index ad661f2bf8957644605b52a469d6a7cf8e064398..9686658b90e886d6236f553d7406771814d18672 100644 +index 553a8f0f5b895f3d8528f10efdc918466e4f4d87..b8ada9ebd0d8d4ca0e8eb7e6084a0057f4758ea4 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -91,6 +91,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -869,7 +869,7 @@ index ad661f2bf8957644605b52a469d6a7cf8e064398..9686658b90e886d6236f553d74067718 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/MagmaCube.java b/net/minecraft/world/entity/monster/MagmaCube.java -index bf26f5f6017c60d5991d5f6c87da2acbd95ef5bb..312d4a3d312b5c326d6ca13ccfc48171e18f4370 100644 +index da90b7dc79aa6d01e88c1250fff662ba1b001dc3..7ef0f84d4c449a8991683ca66d7b16ca21ef4cdf 100644 --- a/net/minecraft/world/entity/monster/MagmaCube.java +++ b/net/minecraft/world/entity/monster/MagmaCube.java @@ -75,6 +75,13 @@ public class MagmaCube extends Slime { @@ -887,10 +887,10 @@ index bf26f5f6017c60d5991d5f6c87da2acbd95ef5bb..312d4a3d312b5c326d6ca13ccfc48171 return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 41ae39349c6f7e6c5d0187257a72782c5dc4c8eb..3c105d164acd9e45de2335ef28ddecf3fa48d267 100644 +index c2bc638b0029ac46cf388187ca74545060a54914..2e1e7cf0fe1bc25437cf2f429ff33b4263b1a6f1 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -157,6 +157,13 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -158,6 +158,13 @@ public class Phantom extends FlyingMob implements Enemy { public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; } // Purpur end - API for any mob to burn daylight @@ -905,7 +905,7 @@ index 41ae39349c6f7e6c5d0187257a72782c5dc4c8eb..3c105d164acd9e45de2335ef28ddecf3 public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Pillager.java b/net/minecraft/world/entity/monster/Pillager.java -index 869a1007de13f3f5d757968d0f84cbf43786c870..a57d869cdc6a05124237933437aa2d26ff72cab3 100644 +index 4c41e7e0a164779bf1d6765fdb750dcd60acd104..3d12b509a9b57f0326ec48eed93b2962f6f0e493 100644 --- a/net/minecraft/world/entity/monster/Pillager.java +++ b/net/minecraft/world/entity/monster/Pillager.java @@ -95,6 +95,13 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve @@ -923,10 +923,10 @@ index 869a1007de13f3f5d757968d0f84cbf43786c870..a57d869cdc6a05124237933437aa2d26 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index 3d9eae0403875a99c25ccb47888dc591f051e744..ce5cd032203839887a29008c2a1420c6bb6f4fee 100644 +index 0b6550c3abad0eb00af4f303725045a8aa3dc4b1..56b844a8252c7f7ece12db98775230134e1898d6 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java -@@ -104,6 +104,13 @@ public class Ravager extends Raider { +@@ -107,6 +107,13 @@ public class Ravager extends Raider { } // Purpur end - Toggle for water sensitive mob damage @@ -941,10 +941,10 @@ index 3d9eae0403875a99c25ccb47888dc591f051e744..ce5cd032203839887a29008c2a1420c6 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index c26e4858a14571d58e439cabd5f2593da4ee2634..a006300aea2cbb05400550f1c79e872d095384f8 100644 +index c9dab7d6b1afe8749022d99aa988782c75270561..56401c993d9a4c41b0782831a8b857646bf18f88 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -136,6 +136,13 @@ public class Shulker extends AbstractGolem implements VariantHolder entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java -index d01bc46d77340b10b23d0c0d50bddc37657028c8..241526239bdbd5d9276f85e7fca46a7051f46a25 100644 +index 7b19d64d6b1d61922a2368e38f2b31a42ea29a1a..69b3cd61d49e41ab5fdb861043b012b1f60f8995 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java -@@ -126,6 +126,13 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -124,6 +124,13 @@ public class Strider extends Animal implements ItemSteerable { } // Purpur end - Make entity breeding times configurable @@ -1067,7 +1067,7 @@ index d01bc46d77340b10b23d0c0d50bddc37657028c8..241526239bdbd5d9276f85e7fca46a70 EntityType entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index 20f78e3a37f4c7257b32f2279a6404415aa00e2c..0d9dd9919b2b9902137df861bcac8057e4b741de 100644 +index bc8727a4ae3f1f30f4de5ab81a79c15a8153e34a..96069c066f6f8fd822e05b264741205ce1077b03 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -117,6 +117,13 @@ public class Vex extends Monster implements TraceableEntity { @@ -1085,10 +1085,10 @@ index 20f78e3a37f4c7257b32f2279a6404415aa00e2c..0d9dd9919b2b9902137df861bcac8057 public boolean isFlapping() { return this.tickCount % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index 5f68d73460adfac2ead57d168156a2784af979ae..b584f71440a81ac09d24e59763a21e857f290e5a 100644 +index 50da0e9246f50be6073e26c8fa042fe2b4eabb32..8ba772d9f5f53dc0dea269c5089e742f20dbc308 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -87,6 +87,13 @@ public class Vindicator extends AbstractIllager { +@@ -88,6 +88,13 @@ public class Vindicator extends AbstractIllager { } // Purpur end - Toggle for water sensitive mob damage @@ -1103,7 +1103,7 @@ index 5f68d73460adfac2ead57d168156a2784af979ae..b584f71440a81ac09d24e59763a21e85 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Witch.java b/net/minecraft/world/entity/monster/Witch.java -index 96ba35f3530ab405a960c79955699666deb6b845..e4353c64732067198f082cdd266c1f1ee1fe4f4e 100644 +index e90ac2c977555793ee8c25f04ec3c33b0332d312..4b253ae8149f5d9505c5140a00a96d8c8850b1c4 100644 --- a/net/minecraft/world/entity/monster/Witch.java +++ b/net/minecraft/world/entity/monster/Witch.java @@ -88,6 +88,13 @@ public class Witch extends Raider implements RangedAttackMob { @@ -1121,7 +1121,7 @@ index 96ba35f3530ab405a960c79955699666deb6b845..e4353c64732067198f082cdd266c1f1e protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/WitherSkeleton.java b/net/minecraft/world/entity/monster/WitherSkeleton.java -index a4dc9b7fbde19b08eb389dc42df21aa5df94e703..ff2596f69d00b36c65872ab2e27e5d44a6ffa3e1 100644 +index ef2a7fdc8abe05b7718b71e23556258aba392c75..b3f5b2e3e2cfc378de948c0e186727d5687c0e98 100644 --- a/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/net/minecraft/world/entity/monster/WitherSkeleton.java @@ -66,6 +66,13 @@ public class WitherSkeleton extends AbstractSkeleton { @@ -1139,10 +1139,10 @@ index a4dc9b7fbde19b08eb389dc42df21aa5df94e703..ff2596f69d00b36c65872ab2e27e5d44 protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/net/minecraft/world/entity/monster/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java -index 79a4a3f4e10e1f9c1a6100060a95636075fc8236..d2a67f3e1c971f737e58567dae23fa70e9d942ea 100644 +index 7cb2bc8b126a0027216ec4afd7f6e54fe328b8be..bdf52bfe661d4c0ad6c5a28254302f8f0021c09b 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java -@@ -117,6 +117,13 @@ public class Zoglin extends Monster implements HoglinBase { +@@ -118,6 +118,13 @@ public class Zoglin extends Monster implements HoglinBase { } // Purpur end - Toggle for water sensitive mob damage @@ -1157,10 +1157,10 @@ index 79a4a3f4e10e1f9c1a6100060a95636075fc8236..d2a67f3e1c971f737e58567dae23fa70 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index b1da45df27f02395d793e7eafe576f5f92aa3a7b..7af71c777dca26cd94b1807a2a77ea0d30e92976 100644 +index aed6db357f5b4550407a424a5b83c590044568ee..783f8b9a05939b9f42fc77065f6347e3c6ddf8f5 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -147,6 +147,13 @@ public class Zombie extends Monster { +@@ -151,6 +151,13 @@ public class Zombie extends Monster { } // Purpur end - Toggle for water sensitive mob damage @@ -1175,10 +1175,10 @@ index b1da45df27f02395d793e7eafe576f5f92aa3a7b..7af71c777dca26cd94b1807a2a77ea0d protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 94b9abc765b78a40a7ecbf4cbd775b778d49c815..1ca0514732916d325c4a76d73120aaf613c3f780 100644 +index c6e460c21af6145321cad527112adc15e9f30d8d..ae5939c940bdd93977fa882360fc31e46479554f 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -131,6 +131,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -130,6 +130,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } // Purpur end - Toggle for water sensitive mob damage @@ -1193,7 +1193,7 @@ index 94b9abc765b78a40a7ecbf4cbd775b778d49c815..1ca0514732916d325c4a76d73120aaf6 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 09c991d8e344f11bc84dea453042ee35c39e580e..fddbbffafea275dad187b7908386cf4c05c86743 100644 +index 34e259b95abfc514e07584a699ecc80de0014250..39489c8a347031fb4f73faca46039786e35762ac 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -112,6 +112,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -1211,10 +1211,10 @@ index 09c991d8e344f11bc84dea453042ee35c39e580e..fddbbffafea275dad187b7908386cf4c public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 9b82be9ec52fd4bc3b85e8289e7e8f9b79b74b9a..28f3bc31b4c093e426ae141edeee61a12a444ba1 100644 +index ee2cd8bfb74dead58f77f9755f306aa7166285fd..252a6469cab202bcc612b4d52a5027c615029a21 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -131,6 +131,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -134,6 +134,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Toggle for water sensitive mob damage @@ -1229,10 +1229,10 @@ index 9b82be9ec52fd4bc3b85e8289e7e8f9b79b74b9a..28f3bc31b4c093e426ae141edeee61a1 public void setTimeInOverworld(int timeInOverworld) { this.timeInOverworld = timeInOverworld; diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index 55ebfa5df06a59203248514d10dced9660ebf215..f0d78cf5fe2c39add9a673471103c352cce72a45 100644 +index 0059e926f09317e056f3f722c4ca775c43bc0b86..54ab9593b39051d47f1dd8bddf210064768382be 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -183,6 +183,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -168,6 +168,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento } // Purpur end - Toggle for water sensitive mob damage @@ -1247,7 +1247,7 @@ index 55ebfa5df06a59203248514d10dced9660ebf215..f0d78cf5fe2c39add9a673471103c352 public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 2237681f298113bda0556699e19e880f4b04a853..4984b9864b63f92bc939b530253e871ca94a3277 100644 +index f4893cc54d7f144025da0057beedb3a974c80dc1..70ee15527fa6f30783d6a58bb767b18124f25c53 100644 --- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java @@ -97,6 +97,13 @@ public class PiglinBrute extends AbstractPiglin { @@ -1265,10 +1265,10 @@ index 2237681f298113bda0556699e19e880f4b04a853..4984b9864b63f92bc939b530253e871c return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 97e5bb0cc335b23211e78044919282bfabad26a5..16fbe4e6521cd4f6baa8f5dd590da0fc749f6585 100644 +index 654935f2994c588c8545c21d6de839711c55cdfc..5b52bbac242a7fbb8eaea7e41b7265a1a859ff7c 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -285,6 +285,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -288,6 +288,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end - Toggle for water sensitive mob damage @@ -1283,10 +1283,10 @@ index 97e5bb0cc335b23211e78044919282bfabad26a5..16fbe4e6521cd4f6baa8f5dd590da0fc public Brain getBrain() { return (Brain)super.getBrain(); diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 8046a2d640e7c4d59cb5b9c6dff3bf5f026c7153..c3fbcc7956a64d49466874776f257ba27f55f2a4 100644 +index 7ad6a8479a0bdda570ac286220eacd0ba8642111..776e4d001bc6e6d419eb4392dc85bf4594e57058 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -114,6 +114,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -104,6 +104,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill } // Purpur end - Toggle for water sensitive mob damage From 110b3a781300d0b12bbff83f0921f08567843dbf Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 25 Mar 2025 22:20:43 -0700 Subject: [PATCH 050/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@dfc38843 deprecate bubble column methods PaperMC/Paper@480b2ed0 use more specific codecs in click event actions PaperMC/Paper@e21bf450 fix chunk-gc plugin ticket config PaperMC/Paper@32fef5d2 do the fix in Ticket record getter instead PaperMC/Paper@0d8dad65 Quick cursory update of ItemStackDataComponentTest PaperMC/Paper@0f1f084b Update ItemStackDataComponentEqualsTest PaperMC/Paper@34dfd5e8 add perm for test command, fix some tests PaperMC/Paper@740abe1a Update CraftSmithingTransformRecipe PaperMC/Paper@de93fda5 Merge branch 'update/1.21.5' of github.com:PaperMC/Paper into update/1.21.5 PaperMC/Paper@c02ad46d Update SmithingTripRecipe PaperMC/Paper@0a5ea70a Also bundle mc source change from last commit PaperMC/Paper@e7534177 Some marginal work on DataComponents PaperMC/Paper@db35db76 Implement legacy custom biome PaperMC/Paper@18b06e38 Implement plugin tickets PaperMC/Paper@c7b22702 Implement custom legacy biome PaperMC/Paper@77f07c89 Call drop events for dropping items PaperMC/Paper@eac69a96 Pray my thesis is better than this PaperMC/Paper@c5231f91 Update to 1.21.5 PaperMC/Paper@a3f71b0f update some magic values PaperMC/Paper@704cc38c Add some missing adapters PaperMC/Paper@536b9b4b fix some more tests PaperMC/Paper@985ebcfe Quick handling for ChickenVariant data component, remove dupe PaperMC/Paper@39eafa2a implement wolf sound variants PaperMC/Paper@c78f5631 make class node tests have a display name PaperMC/Paper@3be8a83c Allow picking items from inventory PaperMC/Paper@95beb8c0 register wolf sound variant --- gradle.properties | 4 ++-- .../java/org/bukkit/entity/Entity.java.patch | 2 +- .../java/org/bukkit/entity/Wolf.java.patch | 8 ++++---- .../features/0001-Ridables.patch | 14 +++++++------- .../minecraft/world/entity/Entity.java.patch | 18 +++++++++--------- .../paper-patches/features/0002-Ridables.patch | 6 +++--- .../craftbukkit/entity/CraftWolf.java.patch | 2 +- .../util/CraftMagicNumbers.java.patch | 2 +- 8 files changed, 28 insertions(+), 28 deletions(-) diff --git a/gradle.properties b/gradle.properties index dc3715d13..dea95b3a5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT -mcVersion = 1.21.5-rc2 -paperCommit = e50bb66a012d256305c9904330200fa2a634b723 +mcVersion = 1.21.5 +paperCommit = 95beb8c0bc785cf6bdd8ce9de097666cb572deb9 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch index 995a0fb9c..9f2167d47 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1193,4 +_,59 @@ +@@ -1214,4 +_,59 @@ */ void broadcastHurtAnimation(@NotNull java.util.Collection players); // Paper end - broadcast hurt animation diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch index f3ac2ef4a..772c05d9e 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch @@ -1,7 +1,7 @@ --- a/src/main/java/org/bukkit/entity/Wolf.java +++ b/src/main/java/org/bukkit/entity/Wolf.java -@@ -110,4 +_,20 @@ - return RegistryAccess.registryAccess().getRegistry(RegistryKey.WOLF_VARIANT).getOrThrow(NamespacedKey.minecraft(key)); +@@ -138,4 +_,20 @@ + return RegistryAccess.registryAccess().getRegistry(RegistryKey.WOLF_SOUND_VARIANT).getOrThrow(NamespacedKey.minecraft(key)); } } + @@ -11,13 +11,13 @@ + * + * @return whether the wolf is rabid + */ -+ public boolean isRabid(); ++ boolean isRabid(); + + /** + * Sets this wolf to be rabid or not + * + * @param rabid whether the wolf should be rabid + */ -+ public void setRabid(boolean rabid); ++ void setRabid(boolean rabid); + // Purpur end } diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 4632523eb..a8f280a14 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -62,7 +62,7 @@ index 6dc490bf9d032b5ed2d7bd458bffd3471f54ff06..cf26a10e4ccf0f28817ce53b3c5bf1df private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index ab2e6655e07a667d8ac413c85aaf3743a38db2e0..96b61192d9ab70857427cea65d4ddd0a4fe9b4aa 100644 +index 63e01ec7e4ab04bb7d389bff485dfedca344bfa2..84b1570d0d88f57f33ff8179f0a78d37b495a217 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2766,6 +2766,8 @@ public class ServerGamePacketListenerImpl @@ -75,10 +75,10 @@ index ab2e6655e07a667d8ac413c85aaf3743a38db2e0..96b61192d9ab70857427cea65d4ddd0a if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 4dd9ab13f97e14425d792ed23a81477016ddc56c..d4e989889ed21e3900062eed142f26a9bdaaa8d9 100644 +index 9f6326da63fc8e0c284d565314f0b448b622c910..488dc3e2e6d6095d416bd81078b3bcbcf92f7ab9 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -2861,6 +2861,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2855,6 +2855,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -92,7 +92,7 @@ index 4dd9ab13f97e14425d792ed23a81477016ddc56c..d4e989889ed21e3900062eed142f26a9 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -2902,6 +2909,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2896,6 +2903,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -107,7 +107,7 @@ index 4dd9ab13f97e14425d792ed23a81477016ddc56c..d4e989889ed21e3900062eed142f26a9 if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -4828,4 +4843,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4822,4 +4837,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -177,7 +177,7 @@ index bda521cca91f070139f5e9bdef6a50e1497f53ff..351f92e1627f465a9a292d4a5e5c256a protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 0caf3cc4c38426dd08d4ec78c00b51a3a880718a..a6739650bfee639925a63f345ac39c6e0c5c3209 100644 +index a186784d6b5bae844604a0ca7a2b81857c074a3c..7e2258f0232beae3461ad3ef75b70e9bf1f8b772 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -226,9 +226,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -2585,7 +2585,7 @@ index d34dcbbdeae41d23d6fb497e0e8da038580b6d01..6c252b8021dbeb2a9ffee8a3744ac016 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java -index e94f7b29befd2176fbbc784cd9d08c2d1cd4a94d..cff9bc3d8c9ef1935c25c4001dfd638855062573 100644 +index d25bd49c17478e73561e78bc66171d6e7bc187ba..127a57a477755101283ba7bbb4161a574692c252 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java @@ -187,9 +187,32 @@ public class Wolf extends TamableAnimal implements NeutralMob { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 92eed85bd..8e073e1e8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -77,7 +77,7 @@ } public boolean causeFallDamage(double fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -1747,7 +_,7 @@ +@@ -1741,7 +_,7 @@ return this.isInWater() || flag; } @@ -86,7 +86,7 @@ if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { this.wasTouchingWater = false; } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) { -@@ -2369,6 +_,13 @@ +@@ -2363,6 +_,13 @@ compound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -100,7 +100,7 @@ return compound; } catch (Throwable var8) { CrashReport crashReport = CrashReport.forThrowable(var8, "Saving entity NBT"); -@@ -2486,6 +_,13 @@ +@@ -2480,6 +_,13 @@ freezeLocked = compound.getBooleanOr("Paper.FreezeLock", false); } // Paper end @@ -114,7 +114,7 @@ } catch (Throwable var8) { CrashReport crashReport = CrashReport.forThrowable(var8, "Loading entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); -@@ -2625,6 +_,7 @@ +@@ -2619,6 +_,7 @@ if (this.isAlive() && this instanceof Leashable leashable) { if (leashable.getLeashHolder() == player) { if (!this.level().isClientSide()) { @@ -122,7 +122,7 @@ // CraftBukkit start - fire PlayerUnleashEntityEvent // Paper start - Expand EntityUnleashEvent org.bukkit.event.player.PlayerUnleashEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials()); -@@ -2941,15 +_,18 @@ +@@ -2935,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } @@ -142,7 +142,7 @@ } } } -@@ -3154,7 +_,7 @@ +@@ -3148,7 +_,7 @@ } public int getMaxAirSupply() { @@ -151,7 +151,7 @@ } public int getAirSupply() { -@@ -3682,7 +_,7 @@ +@@ -3676,7 +_,7 @@ // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -160,7 +160,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4217,6 +_,12 @@ +@@ -4211,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -173,7 +173,7 @@ public boolean updateFluidHeightAndDoFluidPushing(TagKey fluidTag, double motionScale) { if (this.touchingUnloadedChunk()) { return false; -@@ -4557,7 +_,7 @@ +@@ -4551,7 +_,7 @@ } public float maxUpStep() { diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index 23737c216..6cba69f5f 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 227a2cdc6dbca17d4771aff3a0f62c424c4b06c9..65c4c0690874c29814098448b6cc6077a1e8c566 100644 +index 1a4f42c9e6012a6a074c9d5451d8dc11530a5c5b..67b9963afd91af84459d439697f6230fd67722b4 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1295,4 +1295,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1275,4 +1275,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { ((CraftPlayer) player).sendHurtAnimation(0, this); } } @@ -37,7 +37,7 @@ index 227a2cdc6dbca17d4771aff3a0f62c424c4b06c9..65c4c0690874c29814098448b6cc6077 + // Purpur end - Ridables } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 797d731f97c3457d504be5d81e233e3d63f993f6..6f112d700a368a64acca8d702d03ef93942da963 100644 +index a7e3afe04ffbb0fd5fa5fcf7cd15efd7cea1c4e0..9c88a5b6b054636a9f326d0253f65496cf3babc3 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -514,6 +514,15 @@ public class CraftEventFactory { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch index a85fb1dbd..d05c7972a 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -@@ -145,4 +_,15 @@ +@@ -227,4 +_,15 @@ return this.getKey().hashCode(); } } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch index 32ef5cc86..2caad1ea9 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -491,7 +_,7 @@ +@@ -481,7 +_,7 @@ @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { From f1e732aa3a02167f8eef3ba5c440000453e175d1 Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 25 Mar 2025 22:22:03 -0700 Subject: [PATCH 051/289] forgot this one --- purpur-server/build.gradle.kts.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index 5e6fea4b4..eaed992ef 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -15,7 +15,7 @@ + activeFork = purpur + spigot { - buildDataRef = "3edaf46ec1eed4115ce1b18d2846cded42577e42" + buildDataRef = "702e1a0a5072b2c4082371d5228cb30525687efc" packageVersion = "v1_21_R3" // also needs to be updated in MappingEnvironment @@ -104,7 +_,21 @@ } From 73e0e17b6d8a16e957e956a79a5f5e7259961819 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 27 Mar 2025 16:27:08 -0700 Subject: [PATCH 052/289] make it compile \o/ --- .../features/0001-Ridables.patch | 28 +++++++-------- .../0009-Implement-elytra-settings.patch | 12 +++---- ...iefing-bypass-to-everything-affected.patch | 8 ++--- ...turally-aggressive-to-players-chance.patch | 34 +++++++++++-------- .../0021-Mobs-always-drop-experience.patch | 18 +++++----- .../server/level/ServerLevel.java.patch | 2 +- .../server/level/ServerPlayer.java.patch | 2 +- .../minecraft/world/entity/Entity.java.patch | 4 +-- .../world/entity/LivingEntity.java.patch | 2 +- .../world/entity/animal/Bee.java.patch | 6 ++-- .../world/entity/animal/Pig.java.patch | 2 +- .../world/entity/animal/wolf/Wolf.java.patch | 8 ++--- .../world/entity/monster/Skeleton.java.patch | 2 +- .../world/entity/monster/Strider.java.patch | 2 +- .../world/level/ServerExplosion.java.patch | 4 +-- .../block/EnchantingTableBlock.java.patch | 8 ++--- .../world/level/block/FarmBlock.java.patch | 7 ++-- .../world/level/block/SpawnerBlock.java.patch | 6 ++-- .../level/block/TurtleEggBlock.java.patch | 7 ++-- ....java.patch => VegetationBlock.java.patch} | 10 +++--- .../level/block/entity/BlockEntity.java.patch | 29 ++++++---------- .../block/entity/SignBlockEntity.java.patch | 8 ++--- .../features/0002-Ridables.patch | 8 ++--- .../craftbukkit/CraftOfflinePlayer.java.patch | 34 +++++++------------ .../bukkit/craftbukkit/CraftWorld.java.patch | 4 +-- .../craftbukkit/entity/CraftPlayer.java.patch | 2 +- .../purpur/entity/PurpurStoredBee.java | 13 ++++--- .../entity/projectile/PhantomFlames.java | 2 +- .../org/purpurmc/purpur/item/SpawnerItem.java | 9 ++--- 29 files changed, 134 insertions(+), 147 deletions(-) rename purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/{BushBlock.java.patch => VegetationBlock.java.patch} (78%) diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index a8f280a14..69c4765d1 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -30,7 +30,7 @@ index f34bc75f324454bf48f0ebf79111706bb027a54b..6ad266592c16bdeccfb689fb2ef2ee37 /* Drop global time updates if (this.tickCount % 20 == 0) { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 1ee82020ba335946a54db380d2c3f8d71ce2371b..200c33de28100e42b91dee40e7a531e38d459c7d 100644 +index fae2e1af2ea59b82b552bfc33c853e0e33ec90bc..f681d0766a3fec9e05396fe82111e9e99f751823 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -212,6 +212,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -42,7 +42,7 @@ index 1ee82020ba335946a54db380d2c3f8d71ce2371b..200c33de28100e42b91dee40e7a531e3 @Override public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 6dc490bf9d032b5ed2d7bd458bffd3471f54ff06..cf26a10e4ccf0f28817ce53b3c5bf1df02259273 100644 +index 839975cf328268e1f476f5c59e3323a395929395..bba6b5234b668827f90991e4885b5e19c2f97728 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -764,6 +764,15 @@ public class ServerPlayer extends Player { @@ -75,7 +75,7 @@ index 63e01ec7e4ab04bb7d389bff485dfedca344bfa2..84b1570d0d88f57f33ff8179f0a78d37 if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 9f6326da63fc8e0c284d565314f0b448b622c910..488dc3e2e6d6095d416bd81078b3bcbcf92f7ab9 100644 +index 7b48f633223cc5e760c5c80d40424e04d791c43a..fc8fbfa5709895456f5aa0c480acedb8707b2ff5 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -2855,6 +2855,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -130,7 +130,7 @@ index 9f6326da63fc8e0c284d565314f0b448b622c910..488dc3e2e6d6095d416bd81078b3bcbc + + public void onMount(Player rider) { + if (this instanceof Mob) { -+ ((Mob) this).setTarget(null, null, false); ++ ((Mob) this).setTarget(null, null); + ((Mob) this).getNavigation().stop(); + } + rider.setJumping(false); // fixes jump on mount @@ -177,7 +177,7 @@ index bda521cca91f070139f5e9bdef6a50e1497f53ff..351f92e1627f465a9a292d4a5e5c256a protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index a186784d6b5bae844604a0ca7a2b81857c074a3c..7e2258f0232beae3461ad3ef75b70e9bf1f8b772 100644 +index 4d65d88c59a8536d27ec61c65373ab21fa534b3b..e5f296bf3671afd82ab76493646938783b53eef6 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -226,9 +226,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -235,9 +235,9 @@ index a186784d6b5bae844604a0ca7a2b81857c074a3c..7e2258f0232beae3461ad3ef75b70e9b + Location to = new Location(level().getWorld(), getX(), getY(), getZ(), this.getYRot(), this.getXRot()); + org.purpurmc.purpur.event.entity.RidableMoveEvent event = new org.purpurmc.purpur.event.entity.RidableMoveEvent((org.bukkit.entity.Mob) getBukkitLivingEntity(), (org.bukkit.entity.Player) getRider().getBukkitEntity(), from, to.clone()); + if (!event.callEvent()) { -+ absMoveTo(from.getX(), from.getY(), from.getZ(), from.getYaw(), from.getPitch()); ++ this.absSnapTo(from.getX(), from.getY(), from.getZ(), from.getYaw(), from.getPitch()); + } else if (!to.equals(event.getTo())) { -+ absMoveTo(to.getX(), to.getY(), to.getZ(), to.getYaw(), to.getPitch()); ++ this.absSnapTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); + } + } + } @@ -596,7 +596,7 @@ index 363582056339f64dbe7e686b61451c095c538c00..2cf95769ec3a1662443ea31e1bc2ba01 double d = this.wantedX - this.fish.getX(); double d1 = this.wantedY - this.fish.getY(); diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index a6fd3a16e7a9e34ad582601f9ef22d98346fc31c..e55507fa09001b431519ef9c76bf444d7df3f7ea 100644 +index 585131365c40136cf8a8a715b077982091ee38d5..65ee07e09bb9bafb60abeec4916fdbb065fc26eb 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -149,6 +149,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -1392,7 +1392,7 @@ index ca661c215d2eb719392a30c7b917bd622524c4dc..573efbc5f5f4ad0be30868c7faa058e6 this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0, 5.0F, 1.0F)); diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index 4a1eee02daf8d4161d21d28baf97b0d16a9b52ae..9e15bf55aa3986a227452fb1a5ebc4315f6f4d6c 100644 +index 027d47b89d306bf6bc3d5457a163041f6aa7ab49..74d4be1761b9c9b45bf454f187d4454d9ee6a37f 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java @@ -65,9 +65,27 @@ public class Pig extends Animal implements ItemSteerable { @@ -2585,7 +2585,7 @@ index d34dcbbdeae41d23d6fb497e0e8da038580b6d01..6c252b8021dbeb2a9ffee8a3744ac016 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java -index d25bd49c17478e73561e78bc66171d6e7bc187ba..127a57a477755101283ba7bbb4161a574692c252 100644 +index 0487c463806509b1dd93dcfee3b518c95b0bdb19..7cac99a33a398528bbc55f90cc57a9848e56ff01 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java @@ -187,9 +187,32 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -4121,7 +4121,7 @@ index 4e34833ea5c71b817c9f42a58320fe100981ec93..19dcc657fd2a995638d5e23c2b043d01 this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java -index d1853db754065a79a04e1c4cfa2b54c10b041157..9a197c2be40e0a69f4a68ff045c2395802f0a5f3 100644 +index 1f35105f6ddd33fc9558d19590a5696479d2de83..5394a5c302c4bd9417dfb304848747fcd2180f07 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java @@ -26,6 +26,23 @@ public class Skeleton extends AbstractSkeleton { @@ -4340,7 +4340,7 @@ index f3de370ee4bafc2cca033293d0d8e5c9c2a6737b..4a7dbd1e4d927240433882a95822e9ed EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java -index 9d27f55b1a3aa3b51a3b5079d5dd199eefa7d759..bb46a6ec3ad6a7d0943bf61028d5f9abf76bbeb7 100644 +index 4b9e60d930bc3a4bfe9aad2e81391e57cfc45d40..ddd3a0d629f720b7acacf01bf2a7db53ee28724e 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java @@ -92,6 +92,23 @@ public class Strider extends Animal implements ItemSteerable { @@ -4385,7 +4385,7 @@ index 9d27f55b1a3aa3b51a3b5079d5dd199eefa7d759..bb46a6ec3ad6a7d0943bf61028d5f9ab if (isFood && !this.isSilent()) { this.level() diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index bc74bdc3e13f1d51ed6d31470f3ac6f9855778c9..129c712f767fbbdcc7d0df83f838194102efcd15 100644 +index bc74bdc3e13f1d51ed6d31470f3ac6f9855778c9..720060d422a6b77020da478b514e9581d8d7e4eb 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -58,6 +58,50 @@ public class Vex extends Monster implements TraceableEntity { @@ -4431,7 +4431,7 @@ index bc74bdc3e13f1d51ed6d31470f3ac6f9855778c9..129c712f767fbbdcc7d0df83f8381941 + } + + @Override -+ public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { ++ public boolean causeFallDamage(double fallDistance, float damageMultiplier, DamageSource damageSource) { + return false; // no fall damage please + } + // Purpur end - Ridables diff --git a/purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch b/purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch index f5939a971..4a9a7554a 100644 --- a/purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch +++ b/purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement elytra settings diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 5208518ad9fe86e25b07aeffa9633407aa6f2f1c..7b635a3f047a7f645322bdd8ce5bfa8350d7a739 100644 +index af03e75f445bff6dfe56f89fb422b5662a21c962..3ec3e89b0b53ebde5e1eaa49e28b6bacfe781085 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -3644,7 +3644,18 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -29,7 +29,7 @@ index 5208518ad9fe86e25b07aeffa9633407aa6f2f1c..7b635a3f047a7f645322bdd8ce5bfa83 this.gameEvent(GameEvent.ELYTRA_GLIDE); diff --git a/net/minecraft/world/item/FireworkRocketItem.java b/net/minecraft/world/item/FireworkRocketItem.java -index 18d63d2da49451a2d5e1da7bf0c00e05e2f192bc..ab35b0db023f48854476497d0dbdb0dffbeddb43 100644 +index 18d63d2da49451a2d5e1da7bf0c00e05e2f192bc..1f081e098ce3bec61b7f374e9b737838783657bb 100644 --- a/net/minecraft/world/item/FireworkRocketItem.java +++ b/net/minecraft/world/item/FireworkRocketItem.java @@ -62,6 +62,19 @@ public class FireworkRocketItem extends Item implements ProjectileItem { @@ -39,7 +39,7 @@ index 18d63d2da49451a2d5e1da7bf0c00e05e2f192bc..ab35b0db023f48854476497d0dbdb0df + + // Purpur start - Implement elytra settings + if (level.purpurConfig.elytraDamagePerFireworkBoost > 0) { -+ List list = net.minecraft.world.entity.EquipmentSlot.VALUES.stream().filter((enumitemslot) -> net.minecraft.world.entity.LivingEntity.canGlideUsing(player.getItemBySlot(enumitemslot), enumitemslot)).toList(); ++ java.util.List list = net.minecraft.world.entity.EquipmentSlot.VALUES.stream().filter((enumitemslot) -> net.minecraft.world.entity.LivingEntity.canGlideUsing(player.getItemBySlot(enumitemslot), enumitemslot)).toList(); + net.minecraft.world.entity.EquipmentSlot enumitemslot = net.minecraft.Util.getRandom(list, player.random); + + ItemStack glideItem = player.getItemBySlot(enumitemslot); @@ -72,7 +72,7 @@ index 8c9f64140f016edfadeeb75463655cc2f3fafc0c..84e7f1b119ccfdabf48ccac51278e197 onBreak.accept(item); } diff --git a/net/minecraft/world/item/TridentItem.java b/net/minecraft/world/item/TridentItem.java -index 5ed862c4eeb9995b25f6a0ee1b57b2fdafb92551..59b1a455895d2842e45d916dcf53dead32e1c72a 100644 +index 5ed862c4eeb9995b25f6a0ee1b57b2fdafb92551..34bacb05324fd82cbf8b8836998e2619ede3bcb2 100644 --- a/net/minecraft/world/item/TridentItem.java +++ b/net/minecraft/world/item/TridentItem.java @@ -127,6 +127,18 @@ public class TridentItem extends Item implements ProjectileItem { @@ -81,9 +81,9 @@ index 5ed862c4eeb9995b25f6a0ee1b57b2fdafb92551..59b1a455895d2842e45d916dcf53dead org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerRiptideEvent(player, stack, f, f1, f2); // CraftBukkit + + // Purpur start - Implement elytra settings -+ List list = EquipmentSlot.VALUES.stream().filter((enumitemslot) -> LivingEntity.canGlideUsing(entity.getItemBySlot(enumitemslot), enumitemslot)).toList(); ++ List list = net.minecraft.world.entity.EquipmentSlot.VALUES.stream().filter((enumitemslot) -> LivingEntity.canGlideUsing(entity.getItemBySlot(enumitemslot), enumitemslot)).toList(); + if (!list.isEmpty()) { -+ EquipmentSlot enumitemslot = net.minecraft.Util.getRandom(list, entity.random); ++ net.minecraft.world.entity.EquipmentSlot enumitemslot = net.minecraft.Util.getRandom(list, entity.random); + ItemStack glideItem = entity.getItemBySlot(enumitemslot); + if (glideItem.has(net.minecraft.core.component.DataComponents.GLIDER) && level.purpurConfig.elytraDamagePerTridentBoost > 0) { + glideItem.hurtAndBreak(level.purpurConfig.elytraDamagePerTridentBoost, entity, enumitemslot); diff --git a/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch b/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch index 6f765ea9a..8bd26754f 100644 --- a/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 7b635a3f047a7f645322bdd8ce5bfa8350d7a739..2a7434872472b950fe09bfe8f5f334d9964b51d6 100644 +index 3ec3e89b0b53ebde5e1eaa49e28b6bacfe781085..36636e35cfb3751d448ee330b51e5ab7c44c6014 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -1905,7 +1905,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -320,7 +320,7 @@ index b370b955ac8636275dfada4f38a7ca10297f7dac..275eabf64977cdf262de55124c3e5f88 } diff --git a/net/minecraft/world/level/block/FarmBlock.java b/net/minecraft/world/level/block/FarmBlock.java -index ba3b8b1e0c646c09e0b3566d632f2735c1ed9051..35c9a20116b971d184181d0dcb1e52c84f480383 100644 +index 9883e6d1a1b76155c8ba1817fda6615b4742e18e..c816bd47577cbc898b10d0cfd9c40404429ef929 100644 --- a/net/minecraft/world/level/block/FarmBlock.java +++ b/net/minecraft/world/level/block/FarmBlock.java @@ -114,7 +114,7 @@ public class FarmBlock extends Block { @@ -346,10 +346,10 @@ index 248ac9bc820a96fc7653471308b18834fc735a77..5c6ebde129289f2f7feb44dc1083aa03 } // CraftBukkit end diff --git a/net/minecraft/world/level/block/TurtleEggBlock.java b/net/minecraft/world/level/block/TurtleEggBlock.java -index 31851c5404ba3e60c8e8063c6bd0fa94acac6375..4cafcf185dcc0f6c1a380c40d3b654055b492a9a 100644 +index a23626dbfacf98ef1bc7918ca35406fa71307bed..bb3bba0d0bf89e82b929fe95247f50ccba964c02 100644 --- a/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -213,7 +213,7 @@ public class TurtleEggBlock extends Block { +@@ -214,7 +214,7 @@ public class TurtleEggBlock extends Block { // Purpur end - Option to disable turtle egg trampling with feather falling if (entity instanceof Player) return true; diff --git a/purpur-server/minecraft-patches/features/0020-Cows-naturally-aggressive-to-players-chance.patch b/purpur-server/minecraft-patches/features/0020-Cows-naturally-aggressive-to-players-chance.patch index 44ab17c07..80aac9d45 100644 --- a/purpur-server/minecraft-patches/features/0020-Cows-naturally-aggressive-to-players-chance.patch +++ b/purpur-server/minecraft-patches/features/0020-Cows-naturally-aggressive-to-players-chance.patch @@ -18,7 +18,7 @@ index 46022a0aabc9c319deeb75913d356eeb74f1a12c..9952eed6a8ac31c757d5c27e043b85d7 .put(EntityType.OCELOT, Ocelot.createAttributes().build()) .put(EntityType.PANDA, Panda.createAttributes().build()) diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index 4bc6d0eb56b4674e2ac0f13010521314a95e0096..34700b4e599efa6fb9ea8c1d0da26bd7fe8fb9eb 100644 +index 4bc6d0eb56b4674e2ac0f13010521314a95e0096..731f27cf8687ffa95c0df5601a4465b5174fe248 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java @@ -22,6 +22,8 @@ import net.minecraft.world.level.Level; @@ -30,26 +30,22 @@ index 4bc6d0eb56b4674e2ac0f13010521314a95e0096..34700b4e599efa6fb9ea8c1d0da26bd7 private static final EntityDataAccessor> DATA_VARIANT_ID = SynchedEntityData.defineId(Cow.class, EntityDataSerializers.COW_VARIANT); public Cow(EntityType entityType, Level level) { -@@ -50,6 +52,7 @@ public class Cow extends AbstractCow { +@@ -48,8 +50,9 @@ public class Cow extends AbstractCow { + // Purpur start - Configurable entity base attributes + @Override public void initAttributes() { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.cowMaxHealth); - this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.cowScale); -+ this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(this.level().purpurConfig.cowNaturallyAggressiveToPlayersDamage); // Purpur - Cows naturally aggressive to players chance +- this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.cowMaxHealth); +- this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.cowScale); ++ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.cowMaxHealth); ++ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SCALE).setBaseValue(this.level().purpurConfig.cowScale); ++ this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.ATTACK_DAMAGE).setBaseValue(this.level().purpurConfig.cowNaturallyAggressiveToPlayersDamage); // Purpur - Cows naturally aggressive to players chance } // Purpur end - Configurable entity base attributes -@@ -67,6 +70,21 @@ public class Cow extends AbstractCow { +@@ -67,6 +70,13 @@ public class Cow extends AbstractCow { } // Purpur end - Toggle for water sensitive mob damage -+ // Purpur start - Cows naturally aggressive to players chance -+ @Override -+ public net.minecraft.world.entity.SpawnGroupData finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor world, net.minecraft.world.DifficultyInstance difficulty, net.minecraft.world.entity.EntitySpawnReason 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); -+ } -+ // Purpur end - Cows naturally aggressive to players chance -+ + @Override + protected void registerGoals() { + super.registerGoals(); @@ -60,7 +56,7 @@ index 4bc6d0eb56b4674e2ac0f13010521314a95e0096..34700b4e599efa6fb9ea8c1d0da26bd7 @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); -@@ -79,6 +97,12 @@ public class Cow extends AbstractCow { +@@ -79,6 +89,12 @@ public class Cow extends AbstractCow { VariantUtils.writeVariant(compound, this.getVariant()); } @@ -73,3 +69,11 @@ index 4bc6d0eb56b4674e2ac0f13010521314a95e0096..34700b4e599efa6fb9ea8c1d0da26bd7 @Override public void readAdditionalSaveData(CompoundTag compound) { super.readAdditionalSaveData(compound); +@@ -100,6 +116,7 @@ public class Cow extends AbstractCow { + public SpawnGroupData finalizeSpawn( + ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData + ) { ++ this.isNaturallyAggressiveToPlayers = level.getLevel().purpurConfig.cowNaturallyAggressiveToPlayersChance > 0.0D && random.nextDouble() <= level.getLevel().purpurConfig.cowNaturallyAggressiveToPlayersChance; // Purpur - Cows naturally aggressive to players chance + CowVariants.selectVariantToSpawn(this.random, this.registryAccess(), SpawnContext.create(level, this.blockPosition())).ifPresent(this::setVariant); + return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData); + } diff --git a/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch index 87182c064..cae877335 100644 --- a/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch +++ b/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch @@ -41,7 +41,7 @@ index 4d44b35ee34eb256b9aff9d74b1cb9ae1ac9503f..46aaba94e7b6bde26ad3b61fcf5e0aa0 public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index 8da974e98f2207d76e8962eda54c75d0356ecc6f..531d18c5a47eb4676c3dd9b5353f8f9d49b17b54 100644 +index 9a9b0d1ca7b30916e1ac3938924ced8d77dafdaf..e9dfff7e3726cd2229f89bb39fa1ca4815d99a6d 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -494,6 +494,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -113,12 +113,12 @@ index 6128ed595cb97cc11c1a0e1e1673b3af8e428fb8..7e08573cba6efcd78fcce37bccc2923f public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index 34700b4e599efa6fb9ea8c1d0da26bd7fe8fb9eb..4a68181d200c26485f290216f9e52b79965215eb 100644 +index 731f27cf8687ffa95c0df5601a4465b5174fe248..6b504c2fdde020e086b0d01139cb56d65b7f9ad1 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java -@@ -78,6 +78,13 @@ public class Cow extends AbstractCow { +@@ -70,6 +70,13 @@ public class Cow extends AbstractCow { } - // Purpur end - Cows naturally aggressive to players chance + // Purpur end - Toggle for water sensitive mob damage + // Purpur start - Mobs always drop experience + @Override @@ -257,7 +257,7 @@ index c1d4bcbc3bad5f2fcaecd4007db7318a07a63324..1b8350a09a9f2a708c8cd1b066982891 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index 4618ea2c4d815c07cd94b7bd279167836a116aa7..ca1657a468469c51cf8dc75bf295b78ac9ce6518 100644 +index c2718006f6a47dda0655818181881bcdcfef34dc..5bc370d45fc6e0a37cc77ac1b36e0caad959741c 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java @@ -104,6 +104,13 @@ public class Pig extends Animal implements ItemSteerable { @@ -599,7 +599,7 @@ index 1ecfda9a5222d7c175108edbbff552ea036e0321..c53ab665a0c87d342adbe395c87e15a3 protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java -index 50fe10588a5cd7b263993db9a52309f332d47a3b..31a08b898cc5ea7d38ddbc045dd911ff18d8c56f 100644 +index 243e848a6f4eaa2a72f02a1f056f20d9de23058f..936ee9e80239ad965be75ceeb38d5248243e9c4e 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java @@ -231,6 +231,13 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -977,7 +977,7 @@ index af33bd8c472f7e7bfdab52558bac379166ff2253..a6d6cb3e122488328ff980ed5902caff protected void registerGoals() { this.friendsGoal = new Silverfish.SilverfishWakeUpFriendsGoal(this); diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java -index 4b0a27dc94313b021e56bef61671f95a31074dc7..724432786e280d41479b06d30d4be4fa91dabb49 100644 +index fbf8818e0fd80705648f038647b718ec2a2cd1b6..48cbc3cb983da08cfec78828b15f148459a22b44 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java @@ -57,6 +57,13 @@ public class Skeleton extends AbstractSkeleton { @@ -1049,7 +1049,7 @@ index e4ae604d4d0756edc9418634d9958338997c8203..e69a5c552d2f57bc373cb2b89690a7dd EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java -index 7b19d64d6b1d61922a2368e38f2b31a42ea29a1a..69b3cd61d49e41ab5fdb861043b012b1f60f8995 100644 +index 533801988cb4f8a916ef002a179990ca913b2f32..fe31c4a45afd61be8b74efe9d0858ccd0aced075 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java @@ -124,6 +124,13 @@ public class Strider extends Animal implements ItemSteerable { @@ -1067,7 +1067,7 @@ index 7b19d64d6b1d61922a2368e38f2b31a42ea29a1a..69b3cd61d49e41ab5fdb861043b012b1 EntityType entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index bc8727a4ae3f1f30f4de5ab81a79c15a8153e34a..96069c066f6f8fd822e05b264741205ce1077b03 100644 +index 0808520f39d5ce96baad25180ead7a69922950f5..488e0605e9769d52faffecbc86c28c779d0ff25b 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -117,6 +117,13 @@ public class Vex extends Monster implements TraceableEntity { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch index ce52c7d37..3cbe73dea 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch @@ -57,7 +57,7 @@ Profiler.get().pop(); if (this.serverLevelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { + // Purpur start - Configurable daylight cycle -+ int incrementTicks = isDay() ? this.purpurConfig.daytimeTicks : this.purpurConfig.nighttimeTicks; ++ int incrementTicks = isBrightOutside() ? this.purpurConfig.daytimeTicks : this.purpurConfig.nighttimeTicks; + if (incrementTicks != 12000) { + this.preciseTime += 12000 / (double) incrementTicks; + this.setDayTime(this.preciseTime); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index 43e16e495..b19f8ca23 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -58,7 +58,7 @@ serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end -+ this.portalPos = io.papermc.paper.util.MCUtil.toBlockPosition(exit); // Purpur - Fix stuck in portals ++ this.portalPos = org.bukkit.craftbukkit.util.CraftLocation.toBlockPosition(exit); // Purpur - Fix stuck in portals this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 8e073e1e8..6d8ad3ef9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -64,7 +64,7 @@ && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage -+ if (this.level.purpurConfig.teleportOnNetherCeilingDamage && this.level.getWorld().getEnvironment() == org.bukkit.World.Environment.NETHER && this instanceof ServerPlayer player) player.teleport(io.papermc.paper.util.MCUtil.toLocation(this.level, this.level.getSharedSpawnPos())); else // Purpur - Add option to teleport to spawn on nether ceiling damage ++ if (this.level.purpurConfig.teleportOnNetherCeilingDamage && this.level.getWorld().getEnvironment() == org.bukkit.World.Environment.NETHER && this instanceof ServerPlayer player) player.teleport(org.bukkit.craftbukkit.util.CraftLocation.toBukkit(this.level.getSharedSpawnPos(), this.level)); else // Purpur - Add option to teleport to spawn on nether ceiling damage this.onBelowWorld(); } } @@ -107,7 +107,7 @@ + + // Purpur start - Fire immune API + if (compound.contains("Purpur.FireImmune")) { -+ immuneToFire = compound.getBoolean("Purpur.FireImmune"); ++ immuneToFire = compound.getBoolean("Purpur.FireImmune").orElse(null); + } + // Purpur end - Fire immune API + diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch index 6a8ccadb8..54ea2c626 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch @@ -6,7 +6,7 @@ if (damagePerBlock > 0.0) { + // Purpur start - Add option to teleport to spawn if outside world border + if (this.level().purpurConfig.teleportIfOutsideBorder && this instanceof ServerPlayer serverPlayer) { -+ serverPlayer.teleport(io.papermc.paper.util.MCUtil.toLocation(this.level(), this.level().getSharedSpawnPos())); ++ serverPlayer.teleport(org.bukkit.craftbukkit.util.CraftLocation.toBukkit(this.level().getSharedSpawnPos(), this.level())); + return; + } + // Purpur end - Add option to teleport to spawn if outside world border diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch index 0dbf3c5dc..dc2f1ba02 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch @@ -39,7 +39,7 @@ Bee.this.savedFlowerPos = optional.get(); Bee.this.navigation .moveTo(Bee.this.savedFlowerPos.getX() + 0.5, Bee.this.savedFlowerPos.getY() + 0.5, Bee.this.savedFlowerPos.getZ() + 0.5, 1.2F); -+ new org.purpurmc.purpur.event.entity.BeeFoundFlowerEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), io.papermc.paper.util.MCUtil.toLocation(Bee.this.level(), Bee.this.savedFlowerPos)).callEvent(); // Purpur - Bee API ++ new org.purpurmc.purpur.event.entity.BeeFoundFlowerEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), org.bukkit.craftbukkit.util.CraftLocation.toBukkit(Bee.this.savedFlowerPos, Bee.this.level())).callEvent(); // Purpur - Bee API return true; } else { Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60); @@ -47,7 +47,7 @@ this.pollinating = false; Bee.this.navigation.stop(); Bee.this.remainingCooldownBeforeLocatingNewFlower = 200; -+ new org.purpurmc.purpur.event.entity.BeeStopPollinatingEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), Bee.this.savedFlowerPos == null ? null : io.papermc.paper.util.MCUtil.toLocation(Bee.this.level(), Bee.this.savedFlowerPos), Bee.this.hasNectar()).callEvent(); // Purpur - Bee API ++ new org.purpurmc.purpur.event.entity.BeeStopPollinatingEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), Bee.this.savedFlowerPos == null ? null : org.bukkit.craftbukkit.util.CraftLocation.toBukkit(Bee.this.savedFlowerPos, Bee.this.level()), Bee.this.hasNectar()).callEvent(); // Purpur - Bee API } @Override @@ -55,7 +55,7 @@ this.setWantedPos(); } -+ if (this.successfulPollinatingTicks == 0) new org.purpurmc.purpur.event.entity.BeeStartedPollinatingEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), io.papermc.paper.util.MCUtil.toLocation(Bee.this.level(), Bee.this.savedFlowerPos)).callEvent(); // Purpur - Bee API ++ if (this.successfulPollinatingTicks == 0) new org.purpurmc.purpur.event.entity.BeeStartedPollinatingEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), org.bukkit.craftbukkit.util.CraftLocation.toBukkit(Bee.this.savedFlowerPos, Bee.this.level())).callEvent(); // Purpur - Bee API this.successfulPollinatingTicks++; if (Bee.this.random.nextFloat() < 0.05F && this.successfulPollinatingTicks > this.lastSoundPlayedTick + 60) { this.lastSoundPlayedTick = this.successfulPollinatingTicks; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch index 7375398f0..c1deac0d5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch @@ -6,7 +6,7 @@ boolean isFood = this.isFood(player.getItemInHand(hand)); + // Purpur start - Pigs give saddle back + if (level().purpurConfig.pigGiveSaddleBack && player.isSecondaryUseActive() && !isFood && isSaddled() && !isVehicle()) { -+ this.steering.setSaddle(false); ++ this.setItemSlot(EquipmentSlot.SADDLE, ItemStack.EMPTY); + if (!player.getAbilities().instabuild) { + ItemStack saddle = new ItemStack(Items.SADDLE); + if (!player.getInventory().add(saddle)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch index 491dc4363..004641e75 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch @@ -56,14 +56,14 @@ + this.targetSelector.removeGoal(PATHFINDER_VANILLA); + this.targetSelector.removeGoal(PATHFINDER_RABID); + if (this.isRabid) { -+ setOwnerUUID(null); ++ this.setOwnerReference(null); + setTame(false, true); + this.targetSelector.addGoal(5, PATHFINDER_RABID); -+ if (modifyEffects) this.addEffect(new net.minecraft.world.effect.MobEffectInstance(net.minecraft.world.effect.MobEffects.CONFUSION, 1200)); ++ if (modifyEffects) this.addEffect(new net.minecraft.world.effect.MobEffectInstance(net.minecraft.world.effect.MobEffects.NAUSEA, 1200)); + } else { + this.targetSelector.addGoal(5, PATHFINDER_VANILLA); + this.stopBeingAngry(); -+ if (modifyEffects) this.removeEffect(net.minecraft.world.effect.MobEffects.CONFUSION); ++ if (modifyEffects) this.removeEffect(net.minecraft.world.effect.MobEffects.NAUSEA); + } + } + // Purpur end - Configurable chance for wolves to spawn rabid @@ -131,7 +131,7 @@ if (this.isAlive()) { + // Purpur start - Configurable chance for wolves to spawn rabid + if (this.age % 300 == 0 && this.isRabid()) { -+ this.addEffect(new net.minecraft.world.effect.MobEffectInstance(net.minecraft.world.effect.MobEffects.CONFUSION, 400)); ++ this.addEffect(new net.minecraft.world.effect.MobEffectInstance(net.minecraft.world.effect.MobEffects.NAUSEA, 400)); + } + // Purpur end - Configurable chance for wolves to spawn rabid this.interestedAngleO = this.interestedAngle; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch index aaa94033d..5530c24e5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch @@ -32,7 +32,7 @@ + return net.minecraft.world.InteractionResult.PASS; + } + -+ skeleton.moveTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); ++ skeleton.snapTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); + skeleton.setHealth(this.getHealth()); + skeleton.setAggressive(this.isAggressive()); + skeleton.copyPosition(this); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch index 5ae8300da..9d99390b1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch @@ -6,7 +6,7 @@ boolean isFood = this.isFood(player.getItemInHand(hand)); + // Purpur start + if (level().purpurConfig.striderGiveSaddleBack && player.isSecondaryUseActive() && !isFood && isSaddled() && !isVehicle()) { -+ this.steering.setSaddle(false); ++ this.setItemSlot(EquipmentSlot.SADDLE, ItemStack.EMPTY); + if (!player.getAbilities().instabuild) { + ItemStack saddle = new ItemStack(Items.SADDLE); + if (!player.getInventory().add(saddle)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch index 21310800e..f4e8e281f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch @@ -21,7 +21,7 @@ + // Purpur start - add PreExplodeEvents + if (this.source != null) { + Location location = new Location(this.level.getWorld(), this.center.x, this.center.y, this.center.z); -+ if(!new org.purpurmc.purpur.event.entity.PreEntityExplodeEvent(this.source.getBukkitEntity(), location, this.blockInteraction == Explosion.BlockInteraction.DESTROY_WITH_DECAY ? 1.0F / this.radius : 1.0F, org.bukkit.craftbukkit.CraftExplosionResult.toBukkit(getBlockInteraction())).callEvent()) { ++ if(!new org.purpurmc.purpur.event.entity.PreEntityExplodeEvent(this.source.getBukkitEntity(), location, this.blockInteraction == Explosion.BlockInteraction.DESTROY_WITH_DECAY ? 1.0F / this.radius : 1.0F, org.bukkit.craftbukkit.CraftExplosionResult.toExplosionResult(getBlockInteraction())).callEvent()) { + this.wasCanceled = true; + return; + } @@ -29,7 +29,7 @@ + Location location = new Location(this.level.getWorld(), this.center.x, this.center.y, this.center.z); + org.bukkit.block.Block block = location.getBlock(); + org.bukkit.block.BlockState blockState = (this.damageSource.causingBlockSnapshot() != null) ? this.damageSource.causingBlockSnapshot() : 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, org.bukkit.craftbukkit.CraftExplosionResult.toBukkit(getBlockInteraction())).callEvent()) { ++ if(!new org.purpurmc.purpur.event.PreBlockExplodeEvent(location.getBlock(), this.blockInteraction == Explosion.BlockInteraction.DESTROY_WITH_DECAY ? 1.0F / this.radius : 1.0F, blockState, org.bukkit.craftbukkit.CraftExplosionResult.toExplosionResult(getBlockInteraction())).callEvent()) { + this.wasCanceled = true; + return; + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch index 6610cced4..30d849778 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch @@ -1,21 +1,19 @@ --- a/net/minecraft/world/level/block/EnchantingTableBlock.java +++ b/net/minecraft/world/level/block/EnchantingTableBlock.java -@@ -119,4 +_,18 @@ +@@ -119,4 +_,16 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return false; } + + // Purpur start - Enchantment Table Persists Lapis + @Override -+ public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean moved) { ++ protected void affectNeighborsAfterRemoval(BlockState state, net.minecraft.server.level.ServerLevel level, BlockPos pos, boolean movedByPiston) { + 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); ++ net.minecraft.world.Containers.updateNeighboursAfterDestroy(state, level, pos); + } -+ -+ super.onRemove(state, level, pos, newState, moved); + } + // Purpur end - Enchantment Table Persists Lapis } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch index 097ec96b1..c04018815 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch @@ -9,7 +9,7 @@ && entity instanceof LivingEntity && (entity instanceof Player || serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) { -@@ -129,6 +_,27 @@ +@@ -129,6 +_,28 @@ return; } @@ -27,8 +27,9 @@ + + // Purpur start - Farmland trampling changes + if (level.purpurConfig.farmlandTramplingFeatherFalling) { -+ java.util.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) { ++ net.minecraft.world.item.ItemStack bootsItem = ((net.minecraft.world.entity.LivingEntity) entity).getItemBySlot(net.minecraft.world.entity.EquipmentSlot.FEET); ++ ++ if (bootsItem != net.minecraft.world.item.ItemStack.EMPTY && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.FEATHER_FALLING, bootsItem) >= (int) entity.fallDistance) { + return; + } + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch index be5975798..9dfdef79a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch @@ -29,10 +29,10 @@ + item.set(net.minecraft.core.component.DataComponents.CUSTOM_NAME, io.papermc.paper.adventure.PaperAdventure.asVanilla(displayName)); + } + -+ List lore = level.purpurConfig.silkTouchSpawnerLore; ++ java.util.List lore = level.purpurConfig.silkTouchSpawnerLore; + if (lore != null && !lore.isEmpty()) { + -+ List loreComponentList = new java.util.ArrayList<>(); ++ java.util.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("")) { @@ -43,7 +43,7 @@ + + 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); ++ item.set(net.minecraft.core.component.DataComponents.TOOLTIP_DISPLAY, net.minecraft.world.item.component.TooltipDisplay.DEFAULT.withHidden(net.minecraft.core.component.DataComponents.BLOCK_ENTITY_DATA, true)); + } + popResource(level, pos, item); + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch index 118021357..165f005db 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch @@ -9,7 +9,7 @@ } @Override -@@ -189,9 +_,31 @@ +@@ -189,9 +_,32 @@ } private boolean canDestroyEgg(ServerLevel level, Entity entity) { @@ -35,8 +35,9 @@ + } + // Purpur start - Option to disable turtle egg trampling with feather falling + if (level.purpurConfig.turtleEggsTramplingFeatherFalling) { -+ 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; ++ net.minecraft.world.item.ItemStack bootsItem = ((net.minecraft.world.entity.LivingEntity) entity).getItemBySlot(net.minecraft.world.entity.EquipmentSlot.FEET); ++ ++ return bootsItem != net.minecraft.world.item.ItemStack.EMPTY || net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.FEATHER_FALLING, bootsItem) < (int) entity.fallDistance; + } + // Purpur end - Option to disable turtle egg trampling with feather falling + if (entity instanceof Player) return true; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BushBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch similarity index 78% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BushBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch index 86f13f0eb..af22ad6c3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BushBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch @@ -1,8 +1,8 @@ ---- a/net/minecraft/world/level/block/BushBlock.java -+++ b/net/minecraft/world/level/block/BushBlock.java -@@ -44,4 +_,24 @@ - public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { - BonemealableBlock.findSpreadableNeighbourPos(level, pos, state).ifPresent(blockPos -> level.setBlockAndUpdate(blockPos, this.defaultBlockState())); +--- a/net/minecraft/world/level/block/VegetationBlock.java ++++ b/net/minecraft/world/level/block/VegetationBlock.java +@@ -61,4 +_,24 @@ + protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { + return pathComputationType == PathComputationType.AIR && !this.hasCollision || super.isPathfindable(state, pathComputationType); } + + // Purpur start - Ability for hoe to replant crops diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch index b95caba81..29f2e15d3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch @@ -1,36 +1,29 @@ --- a/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -104,6 +_,14 @@ +@@ -104,6 +_,10 @@ this.persistentDataContainer.putAll((CompoundTag) persistentDataTag); } // Paper end - read persistent data container + -+ // Purpur start - Persistent BlockEntity Lore and DisplayName -+ if (tag.contains("Purpur.persistentLore")) { -+ net.minecraft.world.item.component.ItemLore.CODEC.decode(net.minecraft.nbt.NbtOps.INSTANCE, tag.getCompound("Purpur.persistentLore")).result() -+ .ifPresent(tag1 -> this.persistentLore = tag1.getFirst()); -+ } -+ // Purpur end - Persistent BlockEntity Lore and DisplayName ++ ++ this.persistentLore = tag.read("Purpur.persistentLore", net.minecraft.world.item.component.ItemLore.CODEC).orElse(null); // Purpur - Persistent BlockEntity Lore and DisplayName + } public final void loadWithComponents(CompoundTag tag, HolderLookup.Provider registries) { -@@ -116,6 +_,15 @@ - this.loadAdditional(tag, registries); +@@ -117,6 +_,12 @@ } -+ // Purpur start - Persistent BlockEntity Lore and DisplayName -+ protected void saveAdditional(CompoundTag nbt) { -+ if (this.persistentLore != null) { -+ 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 - Persistent BlockEntity Lore and DisplayName -+ protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { ++ // Purpur start - Persistent BlockEntity Lore and DisplayName ++ if (this.persistentLore != null) { ++ net.minecraft.resources.RegistryOps registryOps = registries.createSerializationContext(NbtOps.INSTANCE); ++ tag.store("Purpur.persistentLore", net.minecraft.world.item.component.ItemLore.CODEC, registryOps, this.persistentLore); ++ } ++ // Purpur end - Persistent BlockEntity Lore and DisplayName } + public final CompoundTag saveWithFullMetadata(HolderLookup.Provider registries) { @@ -377,4 +_,17 @@ private ComponentHelper() { } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch index 5577c229c..07f5fcf82 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch @@ -35,7 +35,7 @@ ); } } -@@ -297,6 +_,28 @@ +@@ -297,6 +_,26 @@ // CraftBukkit - this return new CommandSourceStack(commandSource, Vec3.atCenterOf(pos), Vec2.ZERO, (ServerLevel)level, 2, string, component, level.getServer(), player); // Paper - Fix commands from signs not firing command events } @@ -51,10 +51,8 @@ + final String line = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacyAmpersand().serialize(component); + final var text = net.kyori.adventure.text.Component.text(line); + final String json = net.kyori.adventure.text.serializer.gson.GsonComponentSerializer.gson().serialize(text); -+ if (!nbt.contains(side)) nbt.put(side, new CompoundTag()); -+ final CompoundTag sideNbt = nbt.getCompound(side); -+ if (!sideNbt.contains("messages")) sideNbt.put("messages", new net.minecraft.nbt.ListTag()); -+ final net.minecraft.nbt.ListTag messagesNbt = sideNbt.getList("messages", Tag.TAG_STRING); ++ final CompoundTag sideNbt = nbt.getCompoundOrEmpty(side); ++ final net.minecraft.nbt.ListTag messagesNbt = sideNbt.getListOrEmpty("messages"); + messagesNbt.set(i, net.minecraft.nbt.StringTag.valueOf(json)); + } + nbt.putString("PurpurEditor", "true"); diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index 6cba69f5f..4f9a7fef0 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -37,7 +37,7 @@ index 1a4f42c9e6012a6a074c9d5451d8dc11530a5c5b..67b9963afd91af84459d439697f6230f + // Purpur end - Ridables } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index a7e3afe04ffbb0fd5fa5fcf7cd15efd7cea1c4e0..9c88a5b6b054636a9f326d0253f65496cf3babc3 100644 +index a7e3afe04ffbb0fd5fa5fcf7cd15efd7cea1c4e0..f32316b0357f1cb0501a052361a0221f8e9d1438 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -514,6 +514,15 @@ public class CraftEventFactory { @@ -45,10 +45,10 @@ index a7e3afe04ffbb0fd5fa5fcf7cd15efd7cea1c4e0..9c88a5b6b054636a9f326d0253f65496 craftServer.getPluginManager().callEvent(event); + // Purpur start - Ridables -+ if (who != null) { ++ if (player != null) { + switch (action) { -+ case LEFT_CLICK_BLOCK, LEFT_CLICK_AIR -> who.processClick(InteractionHand.MAIN_HAND); -+ case RIGHT_CLICK_BLOCK, RIGHT_CLICK_AIR -> who.processClick(InteractionHand.OFF_HAND); ++ case LEFT_CLICK_BLOCK, LEFT_CLICK_AIR -> player.processClick(InteractionHand.MAIN_HAND); ++ case RIGHT_CLICK_BLOCK, RIGHT_CLICK_AIR -> player.processClick(InteractionHand.OFF_HAND); + } + } + // Purpur end - Ridables diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch index 070fe7474..333761455 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch @@ -13,7 +13,7 @@ CompoundTag data = this.getData(); if (data == null) { return null; -@@ -571,4 +_,191 @@ +@@ -571,4 +_,183 @@ manager.save(); } } @@ -26,9 +26,8 @@ + } else { + CompoundTag data = this.getData(); + if (data == null) return false; -+ if (!data.contains("abilities")) return false; -+ CompoundTag abilities = data.getCompound("abilities"); -+ return abilities.getByte("mayfly") == (byte) 1; ++ if (!(data.get("abilities") instanceof CompoundTag abilities)) return false; ++ return abilities.getByteOr("mayfly", (byte) 0) == (byte) 1; + } + } + @@ -39,8 +38,7 @@ + } else { + CompoundTag data = this.getData(); + if (data == null) return; -+ if (!data.contains("abilities")) return; -+ CompoundTag abilities = data.getCompound("abilities"); ++ if (!(data.get("abilities") instanceof CompoundTag abilities)) return; + abilities.putByte("mayfly", (byte) (flight ? 1 : 0)); + data.put("abilities", abilities); + save(data); @@ -54,9 +52,8 @@ + } else { + CompoundTag data = this.getData(); + if (data == null) return false; -+ if (!data.contains("abilities")) return false; -+ CompoundTag abilities = data.getCompound("abilities"); -+ return abilities.getByte("flying") == (byte) 1; ++ if (!(data.get("abilities") instanceof CompoundTag abilities)) return false; ++ return abilities.getByteOr("flying", (byte) 0) == (byte) 1; + } + } + @@ -67,8 +64,7 @@ + } else { + CompoundTag data = this.getData(); + if (data == null) return; -+ if (!data.contains("abilities")) return; -+ CompoundTag abilities = data.getCompound("abilities"); ++ if (!(data.get("abilities") instanceof CompoundTag abilities)) return; + abilities.putByte("mayfly", (byte) (value ? 1 : 0)); + data.put("abilities", abilities); + save(data); @@ -83,8 +79,7 @@ + } else { + CompoundTag data = this.getData(); + if (data == null) return; -+ if (!data.contains("abilities")) return; -+ CompoundTag abilities = data.getCompound("abilities"); ++ if (!(data.get("abilities") instanceof CompoundTag abilities)) return; + abilities.putFloat("flySpeed", value); + data.put("abilities", abilities); + save(data); @@ -98,9 +93,8 @@ + } else { + CompoundTag data = this.getData(); + if (data == null) return 0; -+ if (!data.contains("abilities")) return 0; -+ CompoundTag abilities = data.getCompound("abilities"); -+ return abilities.getFloat("flySpeed"); ++ if (!(data.get("abilities") instanceof CompoundTag abilities)) return 0; ++ return abilities.getFloatOr("flySpeed", 0); + } + } + @@ -112,8 +106,7 @@ + } else { + CompoundTag data = this.getData(); + if (data == null) return; -+ if (!data.contains("abilities")) return; -+ CompoundTag abilities = data.getCompound("abilities"); ++ if (!(data.get("abilities") instanceof CompoundTag abilities)) return; + abilities.putFloat("walkSpeed", value); + data.put("abilities", abilities); + save(data); @@ -127,9 +120,8 @@ + } else { + CompoundTag data = this.getData(); + if (data == null) return 0; -+ if (!data.contains("abilities")) return 0; -+ CompoundTag abilities = data.getCompound("abilities"); -+ return abilities.getFloat("walkSpeed"); ++ if (!(data.get("abilities") instanceof CompoundTag abilities)) return 0; ++ return abilities.getFloatOr("walkSpeed", 0); + } + } + diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch index 4e6e154b7..70d86ef1d 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch @@ -6,7 +6,7 @@ + // Purpur start - Add local difficulty api + public float getLocalDifficultyAt(Location location) { -+ return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty(); ++ return getHandle().getCurrentDifficultyAt(org.bukkit.craftbukkit.util.CraftLocation.toBlockPosition(location)).getEffectiveDifficulty(); + } + // Purpur end - Add local difficulty api + @@ -28,7 +28,7 @@ + + @Override + public void sendBlockHighlight(Location location, int duration, String text, int argb) { -+ net.minecraft.network.protocol.game.DebugPackets.sendGameTestAddMarker(getHandle(), io.papermc.paper.util.MCUtil.toBlockPosition(location), text, argb, duration); ++ net.minecraft.network.protocol.game.DebugPackets.sendGameTestAddMarker(getHandle(), org.bukkit.craftbukkit.util.CraftLocation.toBlockPosition(location), text, argb, duration); + } + + @Override diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 32b0fc0fa..7b9f83223 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -94,7 +94,7 @@ + @Override + public void sendBlockHighlight(Location location, int duration, String text, int argb) { + if (this.getHandle().connection == null) return; -+ this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestAddMarkerDebugPayload(io.papermc.paper.util.MCUtil.toBlockPosition(location), argb, text, duration))); ++ this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestAddMarkerDebugPayload(org.bukkit.craftbukkit.util.CraftLocation.toBlockPosition(location), argb, text, duration))); + } + + @Override diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java b/purpur-server/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java index 7608bf098..859164a73 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java @@ -3,9 +3,9 @@ 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.nbt.NbtOps; +import net.minecraft.network.chat.ComponentSerialization; 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; @@ -32,12 +32,11 @@ public class PurpurStoredBee implements StoredEntity { this.blockStorage = blockStorage; 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; + net.minecraft.network.chat.Component customNameMinecraft = customData.read("CustomName", ComponentSerialization.CODEC, MinecraftServer.getDefaultRegistryAccess().createSerializationContext(NbtOps.INSTANCE)).orElse(null); + this.customName = customNameMinecraft == null ? null : PaperAdventure.asAdventure(customNameMinecraft); - if(customData.contains("BukkitValues", Tag.TAG_COMPOUND)) { - this.persistentDataContainer.putAll(customData.getCompound("BukkitValues")); + if (customData.get("BukkitValues") instanceof CompoundTag compoundTag) { + this.persistentDataContainer.putAll(compoundTag); } } diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/entity/projectile/PhantomFlames.java b/purpur-server/src/main/java/org/purpurmc/purpur/entity/projectile/PhantomFlames.java index bac5eee2d..b3fe215e1 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/entity/projectile/PhantomFlames.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/entity/projectile/PhantomFlames.java @@ -70,7 +70,7 @@ public class PhantomFlames extends LlamaSpit { this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); } else if (this.level().getBlockStates(this.getBoundingBox()).noneMatch(BlockBehaviour.BlockStateBase::isAir)) { this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); - } else if (this.isInWaterOrBubble()) { + } else if (this.isInWater()) { this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); } else { this.setDeltaMovement(mot.scale(0.99D)); diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java b/purpur-server/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java index ed50cb211..f7de0c7d5 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java @@ -1,5 +1,6 @@ package org.purpurmc.purpur.item; +import java.util.Optional; import net.minecraft.core.BlockPos; import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.CompoundTag; @@ -27,11 +28,11 @@ public class SpawnerItem extends BlockItem { 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")) { - EntityType.byString(customData.getString("Purpur.mob_type")).ifPresent(type -> spawner.getSpawner().setEntityId(type, level, level.random, pos)); + Optional mobTypeStringOptional = customData.getString("Purpur.mob_type"); + if (mobTypeStringOptional.isPresent()) { + EntityType.byString(mobTypeStringOptional.get()).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); + customData.read("SpawnData", net.minecraft.world.level.SpawnData.CODEC).ifPresent(spawnData -> spawner.getSpawner().nextSpawnData = spawnData); } } } From 4907125796650e3e5d3e2d85ed4ed062dbfbaa71 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 27 Mar 2025 16:40:47 -0700 Subject: [PATCH 053/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@fa0dd15d add missed nullability annotations PaperMC/Paper@b6d70a9c Generators PaperMC/Paper@b92137c1 load the PDC for new block entities PaperMC/Paper@06a26ec2 update legacy test PaperMC/Paper@c4f0b2b0 update more test PaperMC/Paper@77382fcb fix unbreakable shields PaperMC/Paper@9e08de6e Re-add old SmithingTrimRecipe constructors PaperMC/Paper@d2afd149 Bump some more numbers to 1.21.5 PaperMC/Paper@cf1455e5 Ignore private methods in MaterialReroutingTest PaperMC/Paper@ce91a8ca Move out unapplied feature patches --- gradle.properties | 2 +- purpur-api/build.gradle.kts.patch | 8 ++--- .../main/java/org/bukkit/Material.java.patch | 2 +- .../enchantments/EnchantmentTarget.java.patch | 2 +- .../org/bukkit/entity/Villager.java.patch | 2 +- .../java/org/bukkit/entity/Wolf.java.patch | 2 +- purpur-server/build.gradle.kts.patch | 30 ++++++++++--------- .../features/0001-Ridables.patch | 16 +++++----- .../0009-Implement-elytra-settings.patch | 4 +-- ...iefing-bypass-to-everything-affected.patch | 4 +-- ...019-API-for-any-mob-to-burn-daylight.patch | 8 ++--- .../net/minecraft/core/BlockPos.java.patch | 6 ++-- .../level/ServerPlayerGameMode.java.patch | 8 ++--- .../ServerLoginPacketListenerImpl.java.patch | 2 +- .../minecraft/world/entity/Entity.java.patch | 30 +++++++++---------- .../world/entity/LivingEntity.java.patch | 12 ++++---- .../minecraft/world/level/Level.java.patch | 6 ++-- .../paper/entity/ai/MobGoalHelper.java.patch | 2 +- 18 files changed, 74 insertions(+), 72 deletions(-) diff --git a/gradle.properties b/gradle.properties index dea95b3a5..a241a67dd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = 95beb8c0bc785cf6bdd8ce9de097666cb572deb9 +paperCommit = ce91a8ca123f4e853629d08705e4ece3a09a5a4d org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/build.gradle.kts.patch b/purpur-api/build.gradle.kts.patch index 5f295dd9c..d09f1f271 100644 --- a/purpur-api/build.gradle.kts.patch +++ b/purpur-api/build.gradle.kts.patch @@ -4,15 +4,15 @@ testRuntimeOnly("org.junit.platform:junit-platform-launcher") } --val generatedApiPath: java.nio.file.Path = layout.projectDirectory.dir("src/generated/java").asFile.toPath() -+val generatedApiPath: java.nio.file.Path = rootProject.layout.projectDirectory.dir("paper-api/src/generated/java").asFile.toPath() +-val generatedDir: java.nio.file.Path = layout.projectDirectory.dir("src/generated/java").asFile.toPath() ++val generatedDir: java.nio.file.Path = rootProject.layout.projectDirectory.dir("paper-api/src/generated/java").asFile.toPath() idea { module { - generatedSourceDirs.add(generatedApiPath.toFile()) + generatedSourceDirs.add(generatedDir.toFile()) @@ -103,6 +_,18 @@ main { java { - srcDir(generatedApiPath) + srcDir(generatedDir) + srcDir(file("../paper-api/src/main/java")) + } + resources { diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch index 48bef86e4..1e13c5b4a 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -5812,4 +_,40 @@ +@@ -3632,4 +_,40 @@ return this.asItemType().getDefaultDataTypes(); } // Paper end - data component API diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java.patch index 45b679507..9c9f4c6a9 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java +++ b/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java -@@ -227,6 +_,30 @@ +@@ -230,6 +_,30 @@ public boolean includes(@NotNull Material item) { return BREAKABLE.includes(item) || (WEARABLE.includes(item) && !item.equals(Material.ELYTRA)) || item.equals(Material.COMPASS); } diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch index f27a5a7e9..083a0d057 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Villager.java +++ b/src/main/java/org/bukkit/entity/Villager.java -@@ -365,4 +_,13 @@ +@@ -391,4 +_,13 @@ * reputation regardless of its impact and the player associated. */ public void clearReputations(); diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch index 772c05d9e..badb67f31 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Wolf.java +++ b/src/main/java/org/bukkit/entity/Wolf.java -@@ -138,4 +_,20 @@ +@@ -164,4 +_,20 @@ return RegistryAccess.registryAccess().getRegistry(RegistryKey.WOLF_SOUND_VARIANT).getOrThrow(NamespacedKey.minecraft(key)); } } diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index eaed992ef..33df6c0aa 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -1,9 +1,10 @@ --- a/paper-server/build.gradle.kts +++ b/paper-server/build.gradle.kts -@@ -24,6 +_,16 @@ +@@ -28,6 +_,18 @@ // oldPaperCommit = "f4f275519f7c1fbe9db173b7144a4fe81440e365" //} ++ // Purpur start - Rebrand + val purpur = forks.register("purpur") { + upstream.patchDir("paperServer") { + upstreamPath = "paper-server" @@ -13,16 +14,17 @@ + } + } + activeFork = purpur ++ // Purpur end - Rebrand + spigot { buildDataRef = "702e1a0a5072b2c4082371d5228cb30525687efc" - packageVersion = "v1_21_R3" // also needs to be updated in MappingEnvironment -@@ -104,7 +_,21 @@ + packageVersion = "v1_21_R4" // also needs to be updated in MappingEnvironment +@@ -108,7 +_,21 @@ } } -val log4jPlugins = sourceSets.create("log4jPlugins") -+ ++// Purpur start - Rebrand +sourceSets { + main { + java { srcDir("../paper-server/src/main/java") } @@ -33,23 +35,23 @@ + resources { srcDir("../paper-server/src/test/resources") } + } +} -+ +val log4jPlugins = sourceSets.create("log4jPlugins") { + java { srcDir("../paper-server/src/log4jPlugins/java") } +} ++// Purpur end - Rebrand configurations.named(log4jPlugins.compileClasspathConfigurationName) { extendsFrom(configurations.compileClasspath.get()) } -@@ -122,7 +_,7 @@ +@@ -130,7 +_,7 @@ } dependencies { - implementation(project(":paper-api")) -+ implementation(project(":purpur-api")) ++ implementation(project(":purpur-api")) // Purpur implementation("ca.spottedleaf:concurrentutil:0.0.3") implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+ implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21 -@@ -153,6 +_,10 @@ +@@ -162,6 +_,10 @@ runtimeOnly("com.mysql:mysql-connector-j:9.1.0") runtimeOnly("com.lmax:disruptor:3.4.4") @@ -60,23 +62,23 @@ runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.6") runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") -@@ -192,14 +_,14 @@ +@@ -201,14 +_,14 @@ val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim() attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", - "Implementation-Title" to "Paper", -+ "Implementation-Title" to "Purpur", ++ "Implementation-Title" to "Purpur", // Purpur "Implementation-Version" to implementationVersion, "Implementation-Vendor" to date, - "Specification-Title" to "Paper", -+ "Specification-Title" to "Purpur", ++ "Specification-Title" to "Purpur", // Purpur "Specification-Version" to project.version, - "Specification-Vendor" to "Paper Team", - "Brand-Id" to "papermc:paper", - "Brand-Name" to "Paper", -+ "Specification-Vendor" to "Purpur Team", -+ "Brand-Id" to "purpurmc:purpur", -+ "Brand-Name" to "Purpur", ++ "Specification-Vendor" to "Purpur Team", // Purpur ++ "Brand-Id" to "purpurmc:purpur", // Purpur ++ "Brand-Name" to "Purpur", // Purpur "Build-Number" to (build ?: ""), "Build-Time" to buildTime.toString(), "Git-Branch" to gitBranch, diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 69c4765d1..42ca26732 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -30,7 +30,7 @@ index f34bc75f324454bf48f0ebf79111706bb027a54b..6ad266592c16bdeccfb689fb2ef2ee37 /* Drop global time updates if (this.tickCount % 20 == 0) { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index fae2e1af2ea59b82b552bfc33c853e0e33ec90bc..f681d0766a3fec9e05396fe82111e9e99f751823 100644 +index 0e7405a480bffa81493ef2f2078c36ccda542cde..bc5c30430e79e2feb69c165d9e3e9b6a899b66ea 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -212,6 +212,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -75,10 +75,10 @@ index 63e01ec7e4ab04bb7d389bff485dfedca344bfa2..84b1570d0d88f57f33ff8179f0a78d37 if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 7b48f633223cc5e760c5c80d40424e04d791c43a..fc8fbfa5709895456f5aa0c480acedb8707b2ff5 100644 +index d1899b2411e90b4641dcbc58760e4a19b62846c5..1335a04edd053c06e290c070e3c03d02598d97e7 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -2855,6 +2855,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2856,6 +2856,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -92,7 +92,7 @@ index 7b48f633223cc5e760c5c80d40424e04d791c43a..fc8fbfa5709895456f5aa0c480acedb8 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -2896,6 +2903,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2897,6 +2904,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -107,7 +107,7 @@ index 7b48f633223cc5e760c5c80d40424e04d791c43a..fc8fbfa5709895456f5aa0c480acedb8 if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -4822,4 +4837,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4823,4 +4838,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -177,7 +177,7 @@ index bda521cca91f070139f5e9bdef6a50e1497f53ff..351f92e1627f465a9a292d4a5e5c256a protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 4d65d88c59a8536d27ec61c65373ab21fa534b3b..e5f296bf3671afd82ab76493646938783b53eef6 100644 +index a077e2f518be39bbdba4919ed7161bb28547e56b..a4a19d962bc4665e9368b97cae4b2534da33de91 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -226,9 +226,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -210,7 +210,7 @@ index 4d65d88c59a8536d27ec61c65373ab21fa534b3b..e5f296bf3671afd82ab7649364693878 @Override protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) { -@@ -3578,8 +3579,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3577,8 +3578,10 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); profilerFiller.pop(); // Paper start - Add EntityMoveEvent @@ -223,7 +223,7 @@ index 4d65d88c59a8536d27ec61c65373ab21fa534b3b..e5f296bf3671afd82ab7649364693878 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()); -@@ -3589,6 +3592,21 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3588,6 +3591,21 @@ public abstract class LivingEntity extends Entity implements Attackable { this.absSnapTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } diff --git a/purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch b/purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch index 4a9a7554a..66a6882f5 100644 --- a/purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch +++ b/purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index af03e75f445bff6dfe56f89fb422b5662a21c962..3ec3e89b0b53ebde5e1eaa49e28b6bacfe781085 100644 +index df244fa0eb463aa80da39c930eb16c85481e014a..bdae20191d2e5765761442eb06924968e710b189 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -3644,7 +3644,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3643,7 +3643,18 @@ public abstract class LivingEntity extends Entity implements Attackable { .filter(equipmentSlot1 -> canGlideUsing(this.getItemBySlot(equipmentSlot1), equipmentSlot1)) .toList(); EquipmentSlot equipmentSlot = Util.getRandom(list, this.random); diff --git a/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch b/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch index 8bd26754f..fde7ac81b 100644 --- a/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 3ec3e89b0b53ebde5e1eaa49e28b6bacfe781085..36636e35cfb3751d448ee330b51e5ab7c44c6014 100644 +index bdae20191d2e5765761442eb06924968e710b189..476b570ffe9d2df173bd57b57fe65372cb35fa1d 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -1905,7 +1905,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1904,7 +1904,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (this.level() instanceof ServerLevel serverLevel) { boolean var6 = false; if (this.dead && entitySource instanceof WitherBoss) { // Paper diff --git a/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch index 3780d764e..fb40c66db 100644 --- a/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0019-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/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index d4e989889ed21e3900062eed142f26a9bdaaa8d9..66c4047a35be22803b38a9249b74ae32dcb98748 100644 +index 1335a04edd053c06e290c070e3c03d02598d97e7..7148e8c6deeb1e5f99eb6d2fe6c0fc9583e44934 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -414,6 +414,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -415,6 +415,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Purpur end - Add canSaveToDisk to Entity @@ -35,7 +35,7 @@ index d4e989889ed21e3900062eed142f26a9bdaaa8d9..66c4047a35be22803b38a9249b74ae32 this.type = entityType; this.level = level; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 2a7434872472b950fe09bfe8f5f334d9964b51d6..a92ef9269b59305334ed1a8f1b253493e2223306 100644 +index 476b570ffe9d2df173bd57b57fe65372cb35fa1d..4586d7afb4f0a27c7d61abb80af24205d46cb83f 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -273,6 +273,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -62,7 +62,7 @@ index 2a7434872472b950fe09bfe8f5f334d9964b51d6..a92ef9269b59305334ed1a8f1b253493 this.lastHurtByPlayer = EntityReference.read(compound, "last_hurt_by_player"); this.lastHurtByPlayerMemoryTime = compound.getIntOr("last_hurt_by_player_memory_time", 0); this.lastHurtByMob = EntityReference.read(compound, "last_hurt_by_mob"); -@@ -3615,6 +3618,32 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3614,6 +3617,32 @@ public abstract class LivingEntity extends Entity implements Attackable { if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterOrRain()) { this.hurtServer(serverLevel, this.damageSources().drown(), 1.0F); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch index 50faf5263..8b669b1d6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch @@ -1,8 +1,8 @@ --- a/net/minecraft/core/BlockPos.java +++ b/net/minecraft/core/BlockPos.java -@@ -61,6 +_,12 @@ - private static final int X_OFFSET = PACKED_Y_LENGTH + PACKED_HORIZONTAL_LENGTH; - public static final int MAX_HORIZONTAL_COORDINATE = (1 << PACKED_HORIZONTAL_LENGTH) / 2 - 1; +@@ -63,6 +_,12 @@ + public static final int MAX_HORIZONTAL_COORDINATE = 33554431; + // Paper end - Optimize Bit Operations by inlining + // Purpur start - Ridables + public BlockPos(net.minecraft.world.entity.Entity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch index dade16acd..13642640b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -347,6 +_,7 @@ +@@ -348,6 +_,7 @@ } return false; } @@ -8,7 +8,7 @@ } // CraftBukkit end -@@ -460,6 +_,7 @@ +@@ -461,6 +_,7 @@ public InteractionHand interactHand; public ItemStack interactItemStack; public InteractionResult useItemOn(ServerPlayer player, Level level, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) { @@ -16,7 +16,7 @@ BlockPos blockPos = hitResult.getBlockPos(); BlockState blockState = level.getBlockState(blockPos); boolean cancelledBlock = false; -@@ -502,7 +_,7 @@ +@@ -503,7 +_,7 @@ boolean flag = !player.getMainHandItem().isEmpty() || !player.getOffhandItem().isEmpty(); boolean flag1 = player.isSecondaryUseActive() && flag; ItemStack itemStack = stack.copy(); @@ -25,7 +25,7 @@ InteractionResult interactionResult = blockState.useItemOn(player.getItemInHand(hand), level, player, hand, hitResult); if (interactionResult.consumesAction()) { CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger(player, blockPos, itemStack); -@@ -548,4 +_,18 @@ +@@ -549,4 +_,18 @@ public void setLevel(ServerLevel serverLevel) { this.level = serverLevel; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch index 06b474c18..dfa6db0dc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -308,7 +_,7 @@ +@@ -306,7 +_,7 @@ ServerLoginPacketListenerImpl.LOGGER.warn("Failed to verify username but will let them in anyway!"); ServerLoginPacketListenerImpl.this.startClientVerification(ServerLoginPacketListenerImpl.this.createOfflineProfile(string1)); // Spigot } else { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 6d8ad3ef9..5e0bd604b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -8,7 +8,7 @@ // CraftBukkit start private static final org.slf4j.Logger LOGGER = com.mojang.logging.LogUtils.getLogger(); private static final int CURRENT_LEVEL = 2; -@@ -303,8 +_,9 @@ +@@ -304,8 +_,9 @@ public double xOld; public double yOld; public double zOld; @@ -19,7 +19,7 @@ public int tickCount; private int remainingFireTicks = -this.getFireImmuneTicks(); public boolean wasTouchingWater; -@@ -338,8 +_,8 @@ +@@ -339,8 +_,8 @@ public PortalProcessor portalProcess; public int portalCooldown; private boolean invulnerable; @@ -30,7 +30,7 @@ private boolean hasGlowingTag; private final Set tags = new io.papermc.paper.util.SizeLimitedSet<>(new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(), MAX_ENTITY_TAG_COUNT); // Paper - fully limit tag size - replace set impl private final double[] pistonDeltas = new double[]{0.0, 0.0, 0.0}; -@@ -393,6 +_,7 @@ +@@ -394,6 +_,7 @@ public long activatedTick = Integer.MIN_VALUE; public boolean isTemporarilyActive; public long activatedImmunityTick = Integer.MIN_VALUE; @@ -38,7 +38,7 @@ public void inactiveTick() { } -@@ -405,10 +_,21 @@ +@@ -406,10 +_,21 @@ } // Paper end @@ -60,7 +60,7 @@ this.position = Vec3.ZERO; this.blockPosition = BlockPos.ZERO; this.chunkPosition = ChunkPos.ZERO; -@@ -778,6 +_,7 @@ +@@ -779,6 +_,7 @@ && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage @@ -68,7 +68,7 @@ this.onBelowWorld(); } } -@@ -1681,7 +_,7 @@ +@@ -1682,7 +_,7 @@ } public boolean fireImmune() { @@ -77,7 +77,7 @@ } public boolean causeFallDamage(double fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -1741,7 +_,7 @@ +@@ -1742,7 +_,7 @@ return this.isInWater() || flag; } @@ -86,7 +86,7 @@ if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { this.wasTouchingWater = false; } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) { -@@ -2363,6 +_,13 @@ +@@ -2364,6 +_,13 @@ compound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -100,7 +100,7 @@ return compound; } catch (Throwable var8) { CrashReport crashReport = CrashReport.forThrowable(var8, "Saving entity NBT"); -@@ -2480,6 +_,13 @@ +@@ -2481,6 +_,13 @@ freezeLocked = compound.getBooleanOr("Paper.FreezeLock", false); } // Paper end @@ -114,7 +114,7 @@ } catch (Throwable var8) { CrashReport crashReport = CrashReport.forThrowable(var8, "Loading entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); -@@ -2619,6 +_,7 @@ +@@ -2620,6 +_,7 @@ if (this.isAlive() && this instanceof Leashable leashable) { if (leashable.getLeashHolder() == player) { if (!this.level().isClientSide()) { @@ -122,7 +122,7 @@ // CraftBukkit start - fire PlayerUnleashEntityEvent // Paper start - Expand EntityUnleashEvent org.bukkit.event.player.PlayerUnleashEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials()); -@@ -2935,15 +_,18 @@ +@@ -2936,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } @@ -142,7 +142,7 @@ } } } -@@ -3148,7 +_,7 @@ +@@ -3149,7 +_,7 @@ } public int getMaxAirSupply() { @@ -151,7 +151,7 @@ } public int getAirSupply() { -@@ -3676,7 +_,7 @@ +@@ -3677,7 +_,7 @@ // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -160,7 +160,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4211,6 +_,12 @@ +@@ -4212,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -173,7 +173,7 @@ public boolean updateFluidHeightAndDoFluidPushing(TagKey fluidTag, double motionScale) { if (this.touchingUnloadedChunk()) { return false; -@@ -4551,7 +_,7 @@ +@@ -4552,7 +_,7 @@ } public float maxUpStep() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch index 54ea2c626..18edfcd80 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch @@ -100,7 +100,7 @@ this.noActionTime = 0; if (amount < 0.0F) { amount = 0.0F; -@@ -1647,10 +_,10 @@ +@@ -1646,10 +_,10 @@ protected Player resolvePlayerResponsibleForDamage(DamageSource damageSource) { Entity entity = damageSource.getEntity(); if (entity instanceof Player player) { @@ -113,7 +113,7 @@ } else { this.lastHurtByPlayer = null; this.lastHurtByPlayerMemoryTime = 0; -@@ -1701,6 +_,18 @@ +@@ -1700,6 +_,18 @@ } } @@ -132,7 +132,7 @@ final org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null; final EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemStack == null); -@@ -1876,6 +_,7 @@ +@@ -1875,6 +_,7 @@ boolean flag = this.lastHurtByPlayerMemoryTime > 0; this.dropEquipment(level); // CraftBukkit - from below if (this.shouldDropLoot() && level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -140,7 +140,7 @@ this.dropFromLootTable(level, damageSource, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1884,6 +_,7 @@ +@@ -1883,6 +_,7 @@ // Paper end this.dropCustomDeathLoot(level, damageSource, flag); this.clearEquipmentSlots = prev; // Paper @@ -148,7 +148,7 @@ } // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment -@@ -3058,6 +_,7 @@ +@@ -3057,6 +_,7 @@ float f = (float)(d * 10.0 - 3.0); if (f > 0.0F) { this.playSound(this.getFallDamageSound((int)f), 1.0F, 1.0F); @@ -156,7 +156,7 @@ this.hurt(this.damageSources().flyIntoWall(), f); } } -@@ -4452,6 +_,12 @@ +@@ -4451,6 +_,12 @@ ? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND) : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType()); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch index 8e696920d..3d5c15c0b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/Level.java +++ b/net/minecraft/world/level/Level.java -@@ -158,11 +_,55 @@ +@@ -159,11 +_,55 @@ } // Paper end - add paper world config @@ -56,7 +56,7 @@ public CraftWorld getWorld() { return this.world; } -@@ -205,6 +_,8 @@ +@@ -207,6 +_,8 @@ ) { this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config @@ -65,7 +65,7 @@ this.generator = gen; this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); -@@ -1409,4 +_,14 @@ +@@ -1413,4 +_,14 @@ return this.id; } } diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch index be4e59d89..68250b56b 100644 --- a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -@@ -136,6 +_,10 @@ +@@ -27,6 +_,10 @@ static { // TODO these kinda should be checked on each release, in case obfuscation changes deobfuscationMap.put("abstract_skeleton_1", "abstract_skeleton_melee"); From 9249a2ca463587eb4074e15f77e926ffa0d6424d Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 27 Mar 2025 17:01:24 -0700 Subject: [PATCH 054/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@9b1798d6 Simplify custom payload handling (#12347) --- gradle.properties | 2 +- .../ServerCommonPacketListenerImpl.java.patch | 30 +++++++++++-------- ...0005-Add-EntityTeleportHinderedEvent.patch | 6 ++-- .../craftbukkit/entity/CraftPlayer.java.patch | 6 ++-- 4 files changed, 24 insertions(+), 20 deletions(-) diff --git a/gradle.properties b/gradle.properties index 9cb123ed7..5ebca8a3e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = c467df95a29e6c3d42b7e6f49513e924f9ba2ece +paperCommit = 9b1798d6438107fdf0d5939b79a8cf71f4d16e2c org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch index 4405b9245..ea070a65e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch @@ -33,21 +33,25 @@ if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) { int i = (int)(Util.getMillis() - this.keepAliveTime); this.latency = (this.latency * 3 + i) / 4; -@@ -159,6 +_,13 @@ - ServerGamePacketListenerImpl.LOGGER.error("Couldn't register custom payload", ex); - this.disconnect(Component.literal("Invalid payload REGISTER!"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause +@@ -169,10 +_,17 @@ + return; } -+ // Purpur start - Purpur client support -+ } else if (identifier.equals(PURPUR_CLIENT)) { -+ try { -+ player.purpurClient = true; -+ } catch (Exception ignore) { + ++ // Purpur start - Purpur client support ++ if (identifier.equals(PURPUR_CLIENT)) { ++ this.player.purpurClient = true; + } -+ // Purpur end - Purpur client support - } else if (identifier.equals(ServerCommonPacketListenerImpl.CUSTOM_UNREGISTER)) { - try { - String channels = payload.toString(com.google.common.base.Charsets.UTF_8); -@@ -238,6 +_,22 @@ ++ // Purpur end - Purpur client support ++ + if (identifier.equals(MINECRAFT_BRAND)) { + this.player.clientBrandName = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256); + } + ++ + this.cserver.getMessenger().dispatchIncomingMessage(this.player.getBukkitEntity(), identifier.toString(), data); + } catch (final Exception e) { + ServerGamePacketListenerImpl.LOGGER.error("Couldn't handle custom payload on channel {}", identifier, e); +@@ -242,6 +_,22 @@ // 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 final long elapsedTime = millis - this.keepAliveTime; diff --git a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch index 828db575c..f2d0b40da 100644 --- a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch @@ -29,10 +29,10 @@ index 71cc3b64ee27118badcdd6214cb1c6a120202f44..623e4c9985e04edeeac1cdf1d8f89be4 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 4dd2c2c824ffc7c6da02a3e740b4025459073295..db2cd4603c26bca59654f0a5225b18c446a7f612 100644 +index 5bdfbb14db9f84647ae9b46b036e819ab0c334e2..d2010fc46215c37c3ef1d8a75cc39bce655d2c3f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1441,6 +1441,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1436,6 +1436,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper start - Teleport passenger API // Don't allow teleporting between worlds while keeping passengers if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -40,7 +40,7 @@ index 4dd2c2c824ffc7c6da02a3e740b4025459073295..db2cd4603c26bca59654f0a5225b18c4 return false; } -@@ -1462,6 +1463,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1457,6 +1458,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index b3328ecef..50e5c0105 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -594,10 +_,15 @@ +@@ -589,10 +_,15 @@ @Override public void setPlayerListName(String name) { @@ -17,7 +17,7 @@ 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)) { -@@ -2755,6 +_,28 @@ +@@ -2750,6 +_,28 @@ return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -46,7 +46,7 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3624,4 +_,76 @@ +@@ -3619,4 +_,76 @@ public void setSimplifyContainerDesyncCheck(final boolean simplifyContainerDesyncCheck) { this.simplifyContainerDesyncCheck = simplifyContainerDesyncCheck; } From 3c01f7c1b7205d862d58601028b832668a704e66 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 27 Mar 2025 17:16:25 -0700 Subject: [PATCH 055/289] set the proper generated directory --- purpur-server/build.gradle.kts.patch | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index 33df6c0aa..7cefdc9cd 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -82,3 +82,12 @@ "Build-Number" to (build ?: ""), "Build-Time" to buildTime.toString(), "Git-Branch" to gitBranch, +@@ -262,7 +_,7 @@ + jvmArgumentProviders.add(provider) + } + +-val generatedDir: java.nio.file.Path = layout.projectDirectory.dir("src/generated/java").asFile.toPath() ++val generatedDir: java.nio.file.Path = layout.projectDirectory.dir("../paper-server/src/generated/java").asFile.toPath() + idea { + module { + generatedSourceDirs.add(generatedDir.toFile()) From 10fe084ea96c52025f02397b3a8a78e0dfafbc32 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 29 Mar 2025 16:16:47 -0700 Subject: [PATCH 056/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@2552abf0 fix message mutation in PlayerSetSpawnEvent PaperMC/Paper@ae99e24f fix deprecated bungee chat api methods PaperMC/Paper@dca4aab8 add util methods to CraftChatMessage PaperMC/Paper@87c9d9b0 be more lenient on url parsing for legacy format PaperMC/Paper@4a9bd2e3 Correctly clear items in PlayerDeathEvent PaperMC/Paper@a70f7745 fix unsaveable launched trident --- gradle.properties | 2 +- ...-Minecart-settings-and-WASD-controls.patch | 4 ++-- .../server/level/ServerPlayer.java.patch | 20 +++++++++---------- .../world/item/TridentItem.java.patch | 6 ++---- ...006-API-for-any-mob-to-burn-daylight.patch | 6 +++--- .../entity/CraftLivingEntity.java.patch | 2 +- 6 files changed, 19 insertions(+), 21 deletions(-) diff --git a/gradle.properties b/gradle.properties index a241a67dd..0efe1d86b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = ce91a8ca123f4e853629d08705e4ece3a09a5a4d +paperCommit = a70f7745a81d43089944069d701d69ad811aa4f1 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch index c4cf26cfb..0a4a90726 100644 --- a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch +++ b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index cf26a10e4ccf0f28817ce53b3c5bf1df02259273..580e79d19a728deed4719a8d2e5d70b532397781 100644 +index 6c5dab657ae7a7f5fd6fb73a86b3e8e4803dae50..998ce3a34e48e56cd907fc61cc3715518cbfae28 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -1149,6 +1149,11 @@ public class ServerPlayer extends Player { +@@ -1153,6 +1153,11 @@ public class ServerPlayer extends Player { } else { // Purpur start - Add boat fall damage config if (damageSource.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index b19f8ca23..aa58ba378 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -32,7 +32,7 @@ } private void saveParentVehicle(CompoundTag tag) { -@@ -1029,6 +_,7 @@ +@@ -1024,6 +_,7 @@ ) ); Team team = this.getTeam(); @@ -40,7 +40,7 @@ if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) { this.server.getPlayerList().broadcastSystemMessage(deathMessage, false); } else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { -@@ -1126,6 +_,13 @@ +@@ -1130,6 +_,13 @@ if (this.isInvulnerableTo(level, damageSource)) { return false; } else { @@ -54,7 +54,7 @@ Entity entity = damageSource.getEntity(); if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. !(entity instanceof Player player && !this.canHarmPlayer(player)) -@@ -1356,6 +_,7 @@ +@@ -1360,6 +_,7 @@ serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -62,7 +62,7 @@ this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1473,7 +_,7 @@ +@@ -1477,7 +_,7 @@ new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), monster -> monster.isPreventingPlayerRest(this.serverLevel(), this) ); @@ -71,7 +71,7 @@ return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1510,7 +_,19 @@ +@@ -1514,7 +_,19 @@ CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); if (!this.serverLevel().canSleepThroughNights()) { @@ -92,7 +92,7 @@ } ((ServerLevel)this.level()).updateSleepingPlayerList(); -@@ -1602,6 +_,7 @@ +@@ -1606,6 +_,7 @@ @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -100,7 +100,7 @@ this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -1904,6 +_,26 @@ +@@ -1908,6 +_,26 @@ this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -127,7 +127,7 @@ @Override public void displayClientMessage(Component chatComponent, boolean actionBar) { this.sendSystemMessage(chatComponent, actionBar); -@@ -2121,6 +_,20 @@ +@@ -2125,6 +_,20 @@ ); } @@ -148,7 +148,7 @@ public void sendSystemMessage(Component mesage) { this.sendSystemMessage(mesage, false); } -@@ -2259,7 +_,67 @@ +@@ -2263,7 +_,67 @@ public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -217,7 +217,7 @@ public ServerStatsCounter getStats() { return this.stats; -@@ -2887,4 +_,56 @@ +@@ -2891,4 +_,56 @@ return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch index 93a0a726e..dccf0bfa8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch @@ -9,13 +9,11 @@ ); // Paper start - PlayerLaunchProjectileEvent com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) tridentDelayed.projectile().getBukkitEntity()); -@@ -94,6 +_,9 @@ +@@ -94,6 +_,7 @@ return false; } ThrownTrident thrownTrident = tridentDelayed.projectile(); // Paper - PlayerLaunchProjectileEvent -+ + thrownTrident.setActualEnchantments(stack.getEnchantments()); // Purpur - Add an option to fix MC-3304 projectile looting -+ if (event.shouldConsume()) { - stack.consume(1, player); stack.hurtWithoutBreaking(1, player); // Paper - PlayerLaunchProjectileEvent + } diff --git a/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch index 2194f1eaf..8d5742173 100644 --- a/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0006-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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 549f6fcf5ded0563e665673a797fa92496786c3b..852938bc4007c4f4ef5b51330d13b0fbc624102b 100644 +index d8ed459b49624180e6939d9c5eefb453296f0559..83a23a82335eac087d36fd27ca6c6417960b881f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -107,6 +107,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -24,10 +24,10 @@ index 549f6fcf5ded0563e665673a797fa92496786c3b..852938bc4007c4f4ef5b51330d13b0fb 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 f4425a0e16573200be1951d073e4d0998585ec47..03dbdb8c32a2ed81987fa855567ee192f5c92e41 100644 +index 61750e2e36d7654a2284637c7b84908416705fe6..5b74ca7c52fb0437726a2a00483134884dc50b2f 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 { +@@ -1167,4 +1167,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public boolean canUseEquipmentSlot(org.bukkit.inventory.EquipmentSlot slot) { return this.getHandle().canUseSlot(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch index 29462e01d..69a13dd49 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -526,7 +_,7 @@ +@@ -520,7 +_,7 @@ net.minecraft.server.level.ServerPlayer nmsKiller = killer == null ? null : ((CraftPlayer) killer).getHandle(); this.getHandle().setLastHurtByMob(nmsKiller); if (nmsKiller != null) { From 7b360b0c86207b14ff1cc9b7d264821302219aa7 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 29 Mar 2025 16:51:19 -0700 Subject: [PATCH 057/289] use world context for registry access --- .../java/org/purpurmc/purpur/entity/PurpurStoredBee.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java b/purpur-server/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java index 859164a73..1cd79edbe 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java @@ -3,11 +3,10 @@ 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.NbtOps; -import net.minecraft.network.chat.ComponentSerialization; -import net.minecraft.server.MinecraftServer; import net.minecraft.world.level.block.entity.BeehiveBlockEntity; +import net.minecraft.world.level.block.entity.BlockEntity; import org.bukkit.block.EntityBlockStorage; +import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer; import org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry; import org.bukkit.entity.Bee; @@ -32,7 +31,7 @@ public class PurpurStoredBee implements StoredEntity { this.blockStorage = blockStorage; CompoundTag customData = handle.occupant.entityData().copyTag(); - net.minecraft.network.chat.Component customNameMinecraft = customData.read("CustomName", ComponentSerialization.CODEC, MinecraftServer.getDefaultRegistryAccess().createSerializationContext(NbtOps.INSTANCE)).orElse(null); + net.minecraft.network.chat.Component customNameMinecraft = BlockEntity.parseCustomNameSafe(customData.get("CustomName"), ((CraftWorld) blockStorage.getWorld()).getHandle().registryAccess()); this.customName = customNameMinecraft == null ? null : PaperAdventure.asAdventure(customNameMinecraft); if (customData.get("BukkitValues") instanceof CompoundTag compoundTag) { @@ -99,7 +98,7 @@ public class PurpurStoredBee implements StoredEntity { if(customName == null) { handle.occupant.entityData().copyTag().remove("CustomName"); } else { - handle.occupant.entityData().copyTag().putString("CustomName", net.minecraft.network.chat.Component.Serializer.toJson(PaperAdventure.asVanilla(customName), MinecraftServer.getDefaultRegistryAccess())); + handle.occupant.entityData().copyTag().putString("CustomName", net.minecraft.network.chat.Component.Serializer.toJson(PaperAdventure.asVanilla(customName), ((CraftWorld) blockStorage.getWorld()).getHandle().registryAccess())); } } } From 75c3c008c3eb6dd7c10aa91d39a7767da832ce08 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 30 Mar 2025 15:23:16 -0700 Subject: [PATCH 058/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@41a094cf move block data/state impl PaperMC/Paper@6b26b219 remove hardcoded durability from material --- gradle.properties | 2 +- .../files/src/main/java/org/bukkit/Material.java.patch | 2 +- .../sources/net/minecraft/world/item/ItemStack.java.patch | 2 +- .../sources/net/minecraft/world/level/Level.java.patch | 6 +++--- .../craftbukkit/block/{ => state}/CraftBeehive.java.patch | 4 ++-- .../craftbukkit/block/{ => state}/CraftConduit.java.patch | 6 +++--- .../bukkit/craftbukkit/entity/CraftHumanEntity.java.patch | 2 +- .../bukkit/craftbukkit/util/CraftMagicNumbers.java.patch | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) rename purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/{ => state}/CraftBeehive.java.patch (94%) rename purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/{ => state}/CraftConduit.java.patch (72%) diff --git a/gradle.properties b/gradle.properties index 0efe1d86b..39a1cbfe4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = a70f7745a81d43089944069d701d69ad811aa4f1 +paperCommit = 6b26b21940bda7e0947d80b9a18f208ee7d570d9 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch index 1e13c5b4a..4e068e234 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -3632,4 +_,40 @@ +@@ -3616,4 +_,40 @@ return this.asItemType().getDefaultDataTypes(); } // Paper end - data component API diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch index c40077a55..313c15cf7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch @@ -3,7 +3,7 @@ @@ -458,6 +_,7 @@ // revert back all captured blocks for (org.bukkit.block.BlockState blockstate : blocks) { - ((org.bukkit.craftbukkit.block.CraftBlockState) blockstate).revertPlace(); + ((org.bukkit.craftbukkit.block.state.CraftBlockState) blockstate).revertPlace(); + ((org.bukkit.craftbukkit.block.CraftBlock) blockstate.getBlock()).getNMS().getBlock().forgetPlacer(); // Purpur - Store placer on Block when placed } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch index 3d5c15c0b..73f664b3b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/Level.java +++ b/net/minecraft/world/level/Level.java -@@ -159,11 +_,55 @@ +@@ -158,11 +_,55 @@ } // Paper end - add paper world config @@ -56,7 +56,7 @@ public CraftWorld getWorld() { return this.world; } -@@ -207,6 +_,8 @@ +@@ -206,6 +_,8 @@ ) { this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config @@ -65,7 +65,7 @@ this.generator = gen; this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); -@@ -1413,4 +_,14 @@ +@@ -1412,4 +_,14 @@ return this.id; } } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/state/CraftBeehive.java.patch similarity index 94% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/state/CraftBeehive.java.patch index e8bb09a96..a589b7608 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/state/CraftBeehive.java.patch @@ -1,5 +1,5 @@ ---- a/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java +--- a/src/main/java/org/bukkit/craftbukkit/block/state/CraftBeehive.java ++++ b/src/main/java/org/bukkit/craftbukkit/block/state/CraftBeehive.java @@ -16,8 +_,15 @@ public class CraftBeehive extends CraftBlockEntityState implements Beehive { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/state/CraftConduit.java.patch similarity index 72% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/state/CraftConduit.java.patch index 355e42fa4..be1b1e7e6 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/state/CraftConduit.java.patch @@ -1,6 +1,6 @@ ---- a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java -@@ -73,7 +_,7 @@ +--- a/src/main/java/org/bukkit/craftbukkit/block/state/CraftConduit.java ++++ b/src/main/java/org/bukkit/craftbukkit/block/state/CraftConduit.java +@@ -74,7 +_,7 @@ public int getRange() { this.ensureNoWorldGeneration(); ConduitBlockEntity conduit = (ConduitBlockEntity) this.getBlockEntityFromWorld(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch index b7ffe4864..5c6badd7c 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -276,6 +_,7 @@ +@@ -277,6 +_,7 @@ @Override public void recalculatePermissions() { this.perm.recalculatePermissions(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch index 2caad1ea9..2a910b78f 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -481,7 +_,7 @@ +@@ -479,7 +_,7 @@ @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { From 81d1d39d86d699599e39b36d8e5e36f01349792e Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 31 Mar 2025 14:39:47 -0700 Subject: [PATCH 059/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@9b1798d6 Simplify custom payload handling (#12347) PaperMC/Paper@db8c646d Merge remote-tracking branch 'origin/main' into update/1.21.5 --- gradle.properties | 2 +- .../ServerCommonPacketListenerImpl.java.patch | 24 ++++++++++--------- ...0005-Add-EntityTeleportHinderedEvent.patch | 8 +++---- .../craftbukkit/entity/CraftPlayer.java.patch | 6 ++--- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/gradle.properties b/gradle.properties index 39a1cbfe4..18373f63f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = 6b26b21940bda7e0947d80b9a18f208ee7d570d9 +paperCommit = db8c646d00d3ede50650ae27c89fd66be3be89e6 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch index 4af510735..274dd957b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch @@ -33,18 +33,20 @@ if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) { int i = (int)(Util.getMillis() - this.keepAliveTime); this.latency = (this.latency * 3 + i) / 4; -@@ -159,6 +_,10 @@ - ServerGamePacketListenerImpl.LOGGER.error("Couldn't register custom payload", ex); - this.disconnect(Component.literal("Invalid payload REGISTER!"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause +@@ -169,6 +_,12 @@ + return; } -+ // Purpur start - Purpur client support -+ } else if (identifier.equals(PURPUR_CLIENT)) { -+ player.purpurClient = true; -+ // Purpur end - Purpur client support - } else if (identifier.equals(ServerCommonPacketListenerImpl.CUSTOM_UNREGISTER)) { - try { - String channels = payload.toString(java.nio.charset.StandardCharsets.UTF_8); -@@ -238,6 +_,22 @@ + ++ // Purpur start - Purpur client support ++ if (identifier.equals(PURPUR_CLIENT)) { ++ this.player.purpurClient = true; ++ } ++ // Purpur end - Purpur client support ++ + if (identifier.equals(MINECRAFT_BRAND)) { + this.player.clientBrandName = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256); + } +@@ -242,6 +_,22 @@ // 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 final long elapsedTime = millis - this.keepAliveTime; diff --git a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch index d08b9c1b0..f8f50cfdd 100644 --- a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0005-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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index e7fec5d2d54dc02bad76cb4100f597208ae46912..2344ee5f7c76d4c0eff375826e75cb97e104c3f1 100644 +index 67b9963afd91af84459d439697f6230fd67722b4..d8ed459b49624180e6939d9c5eefb453296f0559 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -264,6 +264,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -29,10 +29,10 @@ index e7fec5d2d54dc02bad76cb4100f597208ae46912..2344ee5f7c76d4c0eff375826e75cb97 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 9bea9f41cbffaacb77b27636086c57b6f8cb17d7..dcdf06516b0bcfaa191ed82f4236602710d11e44 100644 +index caa156cd56605f74888df6f64d7be310fd384f09..f4676ec9ab14d748c820169467a03fc5d1230302 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1422,6 +1422,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1421,6 +1421,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper start - Teleport passenger API // Don't allow teleporting between worlds while keeping passengers if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -40,7 +40,7 @@ index 9bea9f41cbffaacb77b27636086c57b6f8cb17d7..dcdf06516b0bcfaa191ed82f42366027 return false; } -@@ -1443,6 +1444,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1442,6 +1443,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 7b9f83223..9d0b268b4 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -592,10 +_,15 @@ +@@ -591,10 +_,15 @@ @Override public void setPlayerListName(String name) { @@ -17,7 +17,7 @@ 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)) { -@@ -2732,6 +_,28 @@ +@@ -2731,6 +_,28 @@ return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -46,7 +46,7 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3594,4 +_,76 @@ +@@ -3593,4 +_,76 @@ public void setSimplifyContainerDesyncCheck(final boolean simplifyContainerDesyncCheck) { this.simplifyContainerDesyncCheck = simplifyContainerDesyncCheck; } From b81ab4244055d5efb7a1acc95e97b71e51fbb9f5 Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 1 Apr 2025 22:26:42 -0700 Subject: [PATCH 060/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@cdad49b7 Do not mark plugin tickets as forced; keep correct ticket types PaperMC/Paper@a1c4fc96 Add generic ticket identifier PaperMC/Paper@745881bb Update Moonrise common for 1.21.5 PaperMC/Paper@e9d00eb6 Apply Moonrise patch PaperMC/Paper@ef0f0d10 Copy Moonrise 1.21.5 update over --- gradle.properties | 2 +- .../features/0001-Ridables.patch | 18 ++++----- ...-Minecart-settings-and-WASD-controls.patch | 4 +- ...urable-void-damage-height-and-damage.patch | 6 +-- ...019-API-for-any-mob-to-burn-daylight.patch | 4 +- .../server/MinecraftServer.java.patch | 16 ++++---- .../server/level/ServerLevel.java.patch | 26 ++++++------- .../server/level/ServerPlayer.java.patch | 28 +++++++------- .../server/level/WorldGenRegion.java.patch | 2 +- .../minecraft/world/entity/Entity.java.patch | 38 +++++++++---------- .../world/level/EntityGetter.java.patch | 2 +- .../minecraft/world/level/Level.java.patch | 8 ++-- .../world/level/ServerExplosion.java.patch | 10 ++--- .../storage/RegionFileStorage.java.patch | 2 +- .../level/material/FlowingFluid.java.patch | 4 +- 15 files changed, 85 insertions(+), 85 deletions(-) diff --git a/gradle.properties b/gradle.properties index 18373f63f..087c5a8d8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = db8c646d00d3ede50650ae27c89fd66be3be89e6 +paperCommit = ef0f0d101f97523b7b2df22fa90c04951bb48bca org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 42ca26732..a83e38881 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -18,10 +18,10 @@ index fa7a2a85adf7758a753c54a7cf75cc667922d3d7..b0a86aac9603e72062f59dbe67c88ed8 public boolean isClientAuthoritative() { return false; diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index f34bc75f324454bf48f0ebf79111706bb027a54b..6ad266592c16bdeccfb689fb2ef2ee37e79a7b41 100644 +index f9aa990f0efa7abb681dd82fd5c8be9f8fcf917a..be8be8e3da80823917633de22985f7f4ef26dfe6 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1634,6 +1634,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - BlockPhysicsEvent serverLevel.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent serverLevel.updateLagCompensationTick(); // Paper - lag compensation @@ -30,7 +30,7 @@ index f34bc75f324454bf48f0ebf79111706bb027a54b..6ad266592c16bdeccfb689fb2ef2ee37 /* Drop global time updates if (this.tickCount % 20 == 0) { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 0e7405a480bffa81493ef2f2078c36ccda542cde..bc5c30430e79e2feb69c165d9e3e9b6a899b66ea 100644 +index 6e314abd57045693fd6016bce2b791eb68e40bb5..9b35652ed35c0b7ddb200239d932c83945ea4575 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -212,6 +212,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -42,10 +42,10 @@ index 0e7405a480bffa81493ef2f2078c36ccda542cde..bc5c30430e79e2feb69c165d9e3e9b6a @Override public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 839975cf328268e1f476f5c59e3323a395929395..bba6b5234b668827f90991e4885b5e19c2f97728 100644 +index 6f2640c7d7df73fc4ef5ad3f0b232bb3c4c4da47..86964fd2231bca608c2cb3155f70086e893dc1f7 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -764,6 +764,15 @@ public class ServerPlayer extends Player { +@@ -794,6 +794,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.trackEnteredOrExitedLavaOnVehicle(); this.updatePlayerAttributes(); this.advancements.flushDirty(this, true); @@ -75,10 +75,10 @@ index 63e01ec7e4ab04bb7d389bff485dfedca344bfa2..84b1570d0d88f57f33ff8179f0a78d37 if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index d1899b2411e90b4641dcbc58760e4a19b62846c5..1335a04edd053c06e290c070e3c03d02598d97e7 100644 +index f6edaef36f55ef971386972b8c80d70aa4883ec7..6d18921bf283dac5279c82ae0562927db0f7f14f 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -2856,6 +2856,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3093,6 +3093,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -92,7 +92,7 @@ index d1899b2411e90b4641dcbc58760e4a19b62846c5..1335a04edd053c06e290c070e3c03d02 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -2897,6 +2904,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3134,6 +3141,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -107,7 +107,7 @@ index d1899b2411e90b4641dcbc58760e4a19b62846c5..1335a04edd053c06e290c070e3c03d02 if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -4823,4 +4838,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5136,4 +5151,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter diff --git a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch index 0a4a90726..ccaa98230 100644 --- a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch +++ b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 6c5dab657ae7a7f5fd6fb73a86b3e8e4803dae50..998ce3a34e48e56cd907fc61cc3715518cbfae28 100644 +index 86964fd2231bca608c2cb3155f70086e893dc1f7..786222aeb501fb31e0d77661b87e8d097c88b8b7 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -1153,6 +1153,11 @@ public class ServerPlayer extends Player { +@@ -1183,6 +1183,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc } else { // Purpur start - Add boat fall damage config if (damageSource.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) { diff --git a/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch b/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch index a4f3ae80d..669a840ee 100644 --- a/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch +++ b/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch @@ -7,10 +7,10 @@ temporarily migrate to paper's config drop patch on the next minecraft release diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 6ad266592c16bdeccfb689fb2ef2ee37e79a7b41..e950e74d7c14d2e180e5ca879eb1048866d85051 100644 +index be8be8e3da80823917633de22985f7f4ef26dfe6..195dd839c50f5a86dffcbd3b6b82b5fb30a54e16 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1140,6 +1140,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 1335a04edd053c06e290c070e3c03d02598d97e7..7148e8c6deeb1e5f99eb6d2fe6c0fc9583e44934 100644 +index 6d18921bf283dac5279c82ae0562927db0f7f14f..f55db145661cab3cfc9ffa755792be2c3d80f50a 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -415,6 +415,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -521,6 +521,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Purpur end - Add canSaveToDisk to Entity diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch index d8bcaa293..0520cddbd 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch @@ -26,7 +26,7 @@ public static S spin(Function threadFunction) { AtomicReference atomicReference = new AtomicReference<>(); -@@ -917,6 +_,15 @@ +@@ -993,6 +_,15 @@ LOGGER.info("Stopping server"); Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing @@ -42,7 +42,7 @@ // CraftBukkit start if (this.server != null) { this.server.spark.disable(); // Paper - spark -@@ -1011,6 +_,8 @@ +@@ -1091,6 +_,8 @@ this.safeShutdown(waitForServer, false); } public void safeShutdown(boolean waitForServer, boolean isRestarting) { @@ -51,7 +51,7 @@ this.isRestarting = isRestarting; this.hasLoggedStop = true; // Paper - Debugging if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging -@@ -1030,6 +_,7 @@ +@@ -1110,6 +_,7 @@ private static final long MAX_CATCHUP_BUFFER = TICK_TIME * TPS * 60L; private long lastTick = 0; private long catchupTime = 0; @@ -59,7 +59,7 @@ public final RollingAverage tps1 = new RollingAverage(60); public final RollingAverage tps5 = new RollingAverage(60 * 5); public final RollingAverage tps15 = new RollingAverage(60 * 15); -@@ -1115,6 +_,16 @@ +@@ -1195,6 +_,16 @@ } // Paper end - Add onboarding message for initial server start @@ -76,7 +76,7 @@ while (this.running) { long l; if (!this.isPaused() && this.tickRateManager.isSprinting() && this.tickRateManager.checkShouldSprintThisTick()) { -@@ -1139,14 +_,19 @@ +@@ -1219,14 +_,19 @@ if (++MinecraftServer.currentTick % MinecraftServer.SAMPLE_INTERVAL == 0) { final long diff = currentTime - tickSection; final java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP); @@ -99,7 +99,7 @@ tickSection = currentTime; } // Paper end - further improve server tick loop -@@ -1171,6 +_,12 @@ +@@ -1258,6 +_,12 @@ profilerFiller.popPush("nextTickWait"); this.mayHaveDelayedTasks = true; this.delayedTasksMaxNextTickTimeNanos = Math.max(Util.getNanos() + l, this.nextTickTimeNanos); @@ -112,7 +112,7 @@ this.startMeasuringTaskExecutionTime(); this.waitUntilNextTick(); this.finishMeasuringTaskExecutionTime(); -@@ -1580,7 +_,7 @@ +@@ -1668,7 +_,7 @@ long worldTime = level.getGameTime(); final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight); for (Player entityhuman : level.players()) { @@ -121,7 +121,7 @@ continue; } ServerPlayer entityplayer = (ServerPlayer) entityhuman; -@@ -1744,7 +_,7 @@ +@@ -1832,7 +_,7 @@ @DontObfuscate public String getServerModName() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch index 3cbe73dea..a00c292c5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch @@ -9,7 +9,7 @@ private final RandomSequences randomSequences; // CraftBukkit start -@@ -350,7 +_,24 @@ +@@ -586,7 +_,24 @@ // CraftBukkit end this.tickTime = tickTime; this.server = server; @@ -35,15 +35,15 @@ this.serverLevelData = serverLevelData; ChunkGenerator chunkGenerator = levelStem.generator(); // CraftBukkit start -@@ -431,6 +_,7 @@ - this.gameEventDispatcher = new GameEventDispatcher(this); - this.randomSequences = Objects.requireNonNullElseGet(randomSequences, () -> this.getDataStorage().computeIfAbsent(RandomSequences.TYPE)); +@@ -670,6 +_,7 @@ + this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler); + // Paper end - rewrite chunk system this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit + this.preciseTime = this.serverLevelData.getDayTime(); // Purpur - Configurable daylight cycle } // Paper start -@@ -477,7 +_,7 @@ +@@ -716,7 +_,7 @@ } int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); @@ -52,7 +52,7 @@ // Paper start - create time skip event - move up calculations final long newDayTime = this.levelData.getDayTime() + 24000L; org.bukkit.event.world.TimeSkipEvent event = new org.bukkit.event.world.TimeSkipEvent( -@@ -594,6 +_,13 @@ +@@ -835,6 +_,13 @@ this.serverLevelData.getScheduledEvents().tick(this.server, l); Profiler.get().pop(); if (this.serverLevelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { @@ -66,7 +66,7 @@ this.setDayTime(this.levelData.getDayTime() + 1L); } } -@@ -601,7 +_,21 @@ +@@ -842,7 +_,21 @@ public void setDayTime(long time) { this.serverLevelData.setDayTime(time); @@ -89,7 +89,7 @@ public void tickCustomSpawners(boolean spawnEnemies, boolean spawnFriendlies) { for (CustomSpawner customSpawner : this.customSpawners) { -@@ -678,9 +_,17 @@ +@@ -946,9 +_,17 @@ && this.random.nextDouble() < currentDifficultyAt.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01) // Paper - Configurable spawn chances for skeleton horses && !this.getBlockState(blockPos.below()).is(Blocks.LIGHTNING_ROD); if (flag) { @@ -109,7 +109,7 @@ skeletonHorse.setAge(0); skeletonHorse.setPos(blockPos.getX(), blockPos.getY(), blockPos.getZ()); this.addFreshEntity(skeletonHorse, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit -@@ -738,7 +_,7 @@ +@@ -1006,7 +_,7 @@ pointOfInterestType -> pointOfInterestType.is(PoiTypes.LIGHTNING_ROD), blockPos -> blockPos.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockPos.getX(), blockPos.getZ()) - 1, pos, @@ -118,7 +118,7 @@ PoiManager.Occupancy.ANY ); return optional.map(blockPos -> blockPos.above(1)); -@@ -787,8 +_,26 @@ +@@ -1055,8 +_,26 @@ int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); Component component; if (this.sleepStatus.areEnoughSleeping(_int)) { @@ -145,7 +145,7 @@ component = Component.translatable("sleep.players_sleeping", this.sleepStatus.amountSleeping(), this.sleepStatus.sleepersNeeded(_int)); } -@@ -921,6 +_,7 @@ +@@ -1189,6 +_,7 @@ @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -153,7 +153,7 @@ 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.... -@@ -928,6 +_,7 @@ +@@ -1196,6 +_,7 @@ this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -161,7 +161,7 @@ this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. -@@ -2331,7 +_,7 @@ +@@ -2644,7 +_,7 @@ // 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/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index aa58ba378..4a4357c13 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -9,9 +9,9 @@ + private boolean compassBar = false; // Purpur - Add compass command + private boolean ramBar = false; // Purpur - Implement rambar commands - public ServerPlayer(MinecraftServer server, ServerLevel level, GameProfile gameProfile, ClientInformation clientInformation) { - super(level, level.getSharedSpawnPos(), level.getSharedSpawnAngle(), gameProfile); -@@ -525,6 +_,10 @@ + // Paper start - rewrite chunk system + private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; +@@ -555,6 +_,10 @@ this.respawnConfig = compound.read("respawn", ServerPlayer.RespawnConfig.CODEC).orElse(null); this.spawnExtraParticlesOnFall = compound.getBooleanOr("spawn_extra_particles_on_fall", false); this.raidOmenPosition = compound.read("raid_omen_position", BlockPos.CODEC).orElse(null); @@ -22,7 +22,7 @@ } @Override -@@ -542,6 +_,9 @@ +@@ -572,6 +_,9 @@ compound.storeNullable("raid_omen_position", BlockPos.CODEC, this.raidOmenPosition); this.saveEnderPearls(compound); this.getBukkitEntity().setExtraData(compound); // CraftBukkit @@ -32,7 +32,7 @@ } private void saveParentVehicle(CompoundTag tag) { -@@ -1024,6 +_,7 @@ +@@ -1054,6 +_,7 @@ ) ); Team team = this.getTeam(); @@ -40,7 +40,7 @@ if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) { this.server.getPlayerList().broadcastSystemMessage(deathMessage, false); } else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { -@@ -1130,6 +_,13 @@ +@@ -1160,6 +_,13 @@ if (this.isInvulnerableTo(level, damageSource)) { return false; } else { @@ -54,7 +54,7 @@ Entity entity = damageSource.getEntity(); if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. !(entity instanceof Player player && !this.canHarmPlayer(player)) -@@ -1360,6 +_,7 @@ +@@ -1390,6 +_,7 @@ serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -62,7 +62,7 @@ this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1477,7 +_,7 @@ +@@ -1507,7 +_,7 @@ new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), monster -> monster.isPreventingPlayerRest(this.serverLevel(), this) ); @@ -71,7 +71,7 @@ return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1514,7 +_,19 @@ +@@ -1544,7 +_,19 @@ CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); if (!this.serverLevel().canSleepThroughNights()) { @@ -92,7 +92,7 @@ } ((ServerLevel)this.level()).updateSleepingPlayerList(); -@@ -1606,6 +_,7 @@ +@@ -1636,6 +_,7 @@ @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -100,7 +100,7 @@ this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -1908,6 +_,26 @@ +@@ -1938,6 +_,26 @@ this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -127,7 +127,7 @@ @Override public void displayClientMessage(Component chatComponent, boolean actionBar) { this.sendSystemMessage(chatComponent, actionBar); -@@ -2125,6 +_,20 @@ +@@ -2155,6 +_,20 @@ ); } @@ -148,7 +148,7 @@ public void sendSystemMessage(Component mesage) { this.sendSystemMessage(mesage, false); } -@@ -2263,7 +_,67 @@ +@@ -2293,7 +_,67 @@ public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -217,7 +217,7 @@ public ServerStatsCounter getStats() { return this.stats; -@@ -2891,4 +_,56 @@ +@@ -2921,4 +_,56 @@ return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch index fb3d981ba..ab71931ac 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/level/WorldGenRegion.java +++ b/net/minecraft/server/level/WorldGenRegion.java -@@ -284,6 +_,7 @@ +@@ -314,6 +_,7 @@ return true; } else { // Paper start - Buffer OOB setBlock calls diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 5e0bd604b..be9092f45 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -3,12 +3,12 @@ @@ -141,6 +_,7 @@ import org.jetbrains.annotations.Contract; - public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, ScoreHolder, DataComponentGetter { + public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, ScoreHolder, DataComponentGetter, ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity, ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerEntity { // Paper - rewrite chunk system // Paper - optimise entity tracker + public static javax.script.ScriptEngine scriptEngine = new javax.script.ScriptEngineManager().getEngineByName("rhino"); // Purpur - Configurable entity base attributes // CraftBukkit start private static final org.slf4j.Logger LOGGER = com.mojang.logging.LogUtils.getLogger(); private static final int CURRENT_LEVEL = 2; -@@ -304,8 +_,9 @@ +@@ -260,8 +_,9 @@ public double xOld; public double yOld; public double zOld; @@ -19,7 +19,7 @@ public int tickCount; private int remainingFireTicks = -this.getFireImmuneTicks(); public boolean wasTouchingWater; -@@ -339,8 +_,8 @@ +@@ -295,8 +_,8 @@ public PortalProcessor portalProcess; public int portalCooldown; private boolean invulnerable; @@ -30,7 +30,7 @@ private boolean hasGlowingTag; private final Set tags = new io.papermc.paper.util.SizeLimitedSet<>(new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(), MAX_ENTITY_TAG_COUNT); // Paper - fully limit tag size - replace set impl private final double[] pistonDeltas = new double[]{0.0, 0.0, 0.0}; -@@ -394,6 +_,7 @@ +@@ -350,6 +_,7 @@ public long activatedTick = Integer.MIN_VALUE; public boolean isTemporarilyActive; public long activatedImmunityTick = Integer.MIN_VALUE; @@ -38,9 +38,9 @@ public void inactiveTick() { } -@@ -406,10 +_,21 @@ +@@ -512,10 +_,21 @@ } - // Paper end + // Paper end - optimise entity tracker + // Purpur start - Add canSaveToDisk to Entity + public boolean canSaveToDisk() { @@ -60,7 +60,7 @@ this.position = Vec3.ZERO; this.blockPosition = BlockPos.ZERO; this.chunkPosition = ChunkPos.ZERO; -@@ -779,6 +_,7 @@ +@@ -885,6 +_,7 @@ && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage @@ -68,7 +68,7 @@ this.onBelowWorld(); } } -@@ -1682,7 +_,7 @@ +@@ -1830,7 +_,7 @@ } public boolean fireImmune() { @@ -77,7 +77,7 @@ } public boolean causeFallDamage(double fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -1742,7 +_,7 @@ +@@ -1890,7 +_,7 @@ return this.isInWater() || flag; } @@ -86,7 +86,7 @@ if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { this.wasTouchingWater = false; } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) { -@@ -2364,6 +_,13 @@ +@@ -2512,6 +_,13 @@ compound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -100,7 +100,7 @@ return compound; } catch (Throwable var8) { CrashReport crashReport = CrashReport.forThrowable(var8, "Saving entity NBT"); -@@ -2481,6 +_,13 @@ +@@ -2629,6 +_,13 @@ freezeLocked = compound.getBooleanOr("Paper.FreezeLock", false); } // Paper end @@ -114,7 +114,7 @@ } catch (Throwable var8) { CrashReport crashReport = CrashReport.forThrowable(var8, "Loading entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); -@@ -2620,6 +_,7 @@ +@@ -2857,6 +_,7 @@ if (this.isAlive() && this instanceof Leashable leashable) { if (leashable.getLeashHolder() == player) { if (!this.level().isClientSide()) { @@ -122,7 +122,7 @@ // CraftBukkit start - fire PlayerUnleashEntityEvent // Paper start - Expand EntityUnleashEvent org.bukkit.event.player.PlayerUnleashEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials()); -@@ -2936,15 +_,18 @@ +@@ -3173,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } @@ -142,7 +142,7 @@ } } } -@@ -3149,7 +_,7 @@ +@@ -3386,7 +_,7 @@ } public int getMaxAirSupply() { @@ -151,7 +151,7 @@ } public int getAirSupply() { -@@ -3677,7 +_,7 @@ +@@ -3914,7 +_,7 @@ // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -160,7 +160,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4212,6 +_,12 @@ +@@ -4451,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -170,10 +170,10 @@ + } + // Purpur end - Stop squids floating on top of water + - public boolean updateFluidHeightAndDoFluidPushing(TagKey fluidTag, double motionScale) { + // Paper start - optimise collisions + public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { - return false; -@@ -4552,7 +_,7 @@ +@@ -4859,7 +_,7 @@ } public float maxUpStep() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch index e1a0fd757..73e6f74b1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/EntityGetter.java +++ b/net/minecraft/world/level/EntityGetter.java -@@ -144,7 +_,7 @@ +@@ -185,7 +_,7 @@ default boolean hasNearbyAlivePlayer(double x, double y, double z, double distance) { for (Player player : this.players()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch index 73f664b3b..aec323987 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/Level.java +++ b/net/minecraft/world/level/Level.java -@@ -158,11 +_,55 @@ +@@ -159,11 +_,55 @@ } // Paper end - add paper world config @@ -56,8 +56,8 @@ public CraftWorld getWorld() { return this.world; } -@@ -206,6 +_,8 @@ - ) { +@@ -839,6 +_,8 @@ + // Paper end - getblock optimisations - cache world height/sections this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).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) levelData).getLevelName(), env); // Purpur - Purpur config files @@ -65,7 +65,7 @@ this.generator = gen; this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); -@@ -1412,4 +_,14 @@ +@@ -2115,4 +_,14 @@ return this.id; } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch index f4e8e281f..4bfdc6d8f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/ServerExplosion.java +++ b/net/minecraft/world/level/ServerExplosion.java -@@ -73,7 +_,7 @@ +@@ -316,7 +_,7 @@ ) { this.level = level; this.source = source; @@ -9,7 +9,7 @@ this.center = center; this.fire = fire; this.blockInteraction = blockInteraction; -@@ -356,10 +_,27 @@ +@@ -638,10 +_,27 @@ public void explode() { // CraftBukkit start @@ -35,6 +35,6 @@ + } + } + // Purpur end - Add PreExplodeEvents - this.level.gameEvent(this.source, GameEvent.EXPLODE, this.center); - List list = this.calculateExplodedPositions(); - this.hurtEntities(); + // Paper start - collision optimisations + this.blockCache = new it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap<>(); + this.chunkPosCache = new long[CHUNK_CACHE_WIDTH * CHUNK_CACHE_WIDTH]; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch index f9e571450..70c25914a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +++ b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -@@ -49,7 +_,7 @@ +@@ -238,7 +_,7 @@ // Paper start private static void printOversizedLog(String msg, Path file, int x, int z) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch index a2b76868b..78e131bae 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/material/FlowingFluid.java +++ b/net/minecraft/world/level/material/FlowingFluid.java -@@ -190,7 +_,7 @@ +@@ -232,7 +_,7 @@ } } @@ -9,7 +9,7 @@ BlockState blockState1 = level.getBlockState(mutableBlockPos.setWithOffset(pos, Direction.DOWN)); FluidState fluidState1 = blockState1.getFluidState(); if (blockState1.isSolid() || this.isSourceBlockOfThisType(fluidState1)) { -@@ -267,6 +_,12 @@ +@@ -319,6 +_,12 @@ } protected abstract boolean canConvertToSource(ServerLevel level); From 54283ad076012dd5308b92f2469c842ad054a782 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 5 Apr 2025 20:54:04 -0700 Subject: [PATCH 061/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@cc0f25cb Apply more feature patches PaperMC/Paper@e7b684ed fix PaperMC/Paper@71ccae07 Revert "move block data/state impl" PaperMC/Paper@7612b5d0 Add identifier comparator for Plugin tickets PaperMC/Paper@35b466e3 Add support for getting data components from entities PaperMC/Paper@9f50f858 patch PaperMC/Paper@42623c4b no patch --- gradle.properties | 2 +- .../java/org/bukkit/entity/Entity.java.patch | 2 +- .../org/bukkit/inventory/ItemStack.java.patch | 4 +-- .../features/0001-Ridables.patch | 22 ++++++------- .../0003-Barrels-and-enderchests-6-rows.patch | 4 +-- ...-Minecart-settings-and-WASD-controls.patch | 4 +-- .../server/MinecraftServer.java.patch | 4 +-- .../server/level/ServerLevel.java.patch | 22 ++++++------- .../server/level/ServerPlayer.java.patch | 26 +++++++-------- .../ServerGamePacketListenerImpl.java.patch | 32 +++++++++---------- .../server/players/PlayerList.java.patch | 8 ++--- .../entity/ai/behavior/AcquirePoi.java.patch | 16 +++++----- .../ai/sensing/NearestBedSensor.java.patch | 18 +++++------ .../minecraft/world/item/ItemStack.java.patch | 4 +-- .../world/item/crafting/Ingredient.java.patch | 10 +++--- .../minecraft/world/level/Level.java.patch | 6 ++-- .../world/level/NaturalSpawner.java.patch | 2 +- .../level/block/entity/BlockEntity.java.patch | 6 ++-- .../chunk/storage/EntityStorage.java.patch | 6 ++-- .../storage/RegionFileStorage.java.patch | 2 +- .../features/0002-Ridables.patch | 9 +++--- ...0005-Add-EntityTeleportHinderedEvent.patch | 6 ++-- ...006-API-for-any-mob-to-burn-daylight.patch | 4 +-- .../block/{state => }/CraftBeehive.java.patch | 4 +-- .../block/{state => }/CraftConduit.java.patch | 6 ++-- .../craftbukkit/entity/CraftEntity.java.patch | 2 +- .../entity/CraftHumanEntity.java.patch | 2 +- .../util/CraftMagicNumbers.java.patch | 2 +- 28 files changed, 117 insertions(+), 118 deletions(-) rename purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/{state => }/CraftBeehive.java.patch (94%) rename purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/{state => }/CraftConduit.java.patch (72%) diff --git a/gradle.properties b/gradle.properties index 087c5a8d8..c730223d1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = ef0f0d101f97523b7b2df22fa90c04951bb48bca +paperCommit = 42623c4b27f579d874cab29bed7477608135c018 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch index 9f2167d47..2759f0288 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1214,4 +_,59 @@ +@@ -1215,4 +_,59 @@ */ void broadcastHurtAnimation(@NotNull java.util.Collection players); // Paper end - broadcast hurt animation diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch index 24a90431c..5c0dae4d0 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java -@@ -22,6 +_,13 @@ +@@ -23,6 +_,13 @@ import org.bukkit.persistence.PersistentDataContainer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -14,7 +14,7 @@ /** * Represents a stack of items. -@@ -1371,4 +_,482 @@ +@@ -1372,4 +_,482 @@ return this.craftDelegate.matchesWithoutData(item, excludeTypes, ignoreCount); } // Paper end - data component API diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index a83e38881..84cecd141 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -18,34 +18,34 @@ index fa7a2a85adf7758a753c54a7cf75cc667922d3d7..b0a86aac9603e72062f59dbe67c88ed8 public boolean isClientAuthoritative() { return false; diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index f9aa990f0efa7abb681dd82fd5c8be9f8fcf917a..be8be8e3da80823917633de22985f7f4ef26dfe6 100644 +index 924dc9a32cd78f37078ff47cde54e61844572f47..d1e33c3ed23f4c68694ec3628c64e87dcbc916d9 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1722,6 +1722,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - BlockPhysicsEvent +@@ -1743,6 +1743,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent serverLevel.updateLagCompensationTick(); // Paper - lag compensation + net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers + serverLevel.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur - Ridables profilerFiller.push(() -> serverLevel + " " + serverLevel.dimension().location()); /* Drop global time updates if (this.tickCount % 20 == 0) { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 6e314abd57045693fd6016bce2b791eb68e40bb5..9b35652ed35c0b7ddb200239d932c83945ea4575 100644 +index 17d021c341fb382768a0e8971bd559a11804151f..9de064829001199d6cd1bbeac05b6ee7c3000e4b 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -212,6 +212,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - public final java.util.UUID uuid; +@@ -213,6 +213,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe 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) + public boolean hasRidableMoveEvent = false; // Purpur - Ridables @Override public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 6f2640c7d7df73fc4ef5ad3f0b232bb3c4c4da47..86964fd2231bca608c2cb3155f70086e893dc1f7 100644 +index 77f4d37866b74bb3865afe80b516af724cacd0be..efea20895bc45d63621dd130fc05922ba1e10f87 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -794,6 +794,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -800,6 +800,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.trackEnteredOrExitedLavaOnVehicle(); this.updatePlayerAttributes(); this.advancements.flushDirty(this, true); @@ -62,10 +62,10 @@ index 6f2640c7d7df73fc4ef5ad3f0b232bb3c4c4da47..86964fd2231bca608c2cb3155f70086e private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 63e01ec7e4ab04bb7d389bff485dfedca344bfa2..84b1570d0d88f57f33ff8179f0a78d37b495a217 100644 +index db53f813d4b433f9a07a4d3169cd4fba94951c1b..6ba184b5314356214e9ff9508fba57150d92d87a 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2766,6 +2766,8 @@ public class ServerGamePacketListenerImpl +@@ -2836,6 +2836,8 @@ public class ServerGamePacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -75,7 +75,7 @@ index 63e01ec7e4ab04bb7d389bff485dfedca344bfa2..84b1570d0d88f57f33ff8179f0a78d37 if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index f6edaef36f55ef971386972b8c80d70aa4883ec7..6d18921bf283dac5279c82ae0562927db0f7f14f 100644 +index 500e542fa81de7b14cd86c23ce039951d8dc0f95..1edca56b4bf880460148d00b98225fc34bd15f17 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -3093,6 +3093,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch index 3650fe2a9..ca3313ce5 100644 --- a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch +++ b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index ccea424d813a4c137fa15612b7bcf4fdb5c9a811..a1304bc3b1ebb9fa246004ae418481d48c46975c 100644 +index 0fd27e1b01801d418ce9e96ec23dd746484351a4..1ad7747379d60d49f8c27a078b2ae798c8e5d41c 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -1029,6 +1029,27 @@ public abstract class PlayerList { +@@ -1030,6 +1030,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API diff --git a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch index ccaa98230..d1e04e141 100644 --- a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch +++ b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 86964fd2231bca608c2cb3155f70086e893dc1f7..786222aeb501fb31e0d77661b87e8d097c88b8b7 100644 +index efea20895bc45d63621dd130fc05922ba1e10f87..5e92affba115662a8b16c7f15971e1770f29cbfd 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -1183,6 +1183,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1189,6 +1189,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc } else { // Purpur start - Add boat fall damage config if (damageSource.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch index 0520cddbd..4d8cfe0ec 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch @@ -112,7 +112,7 @@ this.startMeasuringTaskExecutionTime(); this.waitUntilNextTick(); this.finishMeasuringTaskExecutionTime(); -@@ -1668,7 +_,7 @@ +@@ -1688,7 +_,7 @@ long worldTime = level.getGameTime(); final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight); for (Player entityhuman : level.players()) { @@ -121,7 +121,7 @@ continue; } ServerPlayer entityplayer = (ServerPlayer) entityhuman; -@@ -1832,7 +_,7 @@ +@@ -1853,7 +_,7 @@ @DontObfuscate public String getServerModName() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch index a00c292c5..f2fdcb6c2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch @@ -9,7 +9,7 @@ private final RandomSequences randomSequences; // CraftBukkit start -@@ -586,7 +_,24 @@ +@@ -587,7 +_,24 @@ // CraftBukkit end this.tickTime = tickTime; this.server = server; @@ -35,7 +35,7 @@ this.serverLevelData = serverLevelData; ChunkGenerator chunkGenerator = levelStem.generator(); // CraftBukkit start -@@ -670,6 +_,7 @@ +@@ -671,6 +_,7 @@ this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler); // Paper end - rewrite chunk system this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit @@ -43,7 +43,7 @@ } // Paper start -@@ -716,7 +_,7 @@ +@@ -717,7 +_,7 @@ } int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); @@ -52,7 +52,7 @@ // Paper start - create time skip event - move up calculations final long newDayTime = this.levelData.getDayTime() + 24000L; org.bukkit.event.world.TimeSkipEvent event = new org.bukkit.event.world.TimeSkipEvent( -@@ -835,6 +_,13 @@ +@@ -836,6 +_,13 @@ this.serverLevelData.getScheduledEvents().tick(this.server, l); Profiler.get().pop(); if (this.serverLevelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { @@ -66,7 +66,7 @@ this.setDayTime(this.levelData.getDayTime() + 1L); } } -@@ -842,7 +_,21 @@ +@@ -843,7 +_,21 @@ public void setDayTime(long time) { this.serverLevelData.setDayTime(time); @@ -89,7 +89,7 @@ public void tickCustomSpawners(boolean spawnEnemies, boolean spawnFriendlies) { for (CustomSpawner customSpawner : this.customSpawners) { -@@ -946,9 +_,17 @@ +@@ -947,9 +_,17 @@ && this.random.nextDouble() < currentDifficultyAt.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01) // Paper - Configurable spawn chances for skeleton horses && !this.getBlockState(blockPos.below()).is(Blocks.LIGHTNING_ROD); if (flag) { @@ -109,7 +109,7 @@ skeletonHorse.setAge(0); skeletonHorse.setPos(blockPos.getX(), blockPos.getY(), blockPos.getZ()); this.addFreshEntity(skeletonHorse, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit -@@ -1006,7 +_,7 @@ +@@ -1007,7 +_,7 @@ pointOfInterestType -> pointOfInterestType.is(PoiTypes.LIGHTNING_ROD), blockPos -> blockPos.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockPos.getX(), blockPos.getZ()) - 1, pos, @@ -118,7 +118,7 @@ PoiManager.Occupancy.ANY ); return optional.map(blockPos -> blockPos.above(1)); -@@ -1055,8 +_,26 @@ +@@ -1056,8 +_,26 @@ int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); Component component; if (this.sleepStatus.areEnoughSleeping(_int)) { @@ -145,7 +145,7 @@ component = Component.translatable("sleep.players_sleeping", this.sleepStatus.amountSleeping(), this.sleepStatus.sleepersNeeded(_int)); } -@@ -1189,6 +_,7 @@ +@@ -1190,6 +_,7 @@ @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -153,7 +153,7 @@ 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.... -@@ -1196,6 +_,7 @@ +@@ -1197,6 +_,7 @@ this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -161,7 +161,7 @@ this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. -@@ -2644,7 +_,7 @@ +@@ -2674,7 +_,7 @@ // 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/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index 4a4357c13..325138081 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -422,6 +_,10 @@ +@@ -428,6 +_,10 @@ public @Nullable com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent public @Nullable String clientBrandName = null; // Paper - Brand support public @Nullable 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 @@ -11,7 +11,7 @@ // Paper start - rewrite chunk system private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; -@@ -555,6 +_,10 @@ +@@ -561,6 +_,10 @@ this.respawnConfig = compound.read("respawn", ServerPlayer.RespawnConfig.CODEC).orElse(null); this.spawnExtraParticlesOnFall = compound.getBooleanOr("spawn_extra_particles_on_fall", false); this.raidOmenPosition = compound.read("raid_omen_position", BlockPos.CODEC).orElse(null); @@ -22,7 +22,7 @@ } @Override -@@ -572,6 +_,9 @@ +@@ -578,6 +_,9 @@ compound.storeNullable("raid_omen_position", BlockPos.CODEC, this.raidOmenPosition); this.saveEnderPearls(compound); this.getBukkitEntity().setExtraData(compound); // CraftBukkit @@ -32,7 +32,7 @@ } private void saveParentVehicle(CompoundTag tag) { -@@ -1054,6 +_,7 @@ +@@ -1060,6 +_,7 @@ ) ); Team team = this.getTeam(); @@ -40,7 +40,7 @@ if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) { this.server.getPlayerList().broadcastSystemMessage(deathMessage, false); } else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { -@@ -1160,6 +_,13 @@ +@@ -1166,6 +_,13 @@ if (this.isInvulnerableTo(level, damageSource)) { return false; } else { @@ -54,7 +54,7 @@ Entity entity = damageSource.getEntity(); if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. !(entity instanceof Player player && !this.canHarmPlayer(player)) -@@ -1390,6 +_,7 @@ +@@ -1396,6 +_,7 @@ serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -62,7 +62,7 @@ this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1507,7 +_,7 @@ +@@ -1513,7 +_,7 @@ new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), monster -> monster.isPreventingPlayerRest(this.serverLevel(), this) ); @@ -71,7 +71,7 @@ return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1544,7 +_,19 @@ +@@ -1550,7 +_,19 @@ CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); if (!this.serverLevel().canSleepThroughNights()) { @@ -92,7 +92,7 @@ } ((ServerLevel)this.level()).updateSleepingPlayerList(); -@@ -1636,6 +_,7 @@ +@@ -1642,6 +_,7 @@ @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -100,7 +100,7 @@ this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -1938,6 +_,26 @@ +@@ -1944,6 +_,26 @@ this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -127,7 +127,7 @@ @Override public void displayClientMessage(Component chatComponent, boolean actionBar) { this.sendSystemMessage(chatComponent, actionBar); -@@ -2155,6 +_,20 @@ +@@ -2161,6 +_,20 @@ ); } @@ -148,7 +148,7 @@ public void sendSystemMessage(Component mesage) { this.sendSystemMessage(mesage, false); } -@@ -2293,7 +_,67 @@ +@@ -2299,7 +_,67 @@ public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -217,7 +217,7 @@ public ServerStatsCounter getStats() { return this.stats; -@@ -2921,4 +_,56 @@ +@@ -2927,4 +_,56 @@ return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index d47e5e7b1..99ecda35c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -34,7 +34,7 @@ this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854 this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause } -@@ -615,6 +_,8 @@ +@@ -624,6 +_,8 @@ this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -43,7 +43,7 @@ Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -671,6 +_,7 @@ +@@ -703,6 +_,7 @@ PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); if (packet.getId() == this.awaitingTeleport) { if (this.awaitingPositionFromClient == null) { @@ -51,7 +51,7 @@ this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause return; } -@@ -1199,6 +_,10 @@ +@@ -1231,6 +_,10 @@ final int maxBookPageSize = pageMax.intValue(); final double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D); long byteAllowed = maxBookPageSize; @@ -62,7 +62,7 @@ for (final String page : pageList) { final int byteLength = page.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; byteTotal += byteLength; -@@ -1223,7 +_,8 @@ +@@ -1255,7 +_,8 @@ } if (byteTotal > byteAllowed) { @@ -72,7 +72,7 @@ this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect return; } -@@ -1242,31 +_,45 @@ +@@ -1274,31 +_,45 @@ Optional optional = packet.title(); optional.ifPresent(list::add); list.addAll(packet.pages()); @@ -122,7 +122,7 @@ itemStack.set( DataComponents.WRITTEN_BOOK_CONTENT, new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list, true) -@@ -1280,6 +_,16 @@ +@@ -1312,6 +_,16 @@ return this.player.isTextFilteringEnabled() ? Filterable.passThrough(filteredText.filteredOrEmpty()) : Filterable.from(filteredText); } @@ -139,7 +139,7 @@ @Override public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); -@@ -1315,7 +_,15 @@ +@@ -1347,7 +_,15 @@ @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); @@ -156,7 +156,7 @@ this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause } else { ServerLevel serverLevel = this.player.serverLevel(); -@@ -1496,7 +_,7 @@ +@@ -1529,7 +_,7 @@ movedWrongly = true; if (event.getLogWarning()) // Paper end @@ -165,7 +165,7 @@ } // Paper } -@@ -1552,6 +_,8 @@ +@@ -1595,6 +_,8 @@ this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -174,7 +174,7 @@ Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -1607,6 +_,13 @@ +@@ -1650,6 +_,13 @@ this.player.tryResetCurrentImpulseContext(); } @@ -188,7 +188,7 @@ this.player.checkMovementStatistics(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1657,6 +_,17 @@ +@@ -1667,6 +_,17 @@ } } @@ -203,10 +203,10 @@ + } + // Purpur end - Dont run with scissors! + - private boolean isPlayerCollidingWithAnythingNew(LevelReader level, AABB box, double x, double y, double z) { - AABB aabb = this.player.getBoundingBox().move(x - this.player.getX(), y - this.player.getY(), z - this.player.getZ()); - Iterable collisions = level.getCollisions(this.player, aabb.deflate(1.0E-5F)); -@@ -2000,6 +_,7 @@ + private boolean shouldCheckPlayerMovement(boolean isElytraMovement) { + if (this.isSingleplayerOwner()) { + return false; +@@ -2070,6 +_,7 @@ boolean cancelled; if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) { @@ -214,7 +214,7 @@ org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { -@@ -2672,6 +_,7 @@ +@@ -2742,6 +_,7 @@ AABB boundingBox = target.getBoundingBox(); if (this.player.canInteractWithEntity(boundingBox, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience value for interact range diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch index 4617cc721..8fa9900fa 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch @@ -8,7 +8,7 @@ PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), loggableAddress, player.getId(), serverLevel.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); // Paper start - Send empty chunk, so players aren't stuck in the world loading screen with our chunk system not sending chunks when dead if (player.isDeadOrDying()) { -@@ -504,6 +_,7 @@ +@@ -505,6 +_,7 @@ } public @Nullable net.kyori.adventure.text.Component remove(ServerPlayer player, net.kyori.adventure.text.Component leaveMessage) { // Paper end - Fix kick event leave message not being sent @@ -16,7 +16,7 @@ ServerLevel serverLevel = player.serverLevel(); player.awardStat(Stats.LEAVE_GAME); // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it -@@ -662,7 +_,7 @@ +@@ -663,7 +_,7 @@ // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameProfile) // ? Component.translatable("multiplayer.disconnect.server_full") // : null; @@ -25,7 +25,7 @@ event.disallow(org.bukkit.event.player.PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure } } -@@ -920,6 +_,20 @@ +@@ -921,6 +_,20 @@ } } @@ -46,7 +46,7 @@ public void broadcastAll(Packet packet, ResourceKey dimension) { for (ServerPlayer serverPlayer : this.players) { if (serverPlayer.level().dimension() == dimension) { -@@ -1004,6 +_,7 @@ +@@ -1005,6 +_,7 @@ } else { b = (byte)(24 + permLevel); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch index 6e83d6019..c457ae742 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +++ b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -@@ -85,7 +_,7 @@ - } +@@ -86,7 +_,7 @@ }; - Set, BlockPos>> set = poiManager.findAllClosestFirstWithType( -- acquirablePois, predicate1, mob.blockPosition(), 48, PoiManager.Occupancy.HAS_SPACE -+ acquirablePois, predicate1, mob.blockPosition(), level.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE // Purpur - Configurable villager search radius - ) - .limit(5L) - .filter(pair1 -> predicate.test(level, pair1.getSecond())) + // Paper start - optimise POI access + final java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); +- io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, acquirablePois, predicate1, mob.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); ++ io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, acquirablePois, predicate1, mob.blockPosition(), level.purpurConfig.villagerAcquirePoiSearchRadius, level.purpurConfig.villagerAcquirePoiSearchRadius*level.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); // Purpur - Configurable villager search radius + final Set, BlockPos>> set = new java.util.HashSet<>(poiposes.size()); + for (final Pair, BlockPos> poiPose : poiposes) { + if (predicate.test(level, poiPose.getSecond())) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch index c9bc9b7c9..7e2366a32 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +++ b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -@@ -54,7 +_,7 @@ - } - }; - Set, BlockPos>> set = poiManager.findAllWithType( -- holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY -+ holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), level.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY // Purpur - Configurable villager search radius - ) - .collect(Collectors.toSet()); - Path path = AcquirePoi.findPathToPois(entity, set); +@@ -56,7 +_,7 @@ + // 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(), level.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); // Purpur - Configurable villager search radius + Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes)); + // Paper end - optimise POI access + if (path != null && path.canReach()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch index 313c15cf7..b770bcd85 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch @@ -3,7 +3,7 @@ @@ -458,6 +_,7 @@ // revert back all captured blocks for (org.bukkit.block.BlockState blockstate : blocks) { - ((org.bukkit.craftbukkit.block.state.CraftBlockState) blockstate).revertPlace(); + ((org.bukkit.craftbukkit.block.CraftBlockState) blockstate).revertPlace(); + ((org.bukkit.craftbukkit.block.CraftBlock) blockstate.getBlock()).getNMS().getBlock().forgetPlacer(); // Purpur - Store placer on Block when placed } @@ -43,7 +43,7 @@ public int getDamageValue() { return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage()); } -@@ -1274,6 +_,12 @@ +@@ -1280,6 +_,12 @@ public boolean isEnchanted() { return !this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).isEmpty(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch index b42a8f0ea..fcee0a726 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch @@ -3,20 +3,20 @@ @@ -36,6 +_,7 @@ // CraftBukkit start @javax.annotation.Nullable - private java.util.List itemStacks; + private java.util.Set itemStacks; // Paper - Improve exact choice recipe ingredients + public Predicate predicate; // Purpur - Add predicate to recipe's ExactChoice ingredient public boolean isExact() { return this.itemStacks != null; -@@ -89,6 +_,11 @@ - - return false; +@@ -88,6 +_,11 @@ + return this.itemStacks.contains(stack); // Paper - Improve exact choice recipe ingredients (hashing FTW!) } + // CraftBukkit end + // Purpur start - Add predicate to recipe's ExactChoice ingredient + if (predicate != null) { + return predicate.test(stack.asBukkitCopy()); + } + // Purpur end - Add predicate to recipe's ExactChoice ingredient - // CraftBukkit end return stack.is(this.values); } + diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch index aec323987..7bb427566 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/Level.java +++ b/net/minecraft/world/level/Level.java -@@ -159,11 +_,55 @@ +@@ -160,11 +_,55 @@ } // Paper end - add paper world config @@ -56,7 +56,7 @@ public CraftWorld getWorld() { return this.world; } -@@ -839,6 +_,8 @@ +@@ -840,6 +_,8 @@ // Paper end - getblock optimisations - cache world height/sections this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config @@ -65,7 +65,7 @@ this.generator = gen; this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); -@@ -2115,4 +_,14 @@ +@@ -2127,4 +_,14 @@ return this.id; } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch index 67708c82c..6ce413c7d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/NaturalSpawner.java +++ b/net/minecraft/world/level/NaturalSpawner.java -@@ -206,7 +_,7 @@ +@@ -261,7 +_,7 @@ mutableBlockPos.set(x, y, z); double d = x + 0.5; double d1 = z + 0.5; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch index 29f2e15d3..33ed39fc8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -104,6 +_,10 @@ +@@ -105,6 +_,10 @@ this.persistentDataContainer.putAll((CompoundTag) persistentDataTag); } // Paper end - read persistent data container @@ -11,7 +11,7 @@ } public final void loadWithComponents(CompoundTag tag, HolderLookup.Provider registries) { -@@ -117,6 +_,12 @@ +@@ -118,6 +_,12 @@ } protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { @@ -24,7 +24,7 @@ } public final CompoundTag saveWithFullMetadata(HolderLookup.Provider registries) { -@@ -377,4 +_,17 @@ +@@ -379,4 +_,17 @@ private ComponentHelper() { } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch index 41c642131..7aa782b7e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch @@ -1,8 +1,8 @@ --- a/net/minecraft/world/level/chunk/storage/EntityStorage.java +++ b/net/minecraft/world/level/chunk/storage/EntityStorage.java -@@ -89,6 +_,7 @@ - ListTag listTag = new ListTag(); - entities.getEntities().forEach(entity -> { +@@ -100,6 +_,7 @@ + } + // Paper end - Entity load/save limit per chunk CompoundTag compoundTag1 = new CompoundTag(); + if (!entity.canSaveToDisk()) return; // Purpur - Add canSaveToDisk to Entity if (entity.save(compoundTag1)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch index 70c25914a..aa1888597 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +++ b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -@@ -238,7 +_,7 @@ +@@ -283,7 +_,7 @@ // Paper start private static void printOversizedLog(String msg, Path file, int x, int z) { diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index 4f9a7fef0..56dbadd4b 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -5,14 +5,13 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 1a4f42c9e6012a6a074c9d5451d8dc11530a5c5b..67b9963afd91af84459d439697f6230fd67722b4 100644 +index c626533738099d3d31fe7eacb262204763b920f4..483062dbf8706dcf736ddb9393ccb696972be943 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1275,4 +1275,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - ((CraftPlayer) player).sendHurtAnimation(0, this); - } +@@ -1293,4 +1293,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { + return this.entity.get(io.papermc.paper.datacomponent.PaperDataComponentType.bukkitToMinecraft(type)) != null; } -+ + + // Purpur start - Ridables + @Override + public org.bukkit.entity.Player getRider() { diff --git a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch index f8f50cfdd..b3fa8ad89 100644 --- a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0005-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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 67b9963afd91af84459d439697f6230fd67722b4..d8ed459b49624180e6939d9c5eefb453296f0559 100644 +index 483062dbf8706dcf736ddb9393ccb696972be943..eefb5921752c1ef95255174f26e909c3e1b3e4ac 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -264,6 +264,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -267,6 +267,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { boolean retainPassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS); // Don't allow teleporting between worlds while keeping passengers if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -29,7 +29,7 @@ index 67b9963afd91af84459d439697f6230fd67722b4..d8ed459b49624180e6939d9c5eefb453 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index caa156cd56605f74888df6f64d7be310fd384f09..f4676ec9ab14d748c820169467a03fc5d1230302 100644 +index c659ef8f5bd96fb5767a22b80e5b7e284401fa51..a5cf4e4b9cc35bd81b530bc3eac31b0af3d72b7c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1421,6 +1421,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch index 8d5742173..4d1b7527f 100644 --- a/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0006-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/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index d8ed459b49624180e6939d9c5eefb453296f0559..83a23a82335eac087d36fd27ca6c6417960b881f 100644 +index eefb5921752c1ef95255174f26e909c3e1b3e4ac..8f9af0c5396abf25534eaee17b81982024eb9fcd 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -107,6 +107,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -110,6 +110,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } // Purpur end - Fire Immunity API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/state/CraftBeehive.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch similarity index 94% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/state/CraftBeehive.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch index a589b7608..e8bb09a96 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/state/CraftBeehive.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch @@ -1,5 +1,5 @@ ---- a/src/main/java/org/bukkit/craftbukkit/block/state/CraftBeehive.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/state/CraftBeehive.java +--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java ++++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java @@ -16,8 +_,15 @@ public class CraftBeehive extends CraftBlockEntityState implements Beehive { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/state/CraftConduit.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch similarity index 72% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/state/CraftConduit.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch index be1b1e7e6..355e42fa4 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/state/CraftConduit.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch @@ -1,6 +1,6 @@ ---- a/src/main/java/org/bukkit/craftbukkit/block/state/CraftConduit.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/state/CraftConduit.java -@@ -74,7 +_,7 @@ +--- a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java ++++ b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java +@@ -73,7 +_,7 @@ public int getRange() { this.ensureNoWorldGeneration(); ConduitBlockEntity conduit = (ConduitBlockEntity) this.getBlockEntityFromWorld(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch index 2b85fb7d8..ddbbc3b28 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -95,6 +_,18 @@ +@@ -98,6 +_,18 @@ this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch index 5c6badd7c..b7ffe4864 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -277,6 +_,7 @@ +@@ -276,6 +_,7 @@ @Override public void recalculatePermissions() { this.perm.recalculatePermissions(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch index 2a910b78f..2caad1ea9 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -479,7 +_,7 @@ +@@ -481,7 +_,7 @@ @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { From d6ac530c6827331d127fb000ff86c457c1bd03f4 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 7 Apr 2025 13:29:01 -0700 Subject: [PATCH 062/289] [ci skip] ignore deprecation or removal warnings --- build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle.kts b/build.gradle.kts index 63881e1bc..2d5925231 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -45,6 +45,7 @@ subprojects { options.encoding = Charsets.UTF_8.name() options.release = 21 options.isFork = true + options.compilerArgs.addAll(listOf("-Xlint:-deprecation", "-Xlint:-removal")) } tasks.withType { options.encoding = Charsets.UTF_8.name() From 8c2936263c98caad473f17039cf456b263155bf6 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 7 Apr 2025 13:29:01 -0700 Subject: [PATCH 063/289] [ci skip] ignore deprecation or removal warnings --- build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle.kts b/build.gradle.kts index 55d26f597..9d3046c25 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -45,6 +45,7 @@ subprojects { options.encoding = Charsets.UTF_8.name() options.release = 21 options.isFork = true + options.compilerArgs.addAll(listOf("-Xlint:-deprecation", "-Xlint:-removal")) } tasks.withType { options.encoding = Charsets.UTF_8.name() From 65b1288b31c06a68e62a6d7b70140c3fb8f88b8b Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 7 Apr 2025 13:44:48 -0700 Subject: [PATCH 064/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@0cf73158 Bump to adventure 4.20.0 (#12391) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 5ebca8a3e..312a71c7e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 9b1798d6438107fdf0d5939b79a8cf71f4d16e2c +paperCommit = 0cf731589a3b6923542cdfc36dbcee9c47c51076 org.gradle.configuration-cache = true org.gradle.caching = true From 0311dfcdae75938ec4e3b5f5467586916fff1436 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 7 Apr 2025 13:51:30 -0700 Subject: [PATCH 065/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@0cf73158 Bump to adventure 4.20.0 (#12391) PaperMC/Paper@e8eba887 Merge remote-tracking branch 'origin/main' into update/1.21.5 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c730223d1..d03727c8a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = 42623c4b27f579d874cab29bed7477608135c018 +paperCommit = e8eba887f4aedfacb953427b7bf6c23892964eeb org.gradle.configuration-cache = true org.gradle.caching = true From ecd0d7030c8aed4361065c188909d3e121dcf670 Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 9 Apr 2025 16:54:14 -0700 Subject: [PATCH 066/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@212dfc94 Correctly track raw data reader index for antixray PaperMC/Paper@cb0676a4 Commodore for Potions and Cows PaperMC/Paper@62256c51 add missed cow diff --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index d03727c8a..397a23217 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = e8eba887f4aedfacb953427b7bf6c23892964eeb +paperCommit = 62256c5182f0c12ca286708e9e7ac5e8f442fcd3 org.gradle.configuration-cache = true org.gradle.caching = true From c5bb590f88071586ef4a93b6e652d0e428e0e753 Mon Sep 17 00:00:00 2001 From: Pedro <3602279+Doc94@users.noreply.github.com> Date: Fri, 21 Mar 2025 13:50:58 -0300 Subject: [PATCH 067/289] [ci skip] Mention API Checks for CONTRIBUTING.md --- CONTRIBUTING.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a64260d7b..089d423ac 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -299,6 +299,40 @@ are assumed to be non-null by default. For less obvious placing such as on gener **For other classes**: Keep using both `@Nullable` and `@NotNull` from `org.jetbrains.annotations`. These will be replaced later. +### API checks + +When performing API-related checks where an exception needs to be thrown under specific conditions, you should use the `Preconditions` class. + +#### Checking Method Arguments +To validate method arguments, use `Preconditions#checkArgument`. This will throw an `IllegalArgumentException` if the condition is not met. +> Don't use Preconditions#checkNotNull, as it throws a NullPointerException, which makes it harder to determine whether the error was caused by an internal issue or invalid arguments. + +ex: +```java +@Override +public void sendMessage(Player player, Component message) { + Preconditions.checkArgument(player != null, "player cannot be null"); + Preconditions.checkArgument(player.isOnline(), "player %s must be online", player.getName()); + Preconditions.checkArgument(message != null, "message cannot be null"); + // rest of code +} +``` + +#### Checking Object State +To validate the state of an object inside a method, use `Preconditions#checkState`. This will throw an `IllegalStateException` if the condition is not met. +ex: +```java +private Player player; + +@Override +public void sendMessage(Component message) { + Preconditions.checkArgument(message != null, "message cannot be null"); + Preconditions.checkState(this.player != null, "player cannot be null"); + Preconditions.checkState(this.player.isOnline(), "player %s must be online", this.player.getName()); + // rest of code +} +``` + ## Access Transformers Sometimes, Vanilla code already contains a field, method, or type you want to access but the visibility is too low (e.g. a private field in an entity class). Purpur can use access transformers From 96f0ee1ea36729daa5cf6265c9cbae2849bcfd3b Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Sat, 12 Apr 2025 16:33:24 -0400 Subject: [PATCH 068/289] Add check for max growth age special case (#1652) --- .../world/level/block/GrowingPlantHeadBlock.java.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch index f9b8e4aac..d3566050c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch @@ -5,7 +5,7 @@ @Override public BlockState getStateForPlacement(RandomSource random) { - return this.defaultBlockState().setValue(AGE, Integer.valueOf(random.nextInt(25))); -+ return this.defaultBlockState().setValue(AGE, Integer.valueOf(random.nextInt(getMaxGrowthAge()))); // Purpur - kelp, cave, weeping, and twisting configurable max growth age ++ return this.defaultBlockState().setValue(AGE, Integer.valueOf(getMaxGrowthAge() == 0 ? 0 : random.nextInt(getMaxGrowthAge()))); // Purpur - kelp, cave, weeping, and twisting configurable max growth age } @Override From d4af79471c1cb6dc793212f3b84a387feb10a545 Mon Sep 17 00:00:00 2001 From: Josh <2635f0d1-2818-4dac-aae0-7043ff60c14e@otake.pw> Date: Sat, 12 Apr 2025 15:20:22 -0700 Subject: [PATCH 069/289] Add configurable smooth snow accumulation (#1651) --- .../server/level/ServerLevel.java.patch | 39 +++++++++++++++++++ .../org/purpurmc/purpur/PurpurConfig.java | 11 ++++++ 2 files changed, 50 insertions(+) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch index cced43f51..bb40e18cf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch @@ -109,6 +109,45 @@ skeletonHorse.setAge(0); skeletonHorse.setPos(blockPos.getX(), blockPos.getY(), blockPos.getZ()); this.addFreshEntity(skeletonHorse, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit +@@ -986,9 +_,35 @@ + if (blockState.is(Blocks.SNOW)) { + int layersValue = blockState.getValue(SnowLayerBlock.LAYERS); + if (layersValue < Math.min(_int, 8)) { +- BlockState blockState1 = blockState.setValue(SnowLayerBlock.LAYERS, Integer.valueOf(layersValue + 1)); +- Block.pushEntitiesUp(blockState, blockState1, this, heightmapPos); +- org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(this, heightmapPos, blockState1, null); // CraftBukkit ++ // Purpur start - Smooth snow accumulation ++ boolean canSnow = true; ++ // Ensure snow doesn't get more than N layers taller than its neighbors ++ // We only need to check blocks that are taller than the minimum step height ++ if (layersValue >= org.purpurmc.purpur.PurpurConfig.smoothSnowAccumulationStep && org.purpurmc.purpur.PurpurConfig.smoothSnowAccumulationStep > 0) { ++ int layersValueMin = layersValue - org.purpurmc.purpur.PurpurConfig.smoothSnowAccumulationStep; ++ for (Direction direction : Direction.Plane.HORIZONTAL) { ++ BlockPos blockPosNeighbor = heightmapPos.relative(direction); ++ BlockState blockStateNeighbor = this.getBlockState(blockPosNeighbor); ++ if (blockStateNeighbor.is(Blocks.SNOW)) { ++ // Special check for snow layers, if neighbors are too short, don't accumulate ++ int layersValueNeighbor = blockStateNeighbor.getValue(SnowLayerBlock.LAYERS); ++ if (layersValueNeighbor <= layersValueMin) { ++ canSnow = false; ++ break; ++ } ++ } else if (!Block.isFaceFull(blockStateNeighbor.getCollisionShape(this, blockPosNeighbor), direction.getOpposite())) { ++ // Since our layer is tall enough already, if we have a non-full neighbor block, don't accumulate ++ canSnow = false; ++ break; ++ } ++ } ++ } ++ if (canSnow) { ++ BlockState blockState1 = blockState.setValue(SnowLayerBlock.LAYERS, Integer.valueOf(layersValue + 1)); ++ Block.pushEntitiesUp(blockState, blockState1, this, heightmapPos); ++ org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(this, heightmapPos, blockState1, null); // CraftBukkit ++ } ++ // Purpur end - Smooth snow accumulation + } + } else { + org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(this, heightmapPos, Blocks.SNOW.defaultBlockState(), null); // CraftBukkit @@ -1009,7 +_,7 @@ pointOfInterestType -> pointOfInterestType.is(PoiTypes.LIGHTNING_ROD), blockPos -> blockPos.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockPos.getX(), blockPos.getZ()) - 1, diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java index c4cce5eb0..338154a80 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -332,6 +332,7 @@ public class PurpurConfig { public static boolean cryingObsidianValidForPortalFrame = false; public static int beeInsideBeeHive = 3; public static boolean anvilCumulativeCost = true; + public static int smoothSnowAccumulationStep = 0; public static int lightningRodRange = 128; public static Set grindstoneIgnoredEnchants = new HashSet<>(); public static boolean grindstoneRemoveAttributes = false; @@ -375,6 +376,16 @@ public class PurpurConfig { cryingObsidianValidForPortalFrame = getBoolean("settings.blocks.crying_obsidian.valid-for-portal-frame", cryingObsidianValidForPortalFrame); beeInsideBeeHive = getInt("settings.blocks.beehive.max-bees-inside", beeInsideBeeHive); anvilCumulativeCost = getBoolean("settings.blocks.anvil.cumulative-cost", anvilCumulativeCost); + smoothSnowAccumulationStep = getInt("settings.blocks.snow.smooth-accumulation-step", smoothSnowAccumulationStep); + if (smoothSnowAccumulationStep > 7) { + smoothSnowAccumulationStep = 7; + log(Level.WARNING, "blocks.snow.smooth-accumulation-step is set to above maximum allowed value of 7"); + log(Level.WARNING, "Using value of 7 to prevent issues"); + } else if (smoothSnowAccumulationStep < 0) { + smoothSnowAccumulationStep = 0; + log(Level.WARNING, "blocks.snow.smooth-accumulation-step is set to below minimum allowed value of 0"); + log(Level.WARNING, "Using value of 0 to prevent issues"); + } lightningRodRange = getInt("settings.blocks.lightning_rod.range", lightningRodRange); ArrayList defaultCurses = new ArrayList<>(){{ add("minecraft:binding_curse"); From 51aafbc731b33dfebc4b6180970570cfbbd14d3c Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 12 Apr 2025 16:25:27 -0700 Subject: [PATCH 070/289] Final 1.21.4 Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@07679026 CraftBlock - fix applyBoneMeal false result (#12407) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 312a71c7e..2b8a2ef55 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 0cf731589a3b6923542cdfc36dbcee9c47c51076 +paperCommit = 0767902699165a1cdb1977f555acbd8245de7c47 org.gradle.configuration-cache = true org.gradle.caching = true From ba521eb66d10f8bb77a03931a9dd806ad4997c44 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 12 Apr 2025 21:46:18 -0700 Subject: [PATCH 071/289] read & write spawn data properly for placing spawners option --- .../net/minecraft/world/level/block/SpawnerBlock.java.patch | 6 ++++-- .../src/main/java/org/purpurmc/purpur/item/SpawnerItem.java | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch index 9dfdef79a..9c1015ed7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/SpawnerBlock.java +++ b/net/minecraft/world/level/block/SpawnerBlock.java -@@ -38,6 +_,57 @@ +@@ -38,6 +_,59 @@ ); } @@ -14,7 +14,9 @@ + 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)))); ++ net.minecraft.nbt.CompoundTag spawnDataTag = new net.minecraft.nbt.CompoundTag(); ++ spawnDataTag.storeNullable("SpawnData", net.minecraft.world.level.SpawnData.CODEC, nextSpawnData); ++ item.set(net.minecraft.core.component.DataComponents.CUSTOM_DATA, net.minecraft.world.item.component.CustomData.EMPTY.update(compoundTag -> compoundTag.put("Purpur.SpawnData", spawnDataTag))); + } + + if (type.isPresent()) { diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java b/purpur-server/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java index f7de0c7d5..cfa02aa02 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java @@ -32,7 +32,9 @@ public class SpawnerItem extends BlockItem { if (mobTypeStringOptional.isPresent()) { EntityType.byString(mobTypeStringOptional.get()).ifPresent(type -> spawner.getSpawner().setEntityId(type, level, level.random, pos)); } else if (customData.contains("Purpur.SpawnData")) { - customData.read("SpawnData", net.minecraft.world.level.SpawnData.CODEC).ifPresent(spawnData -> spawner.getSpawner().nextSpawnData = spawnData); + customData.getCompound("Purpur.SpawnData") + .flatMap(spawnerData -> spawnerData.read("SpawnData", net.minecraft.world.level.SpawnData.CODEC)) + .ifPresent(spawnData -> spawner.getSpawner().nextSpawnData = spawnData); } } } From 751d8388ab80baf35cf188a4c07fd35e4d8816da Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 12 Apr 2025 21:47:34 -0700 Subject: [PATCH 072/289] fix color signs not working properly --- .../world/level/block/entity/SignBlockEntity.java.patch | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch index 07f5fcf82..97ca4ad9b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch @@ -35,7 +35,7 @@ ); } } -@@ -297,6 +_,26 @@ +@@ -297,6 +_,24 @@ // CraftBukkit - this return new CommandSourceStack(commandSource, Vec3.atCenterOf(pos), Vec2.ZERO, (ServerLevel)level, 2, string, component, level.getServer(), player); // Paper - Fix commands from signs not firing command events } @@ -49,11 +49,9 @@ + for (int i = 0; i < 4; i++) { + final var component = io.papermc.paper.adventure.PaperAdventure.asAdventure(lines[i]); + final String line = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacyAmpersand().serialize(component); -+ final var text = net.kyori.adventure.text.Component.text(line); -+ final String json = net.kyori.adventure.text.serializer.gson.GsonComponentSerializer.gson().serialize(text); + final CompoundTag sideNbt = nbt.getCompoundOrEmpty(side); + final net.minecraft.nbt.ListTag messagesNbt = sideNbt.getListOrEmpty("messages"); -+ messagesNbt.set(i, net.minecraft.nbt.StringTag.valueOf(json)); ++ messagesNbt.set(i, net.minecraft.nbt.StringTag.valueOf(line)); + } + nbt.putString("PurpurEditor", "true"); + return ClientboundBlockEntityDataPacket.create(this, (blockEntity, registryAccess) -> nbt); From f8450874da4e2d29863b544b70cc7b962a04aa70 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 12 Apr 2025 22:23:06 -0700 Subject: [PATCH 073/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@07679026 CraftBlock - fix applyBoneMeal false result (#12407) PaperMC/Paper@f00727c5 1.21.5 PaperMC/Paper@8eede4bb Fix AbstractHorse get/setSaddle PaperMC/Paper@93b6829e Also fix AbstractHorse getSize and isEmpty PaperMC/Paper@f517267c Add passthrough for air serialization --- gradle.properties | 2 +- purpur-api/build.gradle.kts.patch | 8 ++++---- .../main/java/org/bukkit/inventory/ItemStack.java.patch | 2 +- .../org/bukkit/craftbukkit/entity/CraftLlama.java.patch | 2 +- .../bukkit/craftbukkit/util/CraftMagicNumbers.java.patch | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gradle.properties b/gradle.properties index 397a23217..60d1e9add 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = 62256c5182f0c12ca286708e9e7ac5e8f442fcd3 +paperCommit = f517267c0cde36a82419ebe04038d77424779acc org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/build.gradle.kts.patch b/purpur-api/build.gradle.kts.patch index d09f1f271..c6df50f08 100644 --- a/purpur-api/build.gradle.kts.patch +++ b/purpur-api/build.gradle.kts.patch @@ -1,6 +1,6 @@ --- a/paper-api/build.gradle.kts +++ b/paper-api/build.gradle.kts -@@ -93,7 +_,7 @@ +@@ -97,7 +_,7 @@ testRuntimeOnly("org.junit.platform:junit-platform-launcher") } @@ -9,7 +9,7 @@ idea { module { generatedSourceDirs.add(generatedDir.toFile()) -@@ -103,6 +_,18 @@ +@@ -107,6 +_,18 @@ main { java { srcDir(generatedDir) @@ -28,7 +28,7 @@ } } } -@@ -168,8 +_,10 @@ +@@ -172,8 +_,10 @@ val services = objects.newInstance() tasks.withType { @@ -40,7 +40,7 @@ options.use() options.isDocFilesSubDirs = true options.links( -@@ -202,11 +_,11 @@ +@@ -206,11 +_,11 @@ } // workaround for https://github.com/gradle/gradle/issues/4046 diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch index 5c0dae4d0..6726eb6ef 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch @@ -14,7 +14,7 @@ /** * Represents a stack of items. -@@ -1372,4 +_,482 @@ +@@ -1363,4 +_,482 @@ return this.craftDelegate.matchesWithoutData(item, excludeTypes, ignoreCount); } // Paper end - data component API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch index c5db6e7ee..aad4d7f90 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java -@@ -89,4 +_,17 @@ +@@ -92,4 +_,17 @@ public Llama getCaravanTail() { return this.getHandle().caravanTail == null ? null : (Llama) this.getHandle().caravanTail.getBukkitEntity(); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch index 2caad1ea9..d622f147d 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -481,7 +_,7 @@ +@@ -484,7 +_,7 @@ @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { From c3870bda5a0c46fcce3511b8bf0695841bf193ca Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 14 Apr 2025 16:14:25 -0700 Subject: [PATCH 074/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@4511edb8 [ci/skip] Don't promote checking enchantment by legacy lore (#12421) PaperMC/Paper@8f62e0fb Correctly order getArmorContents PaperMC/Paper@652cea57 Allow `getAsString()`-ing non-persistent entities (#12424) PaperMC/Paper@de64e704 Update spark PaperMC/Paper@1b889688 Add Entity#isTrackedBy (#12332) PaperMC/Paper@8ff94c63 Update a bunch of dependencies PaperMC/Paper@79036210 Remove json-simple imports from API, keep it as implementation in server PaperMC/Paper@dcb755ac Update log4j jd link PaperMC/Paper@91bfb6fb Fix freeze locked (#12434) PaperMC/Paper@121a7bf4 Make GameRule a FeatureDependant (#12429) PaperMC/Paper@7d5695d7 Improve ItemMeta#hasCustomModelData compatibility (#12414) PaperMC/Paper@de410d13 Fix reobf mappings regression in GameRules.Type (#12437) PaperMC/Paper@33e8928f Add support for bonus chest configuration in WorldCreator (#12344) PaperMC/Paper@723b511f Clone exit location passed to teleport event (#12354) PaperMC/Paper@ed322043 Clone blockpos in InsideBlockEffectApplier record PaperMC/Paper@6b4ad082 Add PlayerRespawnEvent#isMissingRespawnBlock (#12422) PaperMC/Paper@c0bd5688 Add logic for Human canUseEquipmentSlot (#12433) --- gradle.properties | 2 +- purpur-api/build.gradle.kts.patch | 8 ++++---- .../src/main/java/org/bukkit/World.java.patch | 2 +- .../java/org/bukkit/entity/Entity.java.patch | 2 +- purpur-server/build.gradle.kts.patch | 16 ++++++++-------- .../server/level/ServerPlayer.java.patch | 16 ++++++++-------- .../paper-patches/features/0002-Ridables.patch | 4 ++-- .../org/bukkit/craftbukkit/CraftWorld.java.patch | 2 +- .../entity/CraftHumanEntity.java.patch | 2 +- .../org/purpurmc/purpur/PurpurWorldConfig.java | 2 +- 10 files changed, 28 insertions(+), 28 deletions(-) diff --git a/gradle.properties b/gradle.properties index 60d1e9add..e9fd97ac7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = f517267c0cde36a82419ebe04038d77424779acc +paperCommit = c0bd5688b53672eeeb63ed19ec76af2e2dc629b9 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/build.gradle.kts.patch b/purpur-api/build.gradle.kts.patch index c6df50f08..d09f1f271 100644 --- a/purpur-api/build.gradle.kts.patch +++ b/purpur-api/build.gradle.kts.patch @@ -1,6 +1,6 @@ --- a/paper-api/build.gradle.kts +++ b/paper-api/build.gradle.kts -@@ -97,7 +_,7 @@ +@@ -93,7 +_,7 @@ testRuntimeOnly("org.junit.platform:junit-platform-launcher") } @@ -9,7 +9,7 @@ idea { module { generatedSourceDirs.add(generatedDir.toFile()) -@@ -107,6 +_,18 @@ +@@ -103,6 +_,18 @@ main { java { srcDir(generatedDir) @@ -28,7 +28,7 @@ } } } -@@ -172,8 +_,10 @@ +@@ -168,8 +_,10 @@ val services = objects.newInstance() tasks.withType { @@ -40,7 +40,7 @@ options.use() options.isDocFilesSubDirs = true options.links( -@@ -206,11 +_,11 @@ +@@ -202,11 +_,11 @@ } // workaround for https://github.com/gradle/gradle/issues/4046 diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch index 32feb363a..64546e194 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4283,6 +_,86 @@ +@@ -4290,6 +_,86 @@ @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch index 2759f0288..aa9b7dde2 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1215,4 +_,59 @@ +@@ -1224,4 +_,59 @@ */ void broadcastHurtAnimation(@NotNull java.util.Collection players); // Paper end - broadcast hurt animation diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index 7cefdc9cd..5ae07c4dd 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -51,18 +51,18 @@ implementation("ca.spottedleaf:concurrentutil:0.0.3") implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+ implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21 -@@ -162,6 +_,10 @@ - runtimeOnly("com.mysql:mysql-connector-j:9.1.0") - runtimeOnly("com.lmax:disruptor:3.4.4") +@@ -158,6 +_,10 @@ + implementation("org.spongepowered:configurate-yaml:4.2.0-20250225.064233-199") + implementation("org.spongepowered:configurate-core:4.2.0-20250225.064233-204") // Pinned dependency of above pinned yaml snapshot. + 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 + - runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.6") - runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") - runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") -@@ -201,14 +_,14 @@ + // Deps that were previously in the API but have now been moved here for backwards compat, eventually to be removed + runtimeOnly("commons-lang:commons-lang:2.6") + runtimeOnly("org.xerial:sqlite-jdbc:3.49.1.0") +@@ -206,14 +_,14 @@ val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim() attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", @@ -82,7 +82,7 @@ "Build-Number" to (build ?: ""), "Build-Time" to buildTime.toString(), "Git-Branch" to gitBranch, -@@ -262,7 +_,7 @@ +@@ -267,7 +_,7 @@ jvmArgumentProviders.add(provider) } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index 325138081..290811724 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -54,7 +54,7 @@ Entity entity = damageSource.getEntity(); if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. !(entity instanceof Player player && !this.canHarmPlayer(player)) -@@ -1396,6 +_,7 @@ +@@ -1397,6 +_,7 @@ serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -62,7 +62,7 @@ this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1513,7 +_,7 @@ +@@ -1514,7 +_,7 @@ new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), monster -> monster.isPreventingPlayerRest(this.serverLevel(), this) ); @@ -71,7 +71,7 @@ return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1550,7 +_,19 @@ +@@ -1551,7 +_,19 @@ CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); if (!this.serverLevel().canSleepThroughNights()) { @@ -92,7 +92,7 @@ } ((ServerLevel)this.level()).updateSleepingPlayerList(); -@@ -1642,6 +_,7 @@ +@@ -1643,6 +_,7 @@ @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -100,7 +100,7 @@ this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -1944,6 +_,26 @@ +@@ -1945,6 +_,26 @@ this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -127,7 +127,7 @@ @Override public void displayClientMessage(Component chatComponent, boolean actionBar) { this.sendSystemMessage(chatComponent, actionBar); -@@ -2161,6 +_,20 @@ +@@ -2162,6 +_,20 @@ ); } @@ -148,7 +148,7 @@ public void sendSystemMessage(Component mesage) { this.sendSystemMessage(mesage, false); } -@@ -2299,7 +_,67 @@ +@@ -2300,7 +_,67 @@ public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -217,7 +217,7 @@ public ServerStatsCounter getStats() { return this.stats; -@@ -2927,4 +_,56 @@ +@@ -2928,4 +_,56 @@ return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index 56dbadd4b..ef0e88ee9 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index c626533738099d3d31fe7eacb262204763b920f4..483062dbf8706dcf736ddb9393ccb696972be943 100644 +index 362df928a8e8bfe35a844d0a6de6985dd01a49d3..825bbc16338b25bdd1d81bbf6efebe6a8435a789 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1293,4 +1293,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1305,4 +1305,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.entity.get(io.papermc.paper.datacomponent.PaperDataComponentType.bukkitToMinecraft(type)) != null; } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch index 70d86ef1d..72ef202a0 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2347,6 +_,50 @@ +@@ -2352,6 +_,50 @@ return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch index b7ffe4864..5c6badd7c 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -276,6 +_,7 @@ +@@ -277,6 +_,7 @@ @Override public void recalculatePermissions() { this.perm.recalculatePermissions(); diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index a1f895bb9..e140497bf 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -17,7 +17,7 @@ import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.properties.Tilt; -import org.apache.commons.lang.BooleanUtils; +import org.apache.commons.lang3.BooleanUtils; import org.bukkit.ChatColor; import org.bukkit.World; import org.bukkit.configuration.ConfigurationSection; From 8b5044e007de621325169d6ea8e1765fcec0e394 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 14 Apr 2025 16:25:44 -0700 Subject: [PATCH 075/289] [ci skip] add idea project icon --- .gitignore | 1 + .idea/icon.svg | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 .idea/icon.svg diff --git a/.gitignore b/.gitignore index 707f5e4b7..7b23ae323 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ hs_err_pid* # Intellij /.idea/* !/.idea/runConfigurations +!/.idea/icon.svg *.iml *.ipr *.iws diff --git a/.idea/icon.svg b/.idea/icon.svg new file mode 100644 index 000000000..5cd62e1fe --- /dev/null +++ b/.idea/icon.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + From f2f682fb483131357e72ebaa4958e2c8aad79678 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 18 Apr 2025 16:42:41 -0700 Subject: [PATCH 076/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@a55345f9 Add support for deserializing manually deserialized items, also add caller note PaperMC/Paper@2948eb29 Mitigate an issue when loading a spigot config with null spam exclusion entries PaperMC/Paper@6c2b0378 Use correct saved data key for maps PaperMC/Paper@89cdcba5 [ci/skip] Replace wiki mention for BlockType#isOccluding (#12446) --- gradle.properties | 2 +- .../org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index e9fd97ac7..af35ce9d7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = c0bd5688b53672eeeb63ed19ec76af2e2dc629b9 +paperCommit = 89cdcba5730ae2197b32788f8c3bf1aa9f472531 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch index d622f147d..98c5c72fa 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -484,7 +_,7 @@ +@@ -485,7 +_,7 @@ @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { From bdeba761ac3db3184ab23a0b7badfa963ea1ce2e Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 19 Apr 2025 15:18:52 -0700 Subject: [PATCH 077/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@5f0b8292 Re-add chunk position check to regionfile recalculation patch --- gradle.properties | 2 +- .../world/level/chunk/storage/RegionFileStorage.java.patch | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index af35ce9d7..8d10721ea 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = 89cdcba5730ae2197b32788f8c3bf1aa9f472531 +paperCommit = 5f0b82925e06c90400b4069631b15c8f2c47c76d org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch index aa1888597..8f5ddb2d7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +++ b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -@@ -283,7 +_,7 @@ +@@ -308,7 +_,7 @@ // Paper start private static void printOversizedLog(String msg, Path file, int x, int z) { From 96f5b0449262319b83c6df75d6de246e0bd907aa Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 21 Apr 2025 20:09:52 -0700 Subject: [PATCH 078/289] drop void damage height/damage migration --- ...urable-void-damage-height-and-damage.patch | 49 -------- ...h => 0008-Implement-elytra-settings.patch} | 6 +- ...=> 0009-Configurable-jockey-options.patch} | 0 ...d-to-crystals-and-crystals-shoot-ph.patch} | 0 ...atch => 0011-Phantoms-burn-in-light.patch} | 0 ...-entity-breeding-times-configurable.patch} | 8 +- ...es-from-item-forms-of-entities-to-e.patch} | 2 +- ...illager-Clerics-to-farm-Nether-Wart.patch} | 0 ...efing-bypass-to-everything-affected.patch} | 2 +- ...016-Add-EntityTeleportHinderedEvent.patch} | 0 ...ggle-for-water-sensitive-mob-damage.patch} | 12 +- ...18-API-for-any-mob-to-burn-daylight.patch} | 4 +- ...urally-aggressive-to-players-chance.patch} | 0 ...=> 0020-Mobs-always-drop-experience.patch} | 0 .../dedicated/DedicatedServer.java.patch | 4 +- ...004-Add-EntityTeleportHinderedEvent.patch} | 2 +- ...urable-void-damage-height-and-damage.patch | 115 ------------------ ...05-API-for-any-mob-to-burn-daylight.patch} | 2 +- 18 files changed, 21 insertions(+), 185 deletions(-) delete mode 100644 purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch rename purpur-server/minecraft-patches/features/{0009-Implement-elytra-settings.patch => 0008-Implement-elytra-settings.patch} (95%) rename purpur-server/minecraft-patches/features/{0010-Configurable-jockey-options.patch => 0009-Configurable-jockey-options.patch} (100%) rename purpur-server/minecraft-patches/features/{0011-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch => 0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch} (100%) rename purpur-server/minecraft-patches/features/{0012-Phantoms-burn-in-light.patch => 0011-Phantoms-burn-in-light.patch} (100%) rename purpur-server/minecraft-patches/features/{0013-Make-entity-breeding-times-configurable.patch => 0012-Make-entity-breeding-times-configurable.patch} (98%) rename purpur-server/minecraft-patches/features/{0014-Apply-display-names-from-item-forms-of-entities-to-e.patch => 0013-Apply-display-names-from-item-forms-of-entities-to-e.patch} (98%) rename purpur-server/minecraft-patches/features/{0015-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch => 0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch} (100%) rename purpur-server/minecraft-patches/features/{0016-Add-mobGriefing-bypass-to-everything-affected.patch => 0015-Add-mobGriefing-bypass-to-everything-affected.patch} (99%) rename purpur-server/minecraft-patches/features/{0017-Add-EntityTeleportHinderedEvent.patch => 0016-Add-EntityTeleportHinderedEvent.patch} (100%) rename purpur-server/minecraft-patches/features/{0018-Toggle-for-water-sensitive-mob-damage.patch => 0017-Toggle-for-water-sensitive-mob-damage.patch} (99%) rename purpur-server/minecraft-patches/features/{0019-API-for-any-mob-to-burn-daylight.patch => 0018-API-for-any-mob-to-burn-daylight.patch} (99%) rename purpur-server/minecraft-patches/features/{0020-Cows-naturally-aggressive-to-players-chance.patch => 0019-Cows-naturally-aggressive-to-players-chance.patch} (100%) rename purpur-server/minecraft-patches/features/{0021-Mobs-always-drop-experience.patch => 0020-Mobs-always-drop-experience.patch} (100%) rename purpur-server/paper-patches/features/{0005-Add-EntityTeleportHinderedEvent.patch => 0004-Add-EntityTeleportHinderedEvent.patch} (97%) delete mode 100644 purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch rename purpur-server/paper-patches/features/{0006-API-for-any-mob-to-burn-daylight.patch => 0005-API-for-any-mob-to-burn-daylight.patch} (95%) diff --git a/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch b/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch deleted file mode 100644 index 669a840ee..000000000 --- a/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Thu, 27 Feb 2020 21:42:19 -0600 -Subject: [PATCH] Configurable void damage height and damage - -temporarily migrate to paper's config -drop patch on the next minecraft release - -diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index be8be8e3da80823917633de22985f7f4ef26dfe6..195dd839c50f5a86dffcbd3b6b82b5fb30a54e16 100644 ---- a/net/minecraft/server/MinecraftServer.java -+++ b/net/minecraft/server/MinecraftServer.java -@@ -1220,6 +1220,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java -index 309cdc88d98eaf61691bc1594275250f55b4f30c..7b19d64d6b1d61922a2368e38f2b31a42ea29a1a 100644 +index 4e300141b0c7fa967e3d0b9ef952097efeb2bef6..533801988cb4f8a916ef002a179990ca913b2f32 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java @@ -86,7 +86,7 @@ public class Strider extends Animal implements ItemSteerable { @@ -1101,7 +1101,7 @@ index 309cdc88d98eaf61691bc1594275250f55b4f30c..7b19d64d6b1d61922a2368e38f2b31a4 @Override diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index 43de5ca497f5e3ac3d64345cb998f392852e6e3b..bc8727a4ae3f1f30f4de5ab81a79c15a8153e34a 100644 +index 5378db94e633ee87864685be56c64a18ec481543..0808520f39d5ce96baad25180ead7a69922950f5 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -110,6 +110,13 @@ public class Vex extends Monster implements TraceableEntity { diff --git a/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch similarity index 99% rename from purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch rename to purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch index 5ea10c6c1..09ee6ceb8 100644 --- a/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0018-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/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 6d18921bf283dac5279c82ae0562927db0f7f14f..f55db145661cab3cfc9ffa755792be2c3d80f50a 100644 +index 1edca56b4bf880460148d00b98225fc34bd15f17..5b0a4ef4ae5a762432dbb0def005f7505197445e 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -521,6 +521,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -35,7 +35,7 @@ index 6d18921bf283dac5279c82ae0562927db0f7f14f..f55db145661cab3cfc9ffa755792be2c this.type = entityType; this.level = level; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 476b570ffe9d2df173bd57b57fe65372cb35fa1d..4586d7afb4f0a27c7d61abb80af24205d46cb83f 100644 +index 13a1b5dd8b1a07a584f71b1f24da28965f5e2a5d..fb42e31e812f99bf7b74c376ed47fcaee3213238 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -273,6 +273,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/purpur-server/minecraft-patches/features/0020-Cows-naturally-aggressive-to-players-chance.patch b/purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0020-Cows-naturally-aggressive-to-players-chance.patch rename to purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch diff --git a/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch rename to purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch index 696d6b2f1..e8a2669b4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch @@ -12,7 +12,7 @@ io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics -+ /*// Purpur start - Purpur config files // Purpur - Configurable void damage height and damage ++ // Purpur start - Purpur config files + try { + org.purpurmc.purpur.PurpurConfig.init((java.io.File) options.valueOf("purpur-settings")); + } catch (Exception e) { @@ -20,7 +20,7 @@ + return false; + } + org.purpurmc.purpur.PurpurConfig.registerCommands(); -+ */// Purpur end - Purpur config files // Purpur - Configurable void damage height and damage ++ // Purpur end - Purpur config files com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now this.setPvpAllowed(properties.pvp); diff --git a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch similarity index 97% rename from purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch rename to purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch index b3fa8ad89..ffe044003 100644 --- a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0004-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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 483062dbf8706dcf736ddb9393ccb696972be943..eefb5921752c1ef95255174f26e909c3e1b3e4ac 100644 +index 825bbc16338b25bdd1d81bbf6efebe6a8435a789..f48d9dbd75e62621f7e4c8cd11f9fd4084db9097 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -267,6 +267,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch b/purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch deleted file mode 100644 index 01ab6babe..000000000 --- a/purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch +++ /dev/null @@ -1,115 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Thu, 27 Feb 2020 21:42:19 -0600 -Subject: [PATCH] Configurable void damage height and damage - -temporarily migrate to paper's config -drop patch on the next minecraft release - -diff --git a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java -index e48fa405d92fab221fa8331b65c8f324e801d439..e319d6337811051de478d584a37015c450960701 100644 ---- a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java -+++ b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java -@@ -267,6 +267,7 @@ public class PaperConfigurations extends Configurations diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index eefb5921752c1ef95255174f26e909c3e1b3e4ac..8f9af0c5396abf25534eaee17b81982024eb9fcd 100644 +index f48d9dbd75e62621f7e4c8cd11f9fd4084db9097..8feb78c4d7fa793f01991756b618fc49de023db6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -110,6 +110,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { From 6cc78b6308cabed2ebea27087b821c2421f6e1ff Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 23 Apr 2025 15:32:47 -0700 Subject: [PATCH 079/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@04b91129 Update projects dependents GitHub Action (#12436) PaperMC/Paper@def0532f Fix writing headers and update to be more papery (#12459) PaperMC/Paper@d22644aa Expand cooldown API (#12435) PaperMC/Paper@df429932 Fix floating warning log when the kick event is canceled (#12374) PaperMC/Paper@a820bdae [ci/skip] Some javadoc fixes PaperMC/Paper@55f20209 Fix CCE in LingeringPotionSplashEvent (#12463) --- gradle.properties | 2 +- .../org/bukkit/craftbukkit/CraftServer.java.patch | 14 +++++++------- .../craftbukkit/entity/CraftHumanEntity.java.patch | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/gradle.properties b/gradle.properties index 8d10721ea..f20c58325 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = 5f0b82925e06c90400b4069631b15c8f2c47c76d +paperCommit = 55f20209262cb196976e18d155551fb13c3d1554 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index 0879a87b6..0637f5ebd 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -21,7 +21,7 @@ CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1064,6 +_,7 @@ +@@ -1067,6 +_,7 @@ org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -29,7 +29,7 @@ for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1079,6 +_,7 @@ +@@ -1082,6 +_,7 @@ } } world.spigotConfig.init(); // Spigot @@ -37,7 +37,7 @@ } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1096,6 +_,7 @@ +@@ -1099,6 +_,7 @@ org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -45,7 +45,7 @@ this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1595,6 +_,60 @@ +@@ -1598,6 +_,60 @@ return true; } @@ -106,7 +106,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -2942,6 +_,18 @@ +@@ -2945,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +125,7 @@ @Override public void restart() { CraftServer.this.restart(); -@@ -2974,6 +_,7 @@ +@@ -2977,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -133,7 +133,7 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3181,4 +_,18 @@ +@@ -3184,4 +_,18 @@ public void allowPausing(final Plugin plugin, final boolean value) { this.console.addPluginAllowingSleep(plugin.getName(), value); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch index 5c6badd7c..d39066dce 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -277,6 +_,7 @@ +@@ -279,6 +_,7 @@ @Override public void recalculatePermissions() { this.perm.recalculatePermissions(); From 4ce97c1d06a2d185ed147144db584e729aaf708b Mon Sep 17 00:00:00 2001 From: Nebojsa Majic <79749977+Onako2@users.noreply.github.com> Date: Mon, 28 Apr 2025 20:22:12 +0200 Subject: [PATCH 080/289] [ci skip] Update occurences of version numbers to 1.21.5 (#1658) --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 75cf3f07f..9da8b8a56 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.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/) +[![Build Status](https://img.shields.io/github/actions/workflow/status/PurpurMC/Purpur/build.yml?branch=ver%2F1.21.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.21.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.21.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.21.4-R0.1-SNAPSHOT + 1.21.5-R0.1-SNAPSHOT provided ``` @@ -80,7 +80,7 @@ repositories { ``` ```kotlin dependencies { - compileOnly("org.purpurmc.purpur:purpur-api:1.21.4-R0.1-SNAPSHOT") + compileOnly("org.purpurmc.purpur:purpur-api:1.21.5-R0.1-SNAPSHOT") } ``` From 7f5c4036f730a2b8fb0a4bef84ba6c5959d8e3f2 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 24 Apr 2025 21:35:57 -0700 Subject: [PATCH 081/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@1410a22b Fix passengers sending when riding players PaperMC/Paper@767868dd Fix some components (#12457) PaperMC/Paper@9cddf136 Fix portal create event block list (#12373) PaperMC/Paper@a112d370 Fix horse_variant and tropical_fish_pattern (#12472) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index f20c58325..0b5ef5a9e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = 55f20209262cb196976e18d155551fb13c3d1554 +paperCommit = a112d370253a47b53721f290dcc74a28ce2d6d2e org.gradle.configuration-cache = true org.gradle.caching = true From 4fdf1d117cc32d0b125d7a67378a50d1d3ff44de Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 28 Apr 2025 18:07:23 -0700 Subject: [PATCH 082/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@a211ac2e Remove unused warning (#12478) PaperMC/Paper@ae512811 Add isSuffocating to Block and BlockState (#12445) PaperMC/Paper@3409e2d7 Mace was not included in the ENCHANTABLE MaterialSetTag (#12476) PaperMC/Paper@1cfc96bc Add keyStream() API to registries (#12479) PaperMC/Paper@3222985e [ci/skip] Rebuild patches PaperMC/Paper@deaccd2c [ci/skip] Add file reference url to help.yml (#12481) PaperMC/Paper@f86b4352 Add vault change state event (#12069) PaperMC/Paper@3e3b42cd Update player chat session sync (#12382) PaperMC/Paper@f8fa4f6f Add method to retrieve FishHook (#12310) PaperMC/Paper@b9d3147d Use correct placed block position for sound (#12410) PaperMC/Paper@952338b3 [ci/skip] Add missing exception docs to Player#listPlayer (#12488) PaperMC/Paper@1db37853 [ci/skip] improve javadoc for off-hand swaps through getHotbarButton (#12489) PaperMC/Paper@d1810f24 Allow Server#getDefaultGameMode before worlds are initialized (#12490) PaperMC/Paper@02d20ff7 Fix NPE in Server#getMap before worlds are loaded (#12492) --- gradle.properties | 2 +- .../features/0002-Purpur-config-files.patch | 4 ++-- .../src/main/java/org/bukkit/Server.java.patch | 2 +- .../java/org/bukkit/entity/Player.java.patch | 2 +- .../features/0001-Ridables.patch | 10 +++++----- .../0003-Barrels-and-enderchests-6-rows.patch | 4 ++-- .../0008-Implement-elytra-settings.patch | 4 ++-- .../ServerGamePacketListenerImpl.java.patch | 4 ++-- .../server/players/PlayerList.java.patch | 4 ++-- .../minecraft/world/item/ItemStack.java.patch | 4 ++-- .../bukkit/craftbukkit/CraftServer.java.patch | 16 ++++++++-------- 11 files changed, 28 insertions(+), 28 deletions(-) diff --git a/gradle.properties b/gradle.properties index 0b5ef5a9e..4fa28aba6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = a112d370253a47b53721f290dcc74a28ce2d6d2e +paperCommit = 02d20ff7eb62ceae608ff8d0ed5f75516828e787 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch b/purpur-api/paper-patches/features/0002-Purpur-config-files.patch index eb88bb178..18658464b 100644 --- a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch +++ b/purpur-api/paper-patches/features/0002-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 53ad1696d02afbebf27663dd753fa93e41cfeb4e..cec387842895d617b0dcf9158f080fe03e08a926 100644 +index a84d75ad9aaed4974eeaa0ea885aa45215e686b9..52f65c556f23b65560f33a169f709fb0d405cfba 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2369,6 +2369,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2368,6 +2368,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch index 5b53e005a..f9a58492d 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2705,4 +_,111 @@ +@@ -2704,4 +_,111 @@ */ void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value); // Paper end - API to check if the server is sleeping diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch index 673702252..02442becd 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3894,4 +_,123 @@ +@@ -3896,4 +_,123 @@ * @param score New death screen score of player */ void setDeathScreenScore(int score); diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 84cecd141..72b8eed1f 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -30,7 +30,7 @@ index 924dc9a32cd78f37078ff47cde54e61844572f47..d1e33c3ed23f4c68694ec3628c64e87d /* Drop global time updates if (this.tickCount % 20 == 0) { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 17d021c341fb382768a0e8971bd559a11804151f..9de064829001199d6cd1bbeac05b6ee7c3000e4b 100644 +index f61521a4d57c73fb65f1f314ff6061cf63943e82..d8a8e6d006d18de5ec148a0d9d6f08a6a40a65bb 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -213,6 +213,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -42,7 +42,7 @@ index 17d021c341fb382768a0e8971bd559a11804151f..9de064829001199d6cd1bbeac05b6ee7 @Override public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 77f4d37866b74bb3865afe80b516af724cacd0be..efea20895bc45d63621dd130fc05922ba1e10f87 100644 +index 4944989e535295a24ddff28a812c5eda700427e0..4ffe5bbf79d2df0b2b8c563b4f224ab120e3396a 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -800,6 +800,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -62,10 +62,10 @@ index 77f4d37866b74bb3865afe80b516af724cacd0be..efea20895bc45d63621dd130fc05922b private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index db53f813d4b433f9a07a4d3169cd4fba94951c1b..6ba184b5314356214e9ff9508fba57150d92d87a 100644 +index 57660e97b76c2c1e39a61f661e9621352b0963ae..08b7b7c8721595c56c562de1fe17a1bc5909e624 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2836,6 +2836,8 @@ public class ServerGamePacketListenerImpl +@@ -2829,6 +2829,8 @@ public class ServerGamePacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -177,7 +177,7 @@ index bda521cca91f070139f5e9bdef6a50e1497f53ff..351f92e1627f465a9a292d4a5e5c256a protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index a077e2f518be39bbdba4919ed7161bb28547e56b..a4a19d962bc4665e9368b97cae4b2534da33de91 100644 +index 20d9856daa5ef4c42010381091c2a85e0755fa77..133da6ac0fff416c5849b64f053ca4cd105d00ac 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -226,9 +226,9 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch index ca3313ce5..834556512 100644 --- a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch +++ b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 0fd27e1b01801d418ce9e96ec23dd746484351a4..1ad7747379d60d49f8c27a078b2ae798c8e5d41c 100644 +index fbac24945a4100515c78ced2c30e09ec2f6787bf..2a4c20c74fefe891cba74d2c8b83b01a53067fb5 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -1030,6 +1030,27 @@ public abstract class PlayerList { +@@ -1029,6 +1029,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API diff --git a/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch index fcf68405d..b03972156 100644 --- a/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch +++ b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch @@ -53,10 +53,10 @@ index 18d63d2da49451a2d5e1da7bf0c00e05e2f192bc..1f081e098ce3bec61b7f374e9b737838 itemInHand.shrink(1); // Moved up from below } else { diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java -index 2f0b280d36aefc0cc2a09c395adabdffad43bf17..f1b61e98e07d1d89f9af225f99085d8a3fee878c 100644 +index 6de42886ed681b5e00903f0d213e4d2fcaea1482..36677cb0db42b74fa84d67b85717f629f84b4dd0 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java -@@ -725,6 +725,14 @@ public final class ItemStack implements DataComponentHolder { +@@ -724,6 +724,14 @@ public final class ItemStack implements DataComponentHolder { org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent(serverPlayer, this); // Paper - Add EntityDamageItemEvent } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index 99ecda35c..423c191a4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -206,7 +206,7 @@ private boolean shouldCheckPlayerMovement(boolean isElytraMovement) { if (this.isSingleplayerOwner()) { return false; -@@ -2070,6 +_,7 @@ +@@ -2063,6 +_,7 @@ boolean cancelled; if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) { @@ -214,7 +214,7 @@ org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { -@@ -2742,6 +_,7 @@ +@@ -2735,6 +_,7 @@ AABB boundingBox = target.getBoundingBox(); if (this.player.canInteractWithEntity(boundingBox, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience value for interact range diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch index 8fa9900fa..af445d874 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch @@ -25,7 +25,7 @@ event.disallow(org.bukkit.event.player.PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure } } -@@ -921,6 +_,20 @@ +@@ -920,6 +_,20 @@ } } @@ -46,7 +46,7 @@ public void broadcastAll(Packet packet, ResourceKey dimension) { for (ServerPlayer serverPlayer : this.players) { if (serverPlayer.level().dimension() == dimension) { -@@ -1005,6 +_,7 @@ +@@ -1004,6 +_,7 @@ } else { b = (byte)(24 + permLevel); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch index b770bcd85..32bd1ea7c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch @@ -16,7 +16,7 @@ serverLevel.notifyAndUpdatePhysics(newPos, null, oldBlock, block, serverLevel.getBlockState(newPos), updateFlags, net.minecraft.world.level.block.Block.UPDATE_LIMIT); // send null chunk as chunk.k() returns false by this point } -@@ -618,6 +_,26 @@ +@@ -617,6 +_,26 @@ return this.isDamageableItem() && this.getDamageValue() > 0; } @@ -43,7 +43,7 @@ public int getDamageValue() { return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage()); } -@@ -1280,6 +_,12 @@ +@@ -1279,6 +_,12 @@ public boolean isEnchanted() { return !this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).isEmpty(); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index 0637f5ebd..13b389933 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -423,6 +_,20 @@ +@@ -424,6 +_,20 @@ this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager); this.pluginManager.paperPluginManager = this.paperPluginManager; // Paper end @@ -21,7 +21,7 @@ CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1067,6 +_,7 @@ +@@ -1068,6 +_,7 @@ org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -29,7 +29,7 @@ for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1082,6 +_,7 @@ +@@ -1083,6 +_,7 @@ } } world.spigotConfig.init(); // Spigot @@ -37,7 +37,7 @@ } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1099,6 +_,7 @@ +@@ -1100,6 +_,7 @@ org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -45,7 +45,7 @@ this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1598,6 +_,60 @@ +@@ -1599,6 +_,60 @@ return true; } @@ -106,7 +106,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -2945,6 +_,18 @@ +@@ -2951,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +125,7 @@ @Override public void restart() { CraftServer.this.restart(); -@@ -2977,6 +_,7 @@ +@@ -2983,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -133,7 +133,7 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3184,4 +_,18 @@ +@@ -3190,4 +_,18 @@ public void allowPausing(final Plugin plugin, final boolean value) { this.console.addPluginAllowingSleep(plugin.getName(), value); } From 8c77678e81c813e57dda10c646599b0ab3144218 Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 30 Apr 2025 17:34:43 -0700 Subject: [PATCH 083/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@9e873f50 Fix inconsistencies between offline/online spawn position getter (#11960) PaperMC/Paper@fc0c3717 Fix handling of resultant crafting container from craftItemResult (#12307) PaperMC/Paper@a7a76c8f Add methods for Armadillo (#12031) PaperMC/Paper@a74400d9 Update adventure to 4.21.0 (#12499) PaperMC/Paper@1e930763 Fix ipv6 loopback addresses being able to get connection throttled (#12155) PaperMC/Paper@646b80ca Fix unnecessary map data saves (#12296) PaperMC/Paper@e663f999 Add combat tracker API (#11853) PaperMC/Paper@cd4fe5b7 [ci/skip] Drop non-applicable ATs (#12498) PaperMC/Paper@5acfdd6a Fix save/load NaN Entity Motion (#12269) PaperMC/Paper@2754d7c3 Add Throw EntityChangeBlockEvent for BrushableBlockEntity#brush (#12133) PaperMC/Paper@567f63ae Parity for respawn events (#11792) --- gradle.properties | 2 +- purpur-api/build.gradle.kts.patch | 8 ++++---- .../java/org/bukkit/OfflinePlayer.java.patch | 2 +- .../org/bukkit/entity/LivingEntity.java.patch | 6 +++--- .../java/org/bukkit/entity/Player.java.patch | 2 +- .../features/0001-Ridables.patch | 10 +++++----- .../0003-Barrels-and-enderchests-6-rows.patch | 4 ++-- .../server/level/ServerPlayer.java.patch | 16 ++++++++-------- .../server/players/PlayerList.java.patch | 4 ++-- .../world/damagesource/CombatTracker.java.patch | 4 ++-- .../net/minecraft/world/entity/Entity.java.patch | 16 ++++++++-------- .../0005-API-for-any-mob-to-burn-daylight.patch | 8 ++++---- .../craftbukkit/CraftOfflinePlayer.java.patch | 4 ++-- .../bukkit/craftbukkit/CraftServer.java.patch | 16 ++++++++-------- .../entity/CraftLivingEntity.java.patch | 2 +- .../craftbukkit/entity/CraftPlayer.java.patch | 4 ++-- 16 files changed, 54 insertions(+), 54 deletions(-) diff --git a/gradle.properties b/gradle.properties index 4fa28aba6..cea6298be 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = 02d20ff7eb62ceae608ff8d0ed5f75516828e787 +paperCommit = 567f63ae3451d8232fe4c76a12cce0c0cb139d80 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/build.gradle.kts.patch b/purpur-api/build.gradle.kts.patch index d09f1f271..755a5bb4e 100644 --- a/purpur-api/build.gradle.kts.patch +++ b/purpur-api/build.gradle.kts.patch @@ -1,6 +1,6 @@ --- a/paper-api/build.gradle.kts +++ b/paper-api/build.gradle.kts -@@ -93,7 +_,7 @@ +@@ -90,7 +_,7 @@ testRuntimeOnly("org.junit.platform:junit-platform-launcher") } @@ -9,7 +9,7 @@ idea { module { generatedSourceDirs.add(generatedDir.toFile()) -@@ -103,6 +_,18 @@ +@@ -100,6 +_,18 @@ main { java { srcDir(generatedDir) @@ -28,7 +28,7 @@ } } } -@@ -168,8 +_,10 @@ +@@ -165,8 +_,10 @@ val services = objects.newInstance() tasks.withType { @@ -40,7 +40,7 @@ options.use() options.isDocFilesSubDirs = true options.links( -@@ -202,11 +_,11 @@ +@@ -199,11 +_,11 @@ } // workaround for https://github.com/gradle/gradle/issues/4046 diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch index 0f821e6ad..255c7f017 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/OfflinePlayer.java +++ b/src/main/java/org/bukkit/OfflinePlayer.java -@@ -570,4 +_,104 @@ +@@ -585,4 +_,104 @@ @Override io.papermc.paper.persistence.PersistentDataContainerView getPersistentDataContainer(); // Paper end - add pdc to offline player diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch index 62363164e..4867dfad1 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch @@ -1,9 +1,9 @@ --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1452,4 +_,20 @@ +@@ -1463,4 +_,20 @@ */ - boolean canUseEquipmentSlot(org.bukkit.inventory.@NotNull EquipmentSlot slot); - // Paper end - Expose canUseSlot + @ApiStatus.Experimental + @NotNull CombatTracker getCombatTracker(); + + // Purpur start - API for any mob to burn daylight + /** diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch index 02442becd..483644566 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3896,4 +_,123 @@ +@@ -3910,4 +_,123 @@ * @param score New death screen score of player */ void setDeathScreenScore(int score); diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 72b8eed1f..0f8a6f073 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -42,7 +42,7 @@ index f61521a4d57c73fb65f1f314ff6061cf63943e82..d8a8e6d006d18de5ec148a0d9d6f08a6 @Override public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 4944989e535295a24ddff28a812c5eda700427e0..4ffe5bbf79d2df0b2b8c563b4f224ab120e3396a 100644 +index 1879c2a15e3f28f5d4687d098c832671f342806f..5b396f22a9607f95fbc2fc505f92f9a72d4fcae0 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -800,6 +800,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -75,10 +75,10 @@ index 57660e97b76c2c1e39a61f661e9621352b0963ae..08b7b7c8721595c56c562de1fe17a1bc if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 500e542fa81de7b14cd86c23ce039951d8dc0f95..1edca56b4bf880460148d00b98225fc34bd15f17 100644 +index 6c1dcbb9fff2ce8bb88e16d47dab7656c70f7367..bf50fa4694c693713db8c54c4a9b87d8d9a169cd 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -3093,6 +3093,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3094,6 +3094,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -92,7 +92,7 @@ index 500e542fa81de7b14cd86c23ce039951d8dc0f95..1edca56b4bf880460148d00b98225fc3 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3134,6 +3141,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3135,6 +3142,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -107,7 +107,7 @@ index 500e542fa81de7b14cd86c23ce039951d8dc0f95..1edca56b4bf880460148d00b98225fc3 if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5136,4 +5151,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5137,4 +5152,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter diff --git a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch index 834556512..3d833c13f 100644 --- a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch +++ b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index fbac24945a4100515c78ced2c30e09ec2f6787bf..2a4c20c74fefe891cba74d2c8b83b01a53067fb5 100644 +index f7b12d5924005a24899aef11746b9f056fac3559..aaebaa42eef53af8a8c1606b79caf6bb4a99f4f9 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -1029,6 +1029,27 @@ public abstract class PlayerList { +@@ -1041,6 +1041,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index 290811724..258b3cffb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -54,7 +54,7 @@ Entity entity = damageSource.getEntity(); if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. !(entity instanceof Player player && !this.canHarmPlayer(player)) -@@ -1397,6 +_,7 @@ +@@ -1392,6 +_,7 @@ serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -62,7 +62,7 @@ this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1514,7 +_,7 @@ +@@ -1509,7 +_,7 @@ new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), monster -> monster.isPreventingPlayerRest(this.serverLevel(), this) ); @@ -71,7 +71,7 @@ return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1551,7 +_,19 @@ +@@ -1546,7 +_,19 @@ CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); if (!this.serverLevel().canSleepThroughNights()) { @@ -92,7 +92,7 @@ } ((ServerLevel)this.level()).updateSleepingPlayerList(); -@@ -1643,6 +_,7 @@ +@@ -1638,6 +_,7 @@ @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -100,7 +100,7 @@ this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -1945,6 +_,26 @@ +@@ -1940,6 +_,26 @@ this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -127,7 +127,7 @@ @Override public void displayClientMessage(Component chatComponent, boolean actionBar) { this.sendSystemMessage(chatComponent, actionBar); -@@ -2162,6 +_,20 @@ +@@ -2157,6 +_,20 @@ ); } @@ -148,7 +148,7 @@ public void sendSystemMessage(Component mesage) { this.sendSystemMessage(mesage, false); } -@@ -2300,7 +_,67 @@ +@@ -2295,7 +_,67 @@ public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -217,7 +217,7 @@ public ServerStatsCounter getStats() { return this.stats; -@@ -2928,4 +_,56 @@ +@@ -2923,4 +_,56 @@ return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch index af445d874..33ba84a58 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch @@ -25,7 +25,7 @@ event.disallow(org.bukkit.event.player.PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure } } -@@ -920,6 +_,20 @@ +@@ -932,6 +_,20 @@ } } @@ -46,7 +46,7 @@ public void broadcastAll(Packet packet, ResourceKey dimension) { for (ServerPlayer serverPlayer : this.players) { if (serverPlayer.level().dimension() == dimension) { -@@ -1004,6 +_,7 @@ +@@ -1016,6 +_,7 @@ } else { b = (byte)(24 + permLevel); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch index fa544e5d2..5e1eb74c4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/damagesource/CombatTracker.java +++ b/net/minecraft/world/damagesource/CombatTracker.java -@@ -55,7 +_,7 @@ +@@ -62,7 +_,7 @@ private Component getMessageForAssistedFall(Entity entity, Component entityDisplayName, String hasWeaponTranslationKey, String noWeaponTranslationKey) { ItemStack itemStack = entity instanceof LivingEntity livingEntity ? livingEntity.getMainHandItem() : ItemStack.EMPTY; @@ -9,7 +9,7 @@ ? Component.translatable(hasWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName, itemStack.getDisplayName()) : Component.translatable(noWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName); } -@@ -99,6 +_,15 @@ +@@ -106,6 +_,15 @@ 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/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index be9092f45..a181398ca 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -86,7 +86,7 @@ if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { this.wasTouchingWater = false; } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) { -@@ -2512,6 +_,13 @@ +@@ -2513,6 +_,13 @@ compound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -100,7 +100,7 @@ return compound; } catch (Throwable var8) { CrashReport crashReport = CrashReport.forThrowable(var8, "Saving entity NBT"); -@@ -2629,6 +_,13 @@ +@@ -2630,6 +_,13 @@ freezeLocked = compound.getBooleanOr("Paper.FreezeLock", false); } // Paper end @@ -114,7 +114,7 @@ } catch (Throwable var8) { CrashReport crashReport = CrashReport.forThrowable(var8, "Loading entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); -@@ -2857,6 +_,7 @@ +@@ -2858,6 +_,7 @@ if (this.isAlive() && this instanceof Leashable leashable) { if (leashable.getLeashHolder() == player) { if (!this.level().isClientSide()) { @@ -122,7 +122,7 @@ // CraftBukkit start - fire PlayerUnleashEntityEvent // Paper start - Expand EntityUnleashEvent org.bukkit.event.player.PlayerUnleashEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials()); -@@ -3173,15 +_,18 @@ +@@ -3174,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } @@ -142,7 +142,7 @@ } } } -@@ -3386,7 +_,7 @@ +@@ -3387,7 +_,7 @@ } public int getMaxAirSupply() { @@ -151,7 +151,7 @@ } public int getAirSupply() { -@@ -3914,7 +_,7 @@ +@@ -3915,7 +_,7 @@ // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -160,7 +160,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4451,6 +_,12 @@ +@@ -4452,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -173,7 +173,7 @@ // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { -@@ -4859,7 +_,7 @@ +@@ -4860,7 +_,7 @@ } public float maxUpStep() { diff --git a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch index 9762bc1a4..72eb1dba0 100644 --- a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch @@ -24,12 +24,12 @@ index f48d9dbd75e62621f7e4c8cd11f9fd4084db9097..8feb78c4d7fa793f01991756b618fc49 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 61750e2e36d7654a2284637c7b84908416705fe6..5b74ca7c52fb0437726a2a00483134884dc50b2f 100644 +index 3527864c55862f9ab4ed2762c1a6606cf3240cc0..6d654afe8d9e2f90510e68904a6e90ac9269810b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1167,4 +1167,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { - public boolean canUseEquipmentSlot(org.bukkit.inventory.EquipmentSlot slot) { - return this.getHandle().canUseSlot(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); +@@ -1179,4 +1179,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { + public CombatTracker getCombatTracker() { + return this.combatTracker; } + + // Purpur start - API for any mob to burn daylight diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch index 333761455..fbe0580ce 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -@@ -339,6 +_,12 @@ +@@ -336,6 +_,12 @@ @Override public Location getLocation() { @@ -13,7 +13,7 @@ CompoundTag data = this.getData(); if (data == null) { return null; -@@ -571,4 +_,183 @@ +@@ -573,4 +_,183 @@ manager.save(); } } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index 13b389933..4bb46083d 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -424,6 +_,20 @@ +@@ -425,6 +_,20 @@ this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager); this.pluginManager.paperPluginManager = this.paperPluginManager; // Paper end @@ -21,7 +21,7 @@ CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1068,6 +_,7 @@ +@@ -1069,6 +_,7 @@ org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -29,7 +29,7 @@ for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1083,6 +_,7 @@ +@@ -1084,6 +_,7 @@ } } world.spigotConfig.init(); // Spigot @@ -37,7 +37,7 @@ } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1100,6 +_,7 @@ +@@ -1101,6 +_,7 @@ org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -45,7 +45,7 @@ this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1599,6 +_,60 @@ +@@ -1600,6 +_,60 @@ return true; } @@ -106,7 +106,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -2951,6 +_,18 @@ +@@ -2958,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +125,7 @@ @Override public void restart() { CraftServer.this.restart(); -@@ -2983,6 +_,7 @@ +@@ -2990,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -133,7 +133,7 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3190,4 +_,18 @@ +@@ -3197,4 +_,18 @@ public void allowPausing(final Plugin plugin, final boolean value) { this.console.addPluginAllowingSleep(plugin.getName(), value); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch index 69a13dd49..ec7eb8535 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -520,7 +_,7 @@ +@@ -527,7 +_,7 @@ net.minecraft.server.level.ServerPlayer nmsKiller = killer == null ? null : ((CraftPlayer) killer).getHandle(); this.getHandle().setLastHurtByMob(nmsKiller); if (nmsKiller != null) { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 9d0b268b4..6bdcafb0d 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -17,7 +17,7 @@ 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)) { -@@ -2731,6 +_,28 @@ +@@ -2732,6 +_,28 @@ return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -46,7 +46,7 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3593,4 +_,76 @@ +@@ -3594,4 +_,76 @@ public void setSimplifyContainerDesyncCheck(final boolean simplifyContainerDesyncCheck) { this.simplifyContainerDesyncCheck = simplifyContainerDesyncCheck; } From 93011bc195bce53a94358015a08227fc587308ea Mon Sep 17 00:00:00 2001 From: linaTetris Date: Sat, 3 May 2025 19:32:59 -0400 Subject: [PATCH 084/289] Add configuration setting to re-add End void rings (#1656) Co-authored-by: granny --- .../world/level/levelgen/DensityFunctions.java.patch | 11 +++++++++++ .../main/java/org/purpurmc/purpur/PurpurConfig.java | 5 +++++ 2 files changed, 16 insertions(+) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch new file mode 100644 index 000000000..51e0ad919 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/level/levelgen/DensityFunctions.java ++++ b/net/minecraft/world/level/levelgen/DensityFunctions.java +@@ -528,7 +_,7 @@ + int i1 = z / 2; + int i2 = x % 2; + int i3 = z % 2; +- float f = 100.0F - Mth.sqrt((long)x * (long)x + (long)z * (long)z) * 8.0F; // Paper - cast ints to long to avoid integer overflow ++ float f = 100.0F - Mth.sqrt(org.purpurmc.purpur.PurpurConfig.generateEndVoidRings ? x * x + z * z : (long)x * (long)x + (long)z * (long)z) * 8.0F; // Paper - cast ints to long to avoid integer overflow // Purpur - Setting to reintroduce end void rings + f = Mth.clamp(f, -100.0F, 80.0F); + + NoiseCache cache = noiseCache.get().computeIfAbsent(noise, noiseKey -> new NoiseCache()); // Paper - Perf: Optimize end generation diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java index 282057126..3dc90c1b1 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -610,4 +610,9 @@ public class PurpurConfig { startupCommands.add(command); }); } + + public static boolean generateEndVoidRings = false; + private static void generateEndVoidRings() { + generateEndVoidRings = getBoolean("settings.generate-end-void-rings", generateEndVoidRings); + } } From c2f485914e648b50e8eee911aa9607fe7a1ae298 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 1 May 2025 21:09:13 -0700 Subject: [PATCH 085/289] [ci skip] only set default world config values once this stops migrated values under "default" from being overwritten when migrating world-specific config values --- .../purpurmc/purpur/PurpurWorldConfig.java | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index e140497bf..d4a6cf2fe 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -49,8 +49,10 @@ public class PurpurWorldConfig { } private void set(String path, Object val) { - PurpurConfig.config.addDefault("world-settings.default." + path, val); - PurpurConfig.config.set("world-settings.default." + path, val); + if (PurpurConfig.config.get("world-settings.default." + path) == null || val == null) { + PurpurConfig.config.addDefault("world-settings.default." + path, val); + PurpurConfig.config.set("world-settings.default." + path, val); + } if (PurpurConfig.config.get("world-settings." + worldName + "." + path) != null) { PurpurConfig.config.addDefault("world-settings." + worldName + "." + path, val); PurpurConfig.config.set("world-settings." + worldName + "." + path, val); @@ -63,12 +65,16 @@ public class PurpurWorldConfig { } private String getString(String path, String def) { - PurpurConfig.config.addDefault("world-settings.default." + path, def); + if (PurpurConfig.config.get("world-settings.default." + path) == null) { + PurpurConfig.config.addDefault("world-settings.default." + path, def); + } return PurpurConfig.config.getString("world-settings." + worldName + "." + path, PurpurConfig.config.getString("world-settings.default." + path)); } private boolean getBoolean(String path, boolean def) { - PurpurConfig.config.addDefault("world-settings.default." + path, def); + if (PurpurConfig.config.get("world-settings.default." + path) == null) { + PurpurConfig.config.addDefault("world-settings.default." + path, def); + } return PurpurConfig.config.getBoolean("world-settings." + worldName + "." + path, PurpurConfig.config.getBoolean("world-settings.default." + path)); } @@ -79,17 +85,23 @@ public class PurpurWorldConfig { } private double getDouble(String path, double def) { - PurpurConfig.config.addDefault("world-settings.default." + path, def); + if (PurpurConfig.config.get("world-settings.default." + path) == null) { + PurpurConfig.config.addDefault("world-settings.default." + path, def); + } return PurpurConfig.config.getDouble("world-settings." + worldName + "." + path, PurpurConfig.config.getDouble("world-settings.default." + path)); } private int getInt(String path, int def) { - PurpurConfig.config.addDefault("world-settings.default." + path, def); + if (PurpurConfig.config.get("world-settings.default." + path) == null) { + PurpurConfig.config.addDefault("world-settings.default." + path, def); + } return PurpurConfig.config.getInt("world-settings." + worldName + "." + path, PurpurConfig.config.getInt("world-settings.default." + path)); } private List getList(String path, T def) { - PurpurConfig.config.addDefault("world-settings.default." + path, def); + if (PurpurConfig.config.get("world-settings.default." + path) == null) { + PurpurConfig.config.addDefault("world-settings.default." + path, def); + } return PurpurConfig.config.getList("world-settings." + worldName + "." + path, PurpurConfig.config.getList("world-settings.default." + path)); } From 6f5bbae51b932befb8bb3ca8feed172b51e72c92 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 3 May 2025 18:13:58 -0700 Subject: [PATCH 086/289] [ci skip] move some code around --- .../main/java/org/purpurmc/purpur/PurpurWorldConfig.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index d4a6cf2fe..ac18bc20a 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -3428,15 +3428,15 @@ public class PurpurWorldConfig { set("mobs.zombified_piglin.attributes.max-health", null); set("mobs.zombified_piglin.attributes.max_health", oldValue); } - if (PurpurConfig.version < 42) { - set("mobs.zombified_piglin.count-as-player-kill-when-angry", false); - } zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth); zombifiedPiglinScale = Mth.clamp(getDouble("mobs.zombified_piglin.attributes.scale", zombifiedPiglinScale), 0.0625D, 16.0D); zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements); 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); + if (PurpurConfig.version < 42) { + set("mobs.zombified_piglin.count-as-player-kill-when-angry", false); + } zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); zombifiedPiglinAlwaysDropExp = getBoolean("mobs.zombified_piglin.always-drop-exp", zombifiedPiglinAlwaysDropExp); From 5c1a983514ad3a0434c114d4ecb1a919157b4fb9 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 3 May 2025 20:12:19 -0700 Subject: [PATCH 087/289] fix issue with `shift-right-click-repairs-mending-points` properly consume XP when a tool is at 1 durability and `shift-right-click-repairs-mending-points` is set to 1. Co-authored-by: William Blake Galbreath --- .../net/minecraft/server/level/ServerPlayerGameMode.java.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch index 13642640b..27489dad2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch @@ -35,7 +35,7 @@ + if (this.player.level().purpurConfig.shiftRightClickRepairsMendingPoints > 0 && this.player.isShiftKeyDown() && this.player.getBukkitEntity().hasPermission("purpur.mending_shift_click")) { + int points = Math.min(this.player.totalExperience, this.player.level().purpurConfig.shiftRightClickRepairsMendingPoints); + if (points > 0 && itemstack.isDamaged() && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.MENDING, itemstack) > 0) { -+ this.player.giveExperiencePoints(-points); ++ this.player.giveExperiencePoints(points == 1 ? -2 : -points); + this.player.level().addFreshEntity(new net.minecraft.world.entity.ExperienceOrb(this.player.level(), this.player.getX(), this.player.getY(), this.player.getZ(), points, org.bukkit.entity.ExperienceOrb.SpawnReason.UNKNOWN, this.player, this.player)); + return true; + } From 3156e44696a717be21f94451e34927946c78c825 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 3 May 2025 20:32:02 -0700 Subject: [PATCH 088/289] check damage value of tool correctly --- .../net/minecraft/server/level/ServerPlayerGameMode.java.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch index 27489dad2..f28a3de6d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch @@ -35,7 +35,7 @@ + if (this.player.level().purpurConfig.shiftRightClickRepairsMendingPoints > 0 && this.player.isShiftKeyDown() && this.player.getBukkitEntity().hasPermission("purpur.mending_shift_click")) { + int points = Math.min(this.player.totalExperience, this.player.level().purpurConfig.shiftRightClickRepairsMendingPoints); + if (points > 0 && itemstack.isDamaged() && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.MENDING, itemstack) > 0) { -+ this.player.giveExperiencePoints(points == 1 ? -2 : -points); ++ this.player.giveExperiencePoints(itemstack.getDamageValue() == 1 ? -2 : -points); + this.player.level().addFreshEntity(new net.minecraft.world.entity.ExperienceOrb(this.player.level(), this.player.getX(), this.player.getY(), this.player.getZ(), points, org.bukkit.entity.ExperienceOrb.SpawnReason.UNKNOWN, this.player, this.player)); + return true; + } From a9fe4f259771306c2977e1fb4e9fbcb515abacd3 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 3 May 2025 20:47:01 -0700 Subject: [PATCH 089/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@bc3d946f Normalizes CraftEntity#toString/getHandle (#12170) PaperMC/Paper@0e9b94d5 Fix ItemStack amount issues with Chat Components (#12216) PaperMC/Paper@835b9559 Add a method on InventoryView to get the MenuType (#12193) PaperMC/Paper@c9411bfb Fix min ItemStack amount check for asHoverEvent (#12505) PaperMC/Paper@1acf3b38 Infer block entity data in brigadier blockstate argument (#12197) PaperMC/Paper@b9b3cd65 Use components instead of ChatColor in more places (#12507) PaperMC/Paper@ec421715 Add missing spaces back (#12508) PaperMC/Paper@51345a1c Correct nullable fall location type PaperMC/Paper@93246a07 Fix errors when loading raid files without a PDC PaperMC/Paper@cb3ffd0b Don't store empty PDCs on raids PaperMC/Paper@d637ae85 Fix NoSuchElementException in EntityTransformEvent for slimes (#12510) PaperMC/Paper@10742373 Pass correct draw strength for EntityShootBowEvent (#12308) PaperMC/Paper@825685f8 Add PlayerPickBlockEvent and PlayerPickEntityEvent (#12425) PaperMC/Paper@2bd84f6f Expand PotionMeta Api to allow getting effective potion colour and effects (#12390) PaperMC/Paper@6f1f5b67 Fix ArmorStand items for canceled EntityDeathEvent (#12288) PaperMC/Paper@88a3a870 Configurable xp orb merge group count (#12503) PaperMC/Paper@53d1d04e Disable Item Obfuscation for entity related stacks (#12297) PaperMC/Paper@c98cd658 Add configuration interface to expose certain config values (#12273) --- gradle.properties | 2 +- .../features/0002-Purpur-config-files.patch | 4 ++-- .../main/java/org/bukkit/Bukkit.java.patch | 2 +- .../main/java/org/bukkit/Server.java.patch | 2 +- .../org/bukkit/inventory/ItemStack.java.patch | 4 ++-- .../features/0001-Ridables.patch | 10 ++++----- .../ServerGamePacketListenerImpl.java.patch | 22 +++++++++---------- .../entity/decoration/ArmorStand.java.patch | 4 ++-- .../minecraft/world/item/BowItem.java.patch | 4 ++-- .../item/ProjectileWeaponItem.java.patch | 2 +- .../0003-Barrels-and-enderchests-6-rows.patch | 6 ++--- ...0004-Add-EntityTeleportHinderedEvent.patch | 10 ++++----- ...005-API-for-any-mob-to-burn-daylight.patch | 6 ++--- .../bukkit/craftbukkit/CraftServer.java.patch | 16 +++++++------- .../entity/CraftEndermite.java.patch | 2 +- .../entity/CraftHumanEntity.java.patch | 2 +- .../entity/CraftIronGolem.java.patch | 2 +- .../craftbukkit/entity/CraftItem.java.patch | 6 ++--- .../entity/CraftLivingEntity.java.patch | 2 +- .../craftbukkit/entity/CraftLlama.java.patch | 2 +- .../craftbukkit/entity/CraftPlayer.java.patch | 6 ++--- .../entity/CraftSnowman.java.patch | 6 ++--- .../entity/CraftVillager.java.patch | 2 +- .../craftbukkit/entity/CraftWither.java.patch | 2 +- .../craftbukkit/entity/CraftWolf.java.patch | 2 +- 25 files changed, 64 insertions(+), 64 deletions(-) diff --git a/gradle.properties b/gradle.properties index cea6298be..9deee2ca4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = 567f63ae3451d8232fe4c76a12cce0c0cb139d80 +paperCommit = c98cd65802fcecfd3db613819e6053e2b8cbdf4f org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch b/purpur-api/paper-patches/features/0002-Purpur-config-files.patch index 18658464b..0bf335843 100644 --- a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch +++ b/purpur-api/paper-patches/features/0002-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 a84d75ad9aaed4974eeaa0ea885aa45215e686b9..52f65c556f23b65560f33a169f709fb0d405cfba 100644 +index 9da87512bad52379b374cb3634bc1878a28f3594..ff3c20a1b3a3179cc6dfe991653a4020fd505490 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2368,6 +2368,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2380,6 +2380,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch index c6c42f557..2da19878c 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2997,4 +_,133 @@ +@@ -3007,4 +_,133 @@ public static void restart() { server.restart(); } diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch index f9a58492d..e3f800d27 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2704,4 +_,111 @@ +@@ -2716,4 +_,111 @@ */ void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value); // Paper end - API to check if the server is sleeping diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch index 6726eb6ef..f1144543b 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java -@@ -23,6 +_,13 @@ +@@ -24,6 +_,13 @@ import org.bukkit.persistence.PersistentDataContainer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -14,7 +14,7 @@ /** * Represents a stack of items. -@@ -1363,4 +_,482 @@ +@@ -1373,4 +_,482 @@ return this.craftDelegate.matchesWithoutData(item, excludeTypes, ignoreCount); } // Paper end - data component API diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 0f8a6f073..a73155f50 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -62,10 +62,10 @@ index 1879c2a15e3f28f5d4687d098c832671f342806f..5b396f22a9607f95fbc2fc505f92f9a7 private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 57660e97b76c2c1e39a61f661e9621352b0963ae..08b7b7c8721595c56c562de1fe17a1bc5909e624 100644 +index c6b2591eb8ba7005919ea4b885f95c4d603305b6..9f695e97d247b24b12a4a115bfb012c7e344ccf8 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2829,6 +2829,8 @@ public class ServerGamePacketListenerImpl +@@ -2831,6 +2831,8 @@ public class ServerGamePacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -2991,7 +2991,7 @@ index 2f7da367b58fd9c06c4e012e8eb7f59e5a7f9b6d..15e2c0d566256c4ba175e991d6d7fd4f public boolean isPowered() { diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 96d5750cde19254866beac0c3a69eebef6de5188..0a5de00d41c59528e9f85a7cf82363c45e24d2bc 100644 +index 025b74f7fe2094110a9fd293911588f361785d0a..607be674b6dcb9b099e9182b268c6bd960c5a87d 100644 --- a/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -73,12 +73,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -3718,7 +3718,7 @@ index 8d6def85583a111841b28f20f58ddb8b8cbd7bc1..0335e85f196363c06597812149e9a93c EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index 264ec7acfc03eca4a8f5758ad8d3e11714e934b4..d75eb765f271fb7e33d0332079aea024788dc227 100644 +index ec090d191969983c31950b8376bbb36ee8fce922..304a1ce41071e5597859b1235fa014f966ff5cfb 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -57,10 +57,28 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -4149,7 +4149,7 @@ index 1f35105f6ddd33fc9558d19590a5696479d2de83..5394a5c302c4bd9417dfb304848747fc protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java -index 6a8a5a76400beeaf69a17d53105a7a522ec5791e..9127e99d632bcd01c2f042c33dc87dd49736b96f 100644 +index 5a81172c88f5699f1440b69b331a8ea353c1950a..b3a78d66c0e64e7c8bf54d820c7fff13d46b396b 100644 --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java @@ -58,6 +58,7 @@ public class Slime extends Mob implements Enemy { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index 423c191a4..aef98e0f9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -51,7 +51,7 @@ this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause return; } -@@ -1231,6 +_,10 @@ +@@ -1233,6 +_,10 @@ final int maxBookPageSize = pageMax.intValue(); final double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D); long byteAllowed = maxBookPageSize; @@ -62,7 +62,7 @@ for (final String page : pageList) { final int byteLength = page.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; byteTotal += byteLength; -@@ -1255,7 +_,8 @@ +@@ -1257,7 +_,8 @@ } if (byteTotal > byteAllowed) { @@ -72,7 +72,7 @@ this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect return; } -@@ -1274,31 +_,45 @@ +@@ -1276,31 +_,45 @@ Optional optional = packet.title(); optional.ifPresent(list::add); list.addAll(packet.pages()); @@ -122,7 +122,7 @@ itemStack.set( DataComponents.WRITTEN_BOOK_CONTENT, new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list, true) -@@ -1312,6 +_,16 @@ +@@ -1314,6 +_,16 @@ return this.player.isTextFilteringEnabled() ? Filterable.passThrough(filteredText.filteredOrEmpty()) : Filterable.from(filteredText); } @@ -139,7 +139,7 @@ @Override public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); -@@ -1347,7 +_,15 @@ +@@ -1349,7 +_,15 @@ @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); @@ -156,7 +156,7 @@ this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause } else { ServerLevel serverLevel = this.player.serverLevel(); -@@ -1529,7 +_,7 @@ +@@ -1531,7 +_,7 @@ movedWrongly = true; if (event.getLogWarning()) // Paper end @@ -165,7 +165,7 @@ } // Paper } -@@ -1595,6 +_,8 @@ +@@ -1597,6 +_,8 @@ this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -174,7 +174,7 @@ Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -1650,6 +_,13 @@ +@@ -1652,6 +_,13 @@ this.player.tryResetCurrentImpulseContext(); } @@ -188,7 +188,7 @@ this.player.checkMovementStatistics(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1667,6 +_,17 @@ +@@ -1669,6 +_,17 @@ } } @@ -206,7 +206,7 @@ private boolean shouldCheckPlayerMovement(boolean isElytraMovement) { if (this.isSingleplayerOwner()) { return false; -@@ -2063,6 +_,7 @@ +@@ -2065,6 +_,7 @@ boolean cancelled; if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) { @@ -214,7 +214,7 @@ org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { -@@ -2735,6 +_,7 @@ +@@ -2737,6 +_,7 @@ AABB boundingBox = target.getBoundingBox(); if (this.player.canInteractWithEntity(boundingBox, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience value for interact range diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch index 4690f775c..1974dd8b7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch @@ -14,7 +14,7 @@ } public ArmorStand(Level level, double x, double y, double z) { -@@ -538,6 +_,7 @@ +@@ -546,6 +_,7 @@ @Override public void tick() { @@ -22,7 +22,7 @@ // Paper start - Allow ArmorStands not to tick if (!this.canTick) { if (this.noTickPoseDirty) { -@@ -867,4 +_,18 @@ +@@ -875,4 +_,18 @@ } } // Paper end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch index 2cad5634b..bb43e3ee4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch @@ -16,8 +16,8 @@ } else { List list = draw(stack, projectile, player); if (level instanceof ServerLevel serverLevel && !list.isEmpty()) { -- this.shoot(serverLevel, player, player.getUsedItemHand(), stack, list, powerForTime * 3.0F, 1.0F, powerForTime == 1.0F, null); -+ this.shoot(serverLevel, player, player.getUsedItemHand(), stack, list, powerForTime * 3.0F, (float) serverLevel.purpurConfig.bowProjectileOffset, powerForTime == 1.0F, null); // Purpur - Projectile offset config +- this.shoot(serverLevel, player, player.getUsedItemHand(), stack, list, powerForTime * 3.0F, 1.0F, powerForTime == 1.0F, null, powerForTime); // Paper - Pass draw strength ++ this.shoot(serverLevel, player, player.getUsedItemHand(), stack, list, powerForTime * 3.0F, (float) serverLevel.purpurConfig.bowProjectileOffset, powerForTime == 1.0F, null, powerForTime); // Paper - Pass draw strength // Purpur - Projectile offset config } level.playSound( diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch index 0da20a68d..76145281c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/item/ProjectileWeaponItem.java +++ b/net/minecraft/world/item/ProjectileWeaponItem.java -@@ -108,6 +_,8 @@ +@@ -109,6 +_,8 @@ abstractArrow.setCritArrow(true); } diff --git a/purpur-server/paper-patches/features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/paper-patches/features/0003-Barrels-and-enderchests-6-rows.patch index 372c10b75..753156331 100644 --- a/purpur-server/paper-patches/features/0003-Barrels-and-enderchests-6-rows.patch +++ b/purpur-server/paper-patches/features/0003-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java -index 6d3f9d5dab6c9a2860ae31cae24310aa2d62da7c..4f29c579f94efe59a8c78520d75676fc4875e2f0 100644 +index c00ddfe41439954fa0fd87c0933f274c8a752eb6..5fde4c71915f55f100cd30406803d6fca5b573dc 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java -@@ -145,8 +145,19 @@ public class CraftContainer extends AbstractContainerMenu { +@@ -150,8 +150,19 @@ public class CraftContainer extends AbstractContainerMenu { case PLAYER: case CHEST: case ENDER_CHEST: @@ -30,7 +30,7 @@ index 6d3f9d5dab6c9a2860ae31cae24310aa2d62da7c..4f29c579f94efe59a8c78520d75676fc 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 c6159c70f7a37b9bffe268b91905ce848d1d2927..d02adaaa6fbdc1c0eff44cb4a1f1642f9575a821 100644 +index f850e6cea92edc87ed54cf54488b5ebb606913ed..19180c08f41db939c1a9f0caeb62e5beb1117f69 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java @@ -84,7 +84,7 @@ public class CraftInventory implements Inventory { diff --git a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch index ffe044003..aa2f8243b 100644 --- a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0004-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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 825bbc16338b25bdd1d81bbf6efebe6a8435a789..f48d9dbd75e62621f7e4c8cd11f9fd4084db9097 100644 +index ffe8b5d974dc38e63fa649ba4c994167d3d6e10f..45a6add63146fa018cb246dfe9ad8811ec05effa 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -267,6 +267,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -299,6 +299,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { boolean retainPassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS); // Don't allow teleporting between worlds while keeping passengers if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -29,10 +29,10 @@ index 825bbc16338b25bdd1d81bbf6efebe6a8435a789..f48d9dbd75e62621f7e4c8cd11f9fd40 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index c659ef8f5bd96fb5767a22b80e5b7e284401fa51..a5cf4e4b9cc35bd81b530bc3eac31b0af3d72b7c 100644 +index 1450500f1500e6dbf54b8a496a788a0aae2ed1bc..09fc84319df0adb741dc29092ae33768878c8676 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1421,6 +1421,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1434,6 +1434,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper start - Teleport passenger API // Don't allow teleporting between worlds while keeping passengers if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -40,7 +40,7 @@ index c659ef8f5bd96fb5767a22b80e5b7e284401fa51..a5cf4e4b9cc35bd81b530bc3eac31b0a return false; } -@@ -1442,6 +1443,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1455,6 +1456,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch index 72eb1dba0..70cecd5e0 100644 --- a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0005-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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index f48d9dbd75e62621f7e4c8cd11f9fd4084db9097..8feb78c4d7fa793f01991756b618fc49de023db6 100644 +index 45a6add63146fa018cb246dfe9ad8811ec05effa..58c60172c4e71afa5ac41f56b15d6b1592b7e082 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -110,6 +110,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -24,10 +24,10 @@ index f48d9dbd75e62621f7e4c8cd11f9fd4084db9097..8feb78c4d7fa793f01991756b618fc49 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 3527864c55862f9ab4ed2762c1a6606cf3240cc0..6d654afe8d9e2f90510e68904a6e90ac9269810b 100644 +index 39f24f04cb406ad67bc297881960abc1b375c59f..fda6883bca79e99e486aef87866d8877eea9f140 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1179,4 +1179,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1170,4 +1170,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public CombatTracker getCombatTracker() { return this.combatTracker; } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index 4bb46083d..1995521bb 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -425,6 +_,20 @@ +@@ -429,6 +_,20 @@ this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager); this.pluginManager.paperPluginManager = this.paperPluginManager; // Paper end @@ -21,7 +21,7 @@ CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1069,6 +_,7 @@ +@@ -1073,6 +_,7 @@ org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -29,7 +29,7 @@ for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1084,6 +_,7 @@ +@@ -1088,6 +_,7 @@ } } world.spigotConfig.init(); // Spigot @@ -37,7 +37,7 @@ } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1101,6 +_,7 @@ +@@ -1105,6 +_,7 @@ org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -45,7 +45,7 @@ this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1600,6 +_,60 @@ +@@ -1604,6 +_,60 @@ return true; } @@ -106,7 +106,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -2958,6 +_,18 @@ +@@ -2967,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +125,7 @@ @Override public void restart() { CraftServer.this.restart(); -@@ -2990,6 +_,7 @@ +@@ -2999,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -133,7 +133,7 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3197,4 +_,18 @@ +@@ -3206,4 +_,18 @@ public void allowPausing(final Plugin plugin, final boolean value) { this.console.addPluginAllowingSleep(plugin.getName(), value); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch index f0857ca6e..e28023a49 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java -@@ -21,12 +_,12 @@ +@@ -16,12 +_,12 @@ @Override public boolean isPlayerSpawned() { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch index d39066dce..fb9804178 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -279,6 +_,7 @@ +@@ -295,6 +_,7 @@ @Override public void recalculatePermissions() { this.perm.recalculatePermissions(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch index d09a7cf6b..6acff6eeb 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java -@@ -27,4 +_,17 @@ +@@ -22,4 +_,17 @@ public void setPlayerCreated(boolean playerCreated) { this.getHandle().setPlayerCreated(playerCreated); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch index b84f5e23e..64c1d28e7 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch @@ -1,8 +1,8 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -@@ -148,4 +_,53 @@ - public String toString() { - return "CraftItem"; +@@ -143,4 +_,53 @@ + public UUID getThrower() { + return this.getHandle().thrower; } + + // Purpur start - Item entity immunities diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch index ec7eb8535..236a44b1f 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -527,7 +_,7 @@ +@@ -518,7 +_,7 @@ net.minecraft.server.level.ServerPlayer nmsKiller = killer == null ? null : ((CraftPlayer) killer).getHandle(); this.getHandle().setLastHurtByMob(nmsKiller); if (nmsKiller != null) { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch index aad4d7f90..f185fa5ca 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java -@@ -92,4 +_,17 @@ +@@ -86,4 +_,17 @@ public Llama getCaravanTail() { return this.getHandle().caravanTail == null ? null : (Llama) this.getHandle().caravanTail.getBukkitEntity(); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 6bdcafb0d..7136410a5 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -591,10 +_,15 @@ +@@ -612,10 +_,15 @@ @Override public void setPlayerListName(String name) { @@ -17,7 +17,7 @@ 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)) { -@@ -2732,6 +_,28 @@ +@@ -2723,6 +_,28 @@ return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -46,7 +46,7 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3594,4 +_,76 @@ +@@ -3585,4 +_,76 @@ public void setSimplifyContainerDesyncCheck(final boolean simplifyContainerDesyncCheck) { this.simplifyContainerDesyncCheck = simplifyContainerDesyncCheck; } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch index 44a2a5b99..0c72e0175 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch @@ -1,8 +1,8 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java -@@ -28,4 +_,17 @@ - public String toString() { - return "CraftSnowman"; +@@ -24,4 +_,17 @@ + public void setDerp(boolean derpMode) { + this.getHandle().setPumpkin(!derpMode); } + + // Purpur start - Summoner API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch index 320d8f394..266f13c33 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -@@ -385,4 +_,12 @@ +@@ -380,4 +_,12 @@ public void clearReputations() { getHandle().getGossips().gossips.clear(); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch index d7e9425f1..61556048d 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java -@@ -97,4 +_,18 @@ +@@ -92,4 +_,18 @@ public void enterInvulnerabilityPhase() { this.getHandle().makeInvulnerable(); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch index d05c7972a..4d83946e7 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -@@ -227,4 +_,15 @@ +@@ -228,4 +_,15 @@ return this.getKey().hashCode(); } } From 9d0aa8ebdea1f49d3828fe0e5c85effa8c658d1a Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 8 May 2025 22:08:56 -0700 Subject: [PATCH 090/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@42a2a6c2 Supports the ability for commands to be registered internally (#12520) PaperMC/Paper@753cff7c Improvements for Dump paper commands (#12512) PaperMC/Paper@e2da5d2f Registry API for supported Mob Variants (#12417) PaperMC/Paper@ab0253fe Expand PlayerDeathEvent API (#12221) PaperMC/Paper@cbcf75a5 Update visual fire handling with TriState support (#12303) PaperMC/Paper@6c3964d2 Properly save level data async (#12530) PaperMC/Paper@d2ad2e66 Add missing EntityLookup#getAllMapped from Moonrise --- gradle.properties | 2 +- .../java/org/bukkit/entity/Entity.java.patch | 2 +- .../java/org/bukkit/entity/Wolf.java.patch | 2 +- .../features/0001-Ridables.patch | 14 ++++----- ...-Minecart-settings-and-WASD-controls.patch | 4 +-- .../server/level/ServerPlayer.java.patch | 30 +++++++++---------- .../minecraft/world/entity/Entity.java.patch | 16 +++++----- .../features/0002-Ridables.patch | 6 ++-- ...0004-Add-EntityTeleportHinderedEvent.patch | 4 +-- ...005-API-for-any-mob-to-burn-daylight.patch | 4 +-- .../craftbukkit/entity/CraftEntity.java.patch | 2 +- 11 files changed, 43 insertions(+), 43 deletions(-) diff --git a/gradle.properties b/gradle.properties index 9deee2ca4..e7abc6d2d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = c98cd65802fcecfd3db613819e6053e2b8cbdf4f +paperCommit = d2ad2e668d2fdd0bd3f49362b244f37e1f5744f3 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch index aa9b7dde2..20fb56308 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1224,4 +_,59 @@ +@@ -1251,4 +_,59 @@ */ void broadcastHurtAnimation(@NotNull java.util.Collection players); // Paper end - broadcast hurt animation diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch index badb67f31..2952ec60a 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Wolf.java +++ b/src/main/java/org/bukkit/entity/Wolf.java -@@ -164,4 +_,20 @@ +@@ -163,4 +_,20 @@ return RegistryAccess.registryAccess().getRegistry(RegistryKey.WOLF_SOUND_VARIANT).getOrThrow(NamespacedKey.minecraft(key)); } } diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index a73155f50..9d085cbc6 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -30,7 +30,7 @@ index 924dc9a32cd78f37078ff47cde54e61844572f47..d1e33c3ed23f4c68694ec3628c64e87d /* Drop global time updates if (this.tickCount % 20 == 0) { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index f61521a4d57c73fb65f1f314ff6061cf63943e82..d8a8e6d006d18de5ec148a0d9d6f08a6a40a65bb 100644 +index f3f53791d4c5532434abc281a5798ee0e2653da2..56eabc55203756461fc679837b55b30a5c503268 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -213,6 +213,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -42,10 +42,10 @@ index f61521a4d57c73fb65f1f314ff6061cf63943e82..d8a8e6d006d18de5ec148a0d9d6f08a6 @Override public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 1879c2a15e3f28f5d4687d098c832671f342806f..5b396f22a9607f95fbc2fc505f92f9a72d4fcae0 100644 +index a7043588459defe8d47db011bab81403321319a0..bf673320ac4068550b54d64ace82a0f7278ed4d9 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -800,6 +800,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -799,6 +799,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.trackEnteredOrExitedLavaOnVehicle(); this.updatePlayerAttributes(); this.advancements.flushDirty(this, true); @@ -75,10 +75,10 @@ index c6b2591eb8ba7005919ea4b885f95c4d603305b6..9f695e97d247b24b12a4a115bfb012c7 if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 6c1dcbb9fff2ce8bb88e16d47dab7656c70f7367..bf50fa4694c693713db8c54c4a9b87d8d9a169cd 100644 +index b8a0abd1cbdc0c86ae9e68ebaeec14cd4728450e..05b936babba4fb9847dedb823406d06fa79a95c2 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -3094,6 +3094,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3110,6 +3110,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -92,7 +92,7 @@ index 6c1dcbb9fff2ce8bb88e16d47dab7656c70f7367..bf50fa4694c693713db8c54c4a9b87d8 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3135,6 +3142,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3151,6 +3158,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -107,7 +107,7 @@ index 6c1dcbb9fff2ce8bb88e16d47dab7656c70f7367..bf50fa4694c693713db8c54c4a9b87d8 if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5137,4 +5152,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5153,4 +5168,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter diff --git a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch index d1e04e141..b152a1ace 100644 --- a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch +++ b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index efea20895bc45d63621dd130fc05922ba1e10f87..5e92affba115662a8b16c7f15971e1770f29cbfd 100644 +index bf673320ac4068550b54d64ace82a0f7278ed4d9..ac6c8d1961bce62f1b8bd84908a6f343f2af21ae 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -1189,6 +1189,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1199,6 +1199,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc } else { // Purpur start - Add boat fall damage config if (damageSource.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index 258b3cffb..2766d1464 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -428,6 +_,10 @@ +@@ -427,6 +_,10 @@ public @Nullable com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent public @Nullable String clientBrandName = null; // Paper - Brand support public @Nullable 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 @@ -11,7 +11,7 @@ // Paper start - rewrite chunk system private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; -@@ -561,6 +_,10 @@ +@@ -560,6 +_,10 @@ this.respawnConfig = compound.read("respawn", ServerPlayer.RespawnConfig.CODEC).orElse(null); this.spawnExtraParticlesOnFall = compound.getBooleanOr("spawn_extra_particles_on_fall", false); this.raidOmenPosition = compound.read("raid_omen_position", BlockPos.CODEC).orElse(null); @@ -22,7 +22,7 @@ } @Override -@@ -578,6 +_,9 @@ +@@ -577,6 +_,9 @@ compound.storeNullable("raid_omen_position", BlockPos.CODEC, this.raidOmenPosition); this.saveEnderPearls(compound); this.getBukkitEntity().setExtraData(compound); // CraftBukkit @@ -32,15 +32,15 @@ } private void saveParentVehicle(CompoundTag tag) { -@@ -1060,6 +_,7 @@ - ) - ); +@@ -1070,6 +_,7 @@ + // Paper - moved up to sendClientboundPlayerCombatKillPacket() + sendClientboundPlayerCombatKillPacket(event.getShowDeathMessages(), deathScreenMessage); // Paper - Expand PlayerDeathEvent Team team = this.getTeam(); + if (org.purpurmc.purpur.PurpurConfig.deathMessageOnlyBroadcastToAffectedPlayer) this.sendSystemMessage(deathMessage); else // Purpur - Configurable broadcast settings if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) { this.server.getPlayerList().broadcastSystemMessage(deathMessage, false); } else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { -@@ -1166,6 +_,13 @@ +@@ -1176,6 +_,13 @@ if (this.isInvulnerableTo(level, damageSource)) { return false; } else { @@ -54,7 +54,7 @@ Entity entity = damageSource.getEntity(); if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. !(entity instanceof Player player && !this.canHarmPlayer(player)) -@@ -1392,6 +_,7 @@ +@@ -1402,6 +_,7 @@ serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -62,7 +62,7 @@ this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1509,7 +_,7 @@ +@@ -1519,7 +_,7 @@ new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), monster -> monster.isPreventingPlayerRest(this.serverLevel(), this) ); @@ -71,7 +71,7 @@ return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1546,7 +_,19 @@ +@@ -1556,7 +_,19 @@ CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); if (!this.serverLevel().canSleepThroughNights()) { @@ -92,7 +92,7 @@ } ((ServerLevel)this.level()).updateSleepingPlayerList(); -@@ -1638,6 +_,7 @@ +@@ -1648,6 +_,7 @@ @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -100,7 +100,7 @@ this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -1940,6 +_,26 @@ +@@ -1950,6 +_,26 @@ this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -127,7 +127,7 @@ @Override public void displayClientMessage(Component chatComponent, boolean actionBar) { this.sendSystemMessage(chatComponent, actionBar); -@@ -2157,6 +_,20 @@ +@@ -2167,6 +_,20 @@ ); } @@ -148,7 +148,7 @@ public void sendSystemMessage(Component mesage) { this.sendSystemMessage(mesage, false); } -@@ -2295,7 +_,67 @@ +@@ -2305,7 +_,67 @@ public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -217,7 +217,7 @@ public ServerStatsCounter getStats() { return this.stats; -@@ -2923,4 +_,56 @@ +@@ -2933,4 +_,56 @@ return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index a181398ca..b88e9207b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -86,7 +86,7 @@ if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { this.wasTouchingWater = false; } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) { -@@ -2513,6 +_,13 @@ +@@ -2516,6 +_,13 @@ compound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -100,7 +100,7 @@ return compound; } catch (Throwable var8) { CrashReport crashReport = CrashReport.forThrowable(var8, "Saving entity NBT"); -@@ -2630,6 +_,13 @@ +@@ -2646,6 +_,13 @@ freezeLocked = compound.getBooleanOr("Paper.FreezeLock", false); } // Paper end @@ -114,7 +114,7 @@ } catch (Throwable var8) { CrashReport crashReport = CrashReport.forThrowable(var8, "Loading entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); -@@ -2858,6 +_,7 @@ +@@ -2874,6 +_,7 @@ if (this.isAlive() && this instanceof Leashable leashable) { if (leashable.getLeashHolder() == player) { if (!this.level().isClientSide()) { @@ -122,7 +122,7 @@ // CraftBukkit start - fire PlayerUnleashEntityEvent // Paper start - Expand EntityUnleashEvent org.bukkit.event.player.PlayerUnleashEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials()); -@@ -3174,15 +_,18 @@ +@@ -3190,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } @@ -142,7 +142,7 @@ } } } -@@ -3387,7 +_,7 @@ +@@ -3403,7 +_,7 @@ } public int getMaxAirSupply() { @@ -151,7 +151,7 @@ } public int getAirSupply() { -@@ -3915,7 +_,7 @@ +@@ -3931,7 +_,7 @@ // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -160,7 +160,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4452,6 +_,12 @@ +@@ -4468,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -173,7 +173,7 @@ // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { -@@ -4860,7 +_,7 @@ +@@ -4876,7 +_,7 @@ } public float maxUpStep() { diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index ef0e88ee9..e38ca4be1 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 362df928a8e8bfe35a844d0a6de6985dd01a49d3..825bbc16338b25bdd1d81bbf6efebe6a8435a789 100644 +index 9ee51c63f2b524300a3c9f8025f8b8b49935814c..db183796391e90c12958096eb0099308d8647781 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1305,4 +1305,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1318,4 +1318,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.entity.get(io.papermc.paper.datacomponent.PaperDataComponentType.bukkitToMinecraft(type)) != null; } @@ -36,7 +36,7 @@ index 362df928a8e8bfe35a844d0a6de6985dd01a49d3..825bbc16338b25bdd1d81bbf6efebe6a + // Purpur end - Ridables } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index a7e3afe04ffbb0fd5fa5fcf7cd15efd7cea1c4e0..f32316b0357f1cb0501a052361a0221f8e9d1438 100644 +index 6f86a505c99010eb80e76e2fbe36414fcde80a39..3a3fbbfa0b82092cd9ac8eab2d179fb9f590aec8 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -514,6 +514,15 @@ public class CraftEventFactory { diff --git a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch index aa2f8243b..c6dd151e2 100644 --- a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0004-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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index ffe8b5d974dc38e63fa649ba4c994167d3d6e10f..45a6add63146fa018cb246dfe9ad8811ec05effa 100644 +index db183796391e90c12958096eb0099308d8647781..f7d2c10038b1bd7af4cf54984b3c0c9f2e2b8f21 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -299,6 +299,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -300,6 +300,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { boolean retainPassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS); // Don't allow teleporting between worlds while keeping passengers if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) { diff --git a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch index 70cecd5e0..831a3e39b 100644 --- a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0005-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/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 45a6add63146fa018cb246dfe9ad8811ec05effa..58c60172c4e71afa5ac41f56b15d6b1592b7e082 100644 +index f7d2c10038b1bd7af4cf54984b3c0c9f2e2b8f21..efcd7e52bfda50970054a37f8c98452e5306c66a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -110,6 +110,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -111,6 +111,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } // Purpur end - Fire Immunity API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch index ddbbc3b28..b5f0fd055 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -98,6 +_,18 @@ +@@ -99,6 +_,18 @@ this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } From 603c7557ba19f065be0a837d73bce26a8cc61999 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 9 May 2025 19:43:20 -0700 Subject: [PATCH 091/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@358e72ec Remove simplify remote item matching stuff for now PaperMC/Paper@04ffca0b Also remove CraftPlayer methods --- .../Run_Purpur_Paperclip_Jar.xml | 4 +-- gradle.properties | 2 +- .../features/0001-Ridables.patch | 4 +-- ...-Minecart-settings-and-WASD-controls.patch | 4 +-- .../server/level/ServerPlayer.java.patch | 26 +++++++++---------- ...0004-Add-EntityTeleportHinderedEvent.patch | 6 ++--- .../craftbukkit/entity/CraftPlayer.java.patch | 10 +++---- 7 files changed, 28 insertions(+), 28 deletions(-) diff --git a/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml b/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml index 72f5fa6c4..cdd44578f 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 e7abc6d2d..ec0880d7e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = d2ad2e668d2fdd0bd3f49362b244f37e1f5744f3 +paperCommit = 04ffca0b6ba65b0c711ffc3ac592c2302a48c0a9 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 9d085cbc6..009aa9ee9 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -42,10 +42,10 @@ index f3f53791d4c5532434abc281a5798ee0e2653da2..56eabc55203756461fc679837b55b30a @Override public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index a7043588459defe8d47db011bab81403321319a0..bf673320ac4068550b54d64ace82a0f7278ed4d9 100644 +index 5ced523477c2b86e2b46182a77a9d991cf4cdd1f..f55dc4affffd495b4c02b77c8a60f172c1c6cf79 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -799,6 +799,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -792,6 +792,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.trackEnteredOrExitedLavaOnVehicle(); this.updatePlayerAttributes(); this.advancements.flushDirty(this, true); diff --git a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch index b152a1ace..10367a373 100644 --- a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch +++ b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index bf673320ac4068550b54d64ace82a0f7278ed4d9..ac6c8d1961bce62f1b8bd84908a6f343f2af21ae 100644 +index f55dc4affffd495b4c02b77c8a60f172c1c6cf79..47a6a607513c97910c7d57e8fb4862f6de74f9ac 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -1199,6 +1199,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1192,6 +1192,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc } else { // Purpur start - Add boat fall damage config if (damageSource.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index 2766d1464..ddca6f955 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -427,6 +_,10 @@ +@@ -420,6 +_,10 @@ public @Nullable com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent public @Nullable String clientBrandName = null; // Paper - Brand support public @Nullable 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 @@ -11,7 +11,7 @@ // Paper start - rewrite chunk system private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; -@@ -560,6 +_,10 @@ +@@ -553,6 +_,10 @@ this.respawnConfig = compound.read("respawn", ServerPlayer.RespawnConfig.CODEC).orElse(null); this.spawnExtraParticlesOnFall = compound.getBooleanOr("spawn_extra_particles_on_fall", false); this.raidOmenPosition = compound.read("raid_omen_position", BlockPos.CODEC).orElse(null); @@ -22,7 +22,7 @@ } @Override -@@ -577,6 +_,9 @@ +@@ -570,6 +_,9 @@ compound.storeNullable("raid_omen_position", BlockPos.CODEC, this.raidOmenPosition); this.saveEnderPearls(compound); this.getBukkitEntity().setExtraData(compound); // CraftBukkit @@ -32,7 +32,7 @@ } private void saveParentVehicle(CompoundTag tag) { -@@ -1070,6 +_,7 @@ +@@ -1063,6 +_,7 @@ // Paper - moved up to sendClientboundPlayerCombatKillPacket() sendClientboundPlayerCombatKillPacket(event.getShowDeathMessages(), deathScreenMessage); // Paper - Expand PlayerDeathEvent Team team = this.getTeam(); @@ -40,7 +40,7 @@ if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) { this.server.getPlayerList().broadcastSystemMessage(deathMessage, false); } else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { -@@ -1176,6 +_,13 @@ +@@ -1169,6 +_,13 @@ if (this.isInvulnerableTo(level, damageSource)) { return false; } else { @@ -54,7 +54,7 @@ Entity entity = damageSource.getEntity(); if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. !(entity instanceof Player player && !this.canHarmPlayer(player)) -@@ -1402,6 +_,7 @@ +@@ -1395,6 +_,7 @@ serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -62,7 +62,7 @@ this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1519,7 +_,7 @@ +@@ -1512,7 +_,7 @@ new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), monster -> monster.isPreventingPlayerRest(this.serverLevel(), this) ); @@ -71,7 +71,7 @@ return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1556,7 +_,19 @@ +@@ -1549,7 +_,19 @@ CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); if (!this.serverLevel().canSleepThroughNights()) { @@ -92,7 +92,7 @@ } ((ServerLevel)this.level()).updateSleepingPlayerList(); -@@ -1648,6 +_,7 @@ +@@ -1641,6 +_,7 @@ @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -100,7 +100,7 @@ this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -1950,6 +_,26 @@ +@@ -1943,6 +_,26 @@ this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -127,7 +127,7 @@ @Override public void displayClientMessage(Component chatComponent, boolean actionBar) { this.sendSystemMessage(chatComponent, actionBar); -@@ -2167,6 +_,20 @@ +@@ -2160,6 +_,20 @@ ); } @@ -148,7 +148,7 @@ public void sendSystemMessage(Component mesage) { this.sendSystemMessage(mesage, false); } -@@ -2305,7 +_,67 @@ +@@ -2298,7 +_,67 @@ public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -217,7 +217,7 @@ public ServerStatsCounter getStats() { return this.stats; -@@ -2933,4 +_,56 @@ +@@ -2926,4 +_,56 @@ return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch index c6dd151e2..44589e34d 100644 --- a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch @@ -29,10 +29,10 @@ index db183796391e90c12958096eb0099308d8647781..f7d2c10038b1bd7af4cf54984b3c0c9f } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 1450500f1500e6dbf54b8a496a788a0aae2ed1bc..09fc84319df0adb741dc29092ae33768878c8676 100644 +index 382c20eb62a2619b3f2a68f422f5e704d83e6a80..07c45bce5f3ceea897b9453a2c1568cdb2479560 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1434,6 +1434,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1433,6 +1433,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper start - Teleport passenger API // Don't allow teleporting between worlds while keeping passengers if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -40,7 +40,7 @@ index 1450500f1500e6dbf54b8a496a788a0aae2ed1bc..09fc84319df0adb741dc29092ae33768 return false; } -@@ -1455,6 +1456,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1454,6 +1455,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 7136410a5..1b650af88 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -612,10 +_,15 @@ +@@ -611,10 +_,15 @@ @Override public void setPlayerListName(String name) { @@ -17,7 +17,7 @@ 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)) { -@@ -2723,6 +_,28 @@ +@@ -2722,6 +_,28 @@ return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -46,9 +46,9 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3585,4 +_,76 @@ - public void setSimplifyContainerDesyncCheck(final boolean simplifyContainerDesyncCheck) { - this.simplifyContainerDesyncCheck = simplifyContainerDesyncCheck; +@@ -3568,4 +_,76 @@ + public void setDeathScreenScore(final int score) { + getHandle().setScore(score); } + + // Purpur start - Purpur client support From eca78060998bfa9efc42cd153b7e4061f144aef8 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 11 May 2025 20:44:03 -0700 Subject: [PATCH 092/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@a2525819 Update mache --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index ec0880d7e..17926d215 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = 04ffca0b6ba65b0c711ffc3ac592c2302a48c0a9 +paperCommit = a25258190b600c170334dd5071c4cbd6d203ec3c org.gradle.configuration-cache = true org.gradle.caching = true From e4e9cfdf290cbf6f4a25bb007de9aa0fd6a4a08a Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 17 May 2025 18:47:05 -0700 Subject: [PATCH 093/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@d683970d Add FishHookStateChangeEvent (#12165) PaperMC/Paper@369ad170 Cached tag parser for itemstack reading (#12547) PaperMC/Paper@841d6342 Fix ItemStack#addUnsafeEnchantment ignored for missing enchantment component (#12549) --- gradle.properties | 2 +- .../world/item/enchantment/EnchantmentHelper.java.patch | 2 +- .../org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index 17926d215..ef28f7eff 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = a25258190b600c170334dd5071c4cbd6d203ec3c +paperCommit = 841d63423076b815500380a896f45fbb9c1cb19d org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch index 918c41cec..3ddd0e236 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/net/minecraft/world/item/enchantment/EnchantmentHelper.java -@@ -602,4 +_,58 @@ +@@ -608,4 +_,58 @@ interface EnchantmentVisitor { void accept(Holder enchantment, int level); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch index a7623accc..90833d2c6 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -@@ -669,4 +_,285 @@ +@@ -667,4 +_,285 @@ } // Paper end - data component API From 3de2fc7d2f1f269f080ff7d080c8ddeb6d8bec5d Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 18 May 2025 15:03:30 -0700 Subject: [PATCH 094/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@c000b352 fix(bukkit-brig-forwarding-map): Invert isEmpty method (#12555) PaperMC/Paper@28d7df75 Backport HeroesOfTheVillage datafixer fix PaperMC/Paper@f1dbed07 Implement BlocksAttack DamageReduction and ItemDamage (#12538) PaperMC/Paper@cc38032b Deprecate TeleportCause CHORUS_FRUIT for CONSUMABLE_EFFECT (#12546) PaperMC/Paper@35878677 [ci/skip] Fix format and mentions for ItemDamageFunction (#12560) PaperMC/Paper@7171d299 [ci/skip] Mention CAN_PLACE/CAN_BREAK component in ItemMeta (#12559) PaperMC/Paper@6f73e62e Add getPickItemStack (#12552) PaperMC/Paper@ce0fa4c4 Replace old version command with brigadier equivalent (#12502) --- gradle.properties | 2 +- .../com/destroystokyo/paper/util/VersionFetcher.java.patch | 6 +++--- .../java/org/bukkit/command/SimpleCommandMap.java.patch | 4 ++-- .../org/bukkit/command/defaults/VersionCommand.java.patch | 4 ++-- .../files/src/main/java/org/bukkit/entity/Entity.java.patch | 2 +- purpur-server/paper-patches/features/0002-Ridables.patch | 4 ++-- .../features/0004-Add-EntityTeleportHinderedEvent.patch | 4 ++-- .../features/0005-API-for-any-mob-to-burn-daylight.patch | 4 ++-- .../org/bukkit/craftbukkit/entity/CraftEntity.java.patch | 2 +- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/gradle.properties b/gradle.properties index ef28f7eff..6ae0be592 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = 841d63423076b815500380a896f45fbb9c1cb19d +paperCommit = ce0fa4c4383e5dff3923a648cdf48ca1214b8868 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java.patch b/purpur-api/paper-patches/files/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java.patch index 4264eea11..50791b448 100644 --- a/purpur-api/paper-patches/files/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java.patch @@ -1,8 +1,8 @@ --- a/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java +++ b/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java -@@ -28,6 +_,12 @@ - */ - Component getVersionMessage(String serverVersion); +@@ -40,6 +_,12 @@ + return getVersionMessage(); + } + // Purpur start + default int distance() { diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/command/SimpleCommandMap.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/command/SimpleCommandMap.java.patch index 83f75df21..5b3d1d43d 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/command/SimpleCommandMap.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/command/SimpleCommandMap.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/command/SimpleCommandMap.java +++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java -@@ -153,6 +_,19 @@ +@@ -146,6 +_,19 @@ return false; } @@ -20,7 +20,7 @@ // Paper start - Plugins do weird things to workaround normal registration if (target.timings == null) { target.timings = co.aikar.timings.TimingsManager.getCommandTiming(null, target); -@@ -160,10 +_,10 @@ +@@ -153,10 +_,10 @@ // Paper end try { diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch index b781c954e..1f09b0518 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/command/defaults/VersionCommand.java +++ b/src/main/java/org/bukkit/command/defaults/VersionCommand.java -@@ -213,7 +_,7 @@ +@@ -214,7 +_,7 @@ String version = Bukkit.getVersion(); // Paper start if (version.startsWith("null")) { // running from ide? @@ -9,7 +9,7 @@ return; } setVersionMessage(getVersionFetcher().getVersionMessage(version)); -@@ -254,9 +_,11 @@ +@@ -255,9 +_,11 @@ // Paper start private void setVersionMessage(final @NotNull Component msg) { lastCheck = System.currentTimeMillis(); diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch index 20fb56308..d25846872 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1251,4 +_,59 @@ +@@ -1261,4 +_,59 @@ */ void broadcastHurtAnimation(@NotNull java.util.Collection players); // Paper end - broadcast hurt animation diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index e38ca4be1..b0bba987c 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 9ee51c63f2b524300a3c9f8025f8b8b49935814c..db183796391e90c12958096eb0099308d8647781 100644 +index f70cf786578b1467ec1e02ecea4844dca4277614..041fc1d4182834bda5de9b2172601a2a59b5514b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1318,4 +1318,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1325,4 +1325,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.entity.get(io.papermc.paper.datacomponent.PaperDataComponentType.bukkitToMinecraft(type)) != null; } diff --git a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch index 44589e34d..d66c24d89 100644 --- a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0004-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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index db183796391e90c12958096eb0099308d8647781..f7d2c10038b1bd7af4cf54984b3c0c9f2e2b8f21 100644 +index 041fc1d4182834bda5de9b2172601a2a59b5514b..2c87953a3b99c5e776fe06271d5cba5cc355bf53 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -300,6 +300,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -301,6 +301,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { boolean retainPassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS); // Don't allow teleporting between worlds while keeping passengers if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) { diff --git a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch index 831a3e39b..39eb31054 100644 --- a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0005-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/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index f7d2c10038b1bd7af4cf54984b3c0c9f2e2b8f21..efcd7e52bfda50970054a37f8c98452e5306c66a 100644 +index 2c87953a3b99c5e776fe06271d5cba5cc355bf53..395951c968e95adffa97e1851d104faf192744fd 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -111,6 +111,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -112,6 +112,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } // Purpur end - Fire Immunity API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch index b5f0fd055..b7b39de1b 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -99,6 +_,18 @@ +@@ -100,6 +_,18 @@ this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } From 09f547de09fc5d886f18f6d99ff389289766ec9d Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 18 May 2025 15:49:56 -0700 Subject: [PATCH 095/289] add `mob-griefing-override` config options (#1661) --- ...ing-override-to-everything-affected.patch} | 126 +++++++----- .../org/purpurmc/purpur/PurpurConfig.java | 4 +- .../purpurmc/purpur/PurpurWorldConfig.java | 190 ++++++++++++++---- 3 files changed, 222 insertions(+), 98 deletions(-) rename purpur-server/minecraft-patches/features/{0015-Add-mobGriefing-bypass-to-everything-affected.patch => 0015-Add-mobGriefing-override-to-everything-affected.patch} (69%) diff --git a/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-bypass-to-everything-affected.patch b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch similarity index 69% rename from purpur-server/minecraft-patches/features/0015-Add-mobGriefing-bypass-to-everything-affected.patch rename to purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch index d14b4d2bd..720686b30 100644 --- a/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch @@ -1,11 +1,11 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Encode42 Date: Tue, 5 Jan 2021 22:21:56 -0500 -Subject: [PATCH] Add mobGriefing bypass to everything affected +Subject: [PATCH] Add mobGriefing override to everything affected diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 5dd1a36b967176f96a18cb0d842ccb73b7b584ef..13a1b5dd8b1a07a584f71b1f24da28965f5e2a5d 100644 +index 5dd1a36b967176f96a18cb0d842ccb73b7b584ef..e7b7f09d224a630f61259a0d905b2ad6a6fa6986 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -1904,7 +1904,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -13,12 +13,12 @@ index 5dd1a36b967176f96a18cb0d842ccb73b7b584ef..13a1b5dd8b1a07a584f71b1f24da2896 boolean var6 = false; if (this.dead && entitySource instanceof WitherBoss) { // Paper - if (serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { -+ if (serverLevel.purpurConfig.witherBypassMobGriefing ^ serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur - Add mobGriefing bypass to everything affected ++ if (serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, serverLevel.purpurConfig.witherMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected BlockPos blockPos = this.blockPosition(); BlockState blockState = Blocks.WITHER_ROSE.defaultBlockState(); if (this.level().getBlockState(blockPos).isAir() && blockState.canSurvive(this.level(), blockPos)) { diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index ca1d0164c90e695731f05de39c1d2fff947ecfc1..b828524d62a940f89f0c0fa926ef0423019ec212 100644 +index ca1d0164c90e695731f05de39c1d2fff947ecfc1..964c7e60a8b0171ee31b12a277a4e9f8940ab58d 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java @@ -519,7 +519,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -26,12 +26,12 @@ index ca1d0164c90e695731f05de39c1d2fff947ecfc1..b828524d62a940f89f0c0fa926ef0423 && this.isAlive() && !this.dead - && serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { -+ && serverLevel.purpurConfig.entitiesPickUpLootBypassMobGriefing ^ serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur - Add mobGriefing bypass to everything affected ++ && serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, serverLevel.purpurConfig.entitiesPickUpLootMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected Vec3i pickupReach = this.getPickupReach(); for (ItemEntity itemEntity : this.level() diff --git a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -index f15e4cfd8c0ac5e08779dbe6b9aa40bfe9ce4d8f..d90a616eca474ae940d46cda94e816bddda70183 100644 +index f15e4cfd8c0ac5e08779dbe6b9aa40bfe9ce4d8f..ec03365dc786596521d280ea4d6948c651ee8deb 100644 --- a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +++ b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java @@ -49,7 +49,7 @@ public class HarvestFarmland extends Behavior { @@ -39,12 +39,12 @@ index f15e4cfd8c0ac5e08779dbe6b9aa40bfe9ce4d8f..d90a616eca474ae940d46cda94e816bd @Override protected boolean checkExtraStartConditions(ServerLevel level, Villager owner) { - if (!level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { -+ if (!level.purpurConfig.villagerBypassMobGriefing == !level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur - Add mobGriefing bypass to everything affected ++ if (!level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, level.purpurConfig.villagerMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected return false; } else if (!owner.getVillagerData().profession().is(VillagerProfession.FARMER) && !(level.purpurConfig.villagerClericsFarmWarts && owner.getVillagerData().profession().is(VillagerProfession.CLERIC))) { // Purpur - Option for Villager Clerics to farm Nether Wart return false; diff --git a/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java b/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java -index e026e07ca86700c864a3dceda6817fb7b6cb11e9..f1dfe0bf047e7d331b2379a672ff7b8eae4c9c90 100644 +index e026e07ca86700c864a3dceda6817fb7b6cb11e9..cf380a13d6d54d1a9e8d10b31124942d59fca80c 100644 --- a/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java +++ b/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java @@ -30,7 +30,7 @@ public class BreakDoorGoal extends DoorInteractGoal { @@ -52,12 +52,12 @@ index e026e07ca86700c864a3dceda6817fb7b6cb11e9..f1dfe0bf047e7d331b2379a672ff7b8e public boolean canUse() { return super.canUse() - && getServerLevel(this.mob).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) -+ && this.mob.level().purpurConfig.zombieBypassMobGriefing == !getServerLevel(this.mob).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) // Purpur - Add mobGriefing bypass to everything affected ++ && getServerLevel(this.mob).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, this.mob.level().purpurConfig.zombieMobGriefingOverride) // Purpur - Add mobGriefing override to everything affected && this.isValidDifficulty(this.mob.level().getDifficulty()) && !this.isOpen(); } diff --git a/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/net/minecraft/world/entity/ai/goal/EatBlockGoal.java -index 7a75415a469bc99f45a5cfaab038181717903f1d..fc244a1fbd401f6ea92e7428b9738939e0cb2b1e 100644 +index 7a75415a469bc99f45a5cfaab038181717903f1d..3c0b94e011f029a54460c878f1f7d4f603a5e3b0 100644 --- a/net/minecraft/world/entity/ai/goal/EatBlockGoal.java +++ b/net/minecraft/world/entity/ai/goal/EatBlockGoal.java @@ -67,7 +67,7 @@ public class EatBlockGoal extends Goal { @@ -65,7 +65,7 @@ index 7a75415a469bc99f45a5cfaab038181717903f1d..fc244a1fbd401f6ea92e7428b9738939 final BlockState blockState = this.level.getBlockState(blockPos); // Paper - fix wrong block state if (IS_EDIBLE.test(blockState)) { // Paper - fix wrong block state - if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockPos, blockState.getFluidState().createLegacyBlock(), !getServerLevel(this.level).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - fix wrong block state -+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockPos, blockState.getFluidState().createLegacyBlock(), !getServerLevel(this.level).purpurConfig.sheepBypassMobGriefing == !getServerLevel(this.level).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - fix wrong block state // Purpur - Add mobGriefing bypass to everything affected ++ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockPos, blockState.getFluidState().createLegacyBlock(), !getServerLevel(this.level).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, getServerLevel(this.level).purpurConfig.sheepMobGriefingOverride))) { // CraftBukkit // Paper - fix wrong block state // Purpur - Add mobGriefing override to everything affected this.level.destroyBlock(blockPos, false); } @@ -74,12 +74,12 @@ index 7a75415a469bc99f45a5cfaab038181717903f1d..fc244a1fbd401f6ea92e7428b9738939 BlockPos blockPos1 = blockPos.below(); if (this.level.getBlockState(blockPos1).is(Blocks.GRASS_BLOCK)) { - if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockPos1, Blocks.DIRT.defaultBlockState(), !getServerLevel(this.level).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - Fix wrong block state -+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockPos1, Blocks.DIRT.defaultBlockState(), !getServerLevel(this.level).purpurConfig.sheepBypassMobGriefing == !getServerLevel(this.level).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Paper - Fix wrong block state // Purpur - Add mobGriefing bypass to everything affected ++ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockPos1, Blocks.DIRT.defaultBlockState(), !getServerLevel(this.level).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, getServerLevel(this.level).purpurConfig.sheepMobGriefingOverride))) { // CraftBukkit // Paper - Fix wrong block state // Purpur - Add mobGriefing override to everything affected this.level.levelEvent(2001, blockPos1, Block.getId(Blocks.GRASS_BLOCK.defaultBlockState())); this.level.setBlock(blockPos1, Blocks.DIRT.defaultBlockState(), 2); } diff --git a/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java b/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java -index 3d40911970caf6f1de2a1ebee1df4c077703226a..9b29c0c676a45de2abdc76e0502ac06ac1e53097 100644 +index 3d40911970caf6f1de2a1ebee1df4c077703226a..179597558e93c6e9172207f716f9294de3926c49 100644 --- a/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java +++ b/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java @@ -35,7 +35,7 @@ public class RemoveBlockGoal extends MoveToBlockGoal { @@ -87,12 +87,12 @@ index 3d40911970caf6f1de2a1ebee1df4c077703226a..9b29c0c676a45de2abdc76e0502ac06a @Override public boolean canUse() { - if (!getServerLevel(this.removerMob).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { -+ if (!getServerLevel(this.removerMob).purpurConfig.zombieBypassMobGriefing == !getServerLevel(this.removerMob).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur - Add mobGriefing bypass to everything affected ++ if (!getServerLevel(this.removerMob).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, getServerLevel(this.removerMob).purpurConfig.zombieMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected return false; } else if (this.nextStartTick > 0) { this.nextStartTick--; diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 6a531e5d93d42d3dca7a5e49fb2ba14063665d2e..e3631adee6ef690807768c90045c28570982b315 100644 +index 6a531e5d93d42d3dca7a5e49fb2ba14063665d2e..9fc8ec5886e2b747f9780e43df3ac2212f50526d 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -1061,7 +1061,7 @@ public class Fox extends Animal { @@ -100,12 +100,12 @@ index 6a531e5d93d42d3dca7a5e49fb2ba14063665d2e..e3631adee6ef690807768c90045c2857 protected void onReachedTarget() { - if (getServerLevel(Fox.this.level()).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { -+ if (getServerLevel(Fox.this.level()).purpurConfig.foxBypassMobGriefing ^ getServerLevel(Fox.this.level()).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur - Add mobGriefing bypass to everything affected ++ if (getServerLevel(Fox.this.level()).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, getServerLevel(Fox.this.level()).purpurConfig.foxMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected BlockState blockState = Fox.this.level().getBlockState(this.blockPos); if (blockState.is(Blocks.SWEET_BERRY_BUSH)) { this.pickSweetBerries(blockState); diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index 6c1e23e96352aa777c4e0c7d00f7620aa3f29a32..1c88e12d743325a429cad27928ea1ac43a696e8a 100644 +index 6c1e23e96352aa777c4e0c7d00f7620aa3f29a32..09b618be3ae8baed11f4d411923edbc9b26ccca8 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java @@ -647,7 +647,7 @@ public class Rabbit extends Animal { @@ -113,12 +113,12 @@ index 6c1e23e96352aa777c4e0c7d00f7620aa3f29a32..1c88e12d743325a429cad27928ea1ac4 public boolean canUse() { if (this.nextStartTick <= 0) { - if (!getServerLevel(this.rabbit).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { -+ if (!getServerLevel(this.rabbit).purpurConfig.rabbitBypassMobGriefing == !getServerLevel(this.rabbit).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur - Add mobGriefing bypass to everything affected ++ if (!getServerLevel(this.rabbit).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, getServerLevel(this.rabbit).purpurConfig.rabbitMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected return false; } diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index 764429b9d20ac105c9ae3b050adf5d3defbd6038..1bf6fdc0149975fefbb73563e0d4861b178459b8 100644 +index 764429b9d20ac105c9ae3b050adf5d3defbd6038..af3af77e5d6420044fa6d5aa62e64311247bc1a8 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java @@ -135,7 +135,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -126,12 +126,12 @@ index 764429b9d20ac105c9ae3b050adf5d3defbd6038..1bf6fdc0149975fefbb73563e0d4861b } - if (!serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { -+ if (!serverLevel.purpurConfig.snowGolemBypassMobGriefing == !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur - Add mobGriefing bypass to everything affected ++ if (!serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, serverLevel.purpurConfig.snowGolemMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected return; } diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 793567170b33ba21016b8767598d294fca4acec4..f014b4ca2baf97edf472ce4d8af1209eaf4d53d1 100644 +index 793567170b33ba21016b8767598d294fca4acec4..967c360e11beeb0150920e80d2e2bcbbfd305ab2 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -543,7 +543,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -139,12 +139,12 @@ index 793567170b33ba21016b8767598d294fca4acec4..f014b4ca2baf97edf472ce4d8af1209e BlockState blockState = level.getBlockState(blockPos); if (!blockState.isAir() && !blockState.is(BlockTags.DRAGON_TRANSPARENT)) { - if (level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !blockState.is(BlockTags.DRAGON_IMMUNE)) { -+ if (level.purpurConfig.enderDragonBypassMobGriefing ^ level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !blockState.is(BlockTags.DRAGON_IMMUNE)) { // Purpur - Add mobGriefing bypass to everything affected ++ if (level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, level.purpurConfig.enderDragonMobGriefingOverride) && !blockState.is(BlockTags.DRAGON_IMMUNE)) { // Purpur - Add mobGriefing override to everything affected // CraftBukkit start - Add blocks to list rather than destroying them //flag1 = level.removeBlock(blockPos, false) || flag1; flag1 = true; diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index f0ec9334d9e6bf879568a085db691c46f7c652b6..951de2194f8e669e454edd8678cd254e94d18ab7 100644 +index f0ec9334d9e6bf879568a085db691c46f7c652b6..38772967805dc73ffaae19d95b4f2d203e5a2be4 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -494,7 +494,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { @@ -152,12 +152,12 @@ index f0ec9334d9e6bf879568a085db691c46f7c652b6..951de2194f8e669e454edd8678cd254e if (this.destroyBlocksTick > 0) { this.destroyBlocksTick--; - if (this.destroyBlocksTick == 0 && level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { -+ if (this.destroyBlocksTick == 0 && level.purpurConfig.witherBypassMobGriefing ^ level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur - Add mobGriefing bypass to everything affected ++ if (this.destroyBlocksTick == 0 && level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, level.purpurConfig.witherMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected boolean flag = false; int alternativeTarget = Mth.floor(this.getBbWidth() / 2.0F + 1.0F); int floor = Mth.floor(this.getBbHeight()); diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index c01c91db94136700f9501624763e3bd735986a9f..0cae67d67af733b0bc6558f8cc1056b45554e3ce 100644 +index c01c91db94136700f9501624763e3bd735986a9f..9ba0ff75dcee5f331bc8e51ac1c53273c92e3e3b 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java @@ -509,7 +509,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -165,7 +165,7 @@ index c01c91db94136700f9501624763e3bd735986a9f..0cae67d67af733b0bc6558f8cc1056b4 if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls return this.enderman.getCarriedBlock() != null - && getServerLevel(this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) -+ && getServerLevel(this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) == !this.enderman.level().purpurConfig.endermanBypassMobGriefing // Purpur - Add mobGriefing bypass to everything affected ++ && getServerLevel(this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, this.enderman.level().purpurConfig.endermanMobGriefingOverride) // Purpur - Add mobGriefing override to everything affected && this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0; } @@ -174,12 +174,12 @@ index c01c91db94136700f9501624763e3bd735986a9f..0cae67d67af733b0bc6558f8cc1056b4 if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls return this.enderman.getCarriedBlock() == null - && getServerLevel(this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) -+ && getServerLevel(this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) == !this.enderman.level().purpurConfig.endermanBypassMobGriefing // Purpur - Add mobGriefing bypass to everything affected ++ && getServerLevel(this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, this.enderman.level().purpurConfig.endermanMobGriefingOverride) // Purpur - Add mobGriefing override to everything affected && this.enderman.getRandom().nextInt(reducedTickDelay(20)) == 0; } diff --git a/net/minecraft/world/entity/monster/Evoker.java b/net/minecraft/world/entity/monster/Evoker.java -index 5773dd99ad2b014dde6666f4b32a1e6ee024a9fc..b14b72f7bbf6cb65b1515c12bae47187fe1371b5 100644 +index 5773dd99ad2b014dde6666f4b32a1e6ee024a9fc..6cba6b164749987c161790bccb5d842047fbf53c 100644 --- a/net/minecraft/world/entity/monster/Evoker.java +++ b/net/minecraft/world/entity/monster/Evoker.java @@ -323,7 +323,7 @@ public class Evoker extends SpellcasterIllager { @@ -187,12 +187,12 @@ index 5773dd99ad2b014dde6666f4b32a1e6ee024a9fc..b14b72f7bbf6cb65b1515c12bae47187 } else { ServerLevel serverLevel = getServerLevel(Evoker.this.level()); - if (!serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { -+ if (!serverLevel.purpurConfig.evokerBypassMobGriefing == !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur - Add mobGriefing bypass to everything affected ++ if (!serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, serverLevel.purpurConfig.evokerMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected return false; } else { List nearbyEntities = serverLevel.getNearbyEntities( diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index 3adf0ec66db61b556a06ffe0fe835b57f8520948..568a0d17600a82109263de715f3d54fc24039452 100644 +index 3adf0ec66db61b556a06ffe0fe835b57f8520948..007b35d1411aeda9cce3f8be431815367fab957c 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java @@ -178,7 +178,7 @@ public class Ravager extends Raider { @@ -200,12 +200,12 @@ index 3adf0ec66db61b556a06ffe0fe835b57f8520948..568a0d17600a82109263de715f3d54fc if (this.level() instanceof ServerLevel serverLevel && this.horizontalCollision - && serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { -+ && serverLevel.purpurConfig.ravagerBypassMobGriefing ^ serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur - Add mobGriefing bypass to everything affected ++ && serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, serverLevel.purpurConfig.ravagerMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected boolean flag = false; AABB aabb = this.getBoundingBox().inflate(0.2); diff --git a/net/minecraft/world/entity/monster/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java -index c200d57841304ba0d7a76fdd9a440fe9f2b25136..ff3761507f2025fd1e652afee03a18de3508676a 100644 +index c200d57841304ba0d7a76fdd9a440fe9f2b25136..6f4aaeb645d9638764c3516d2f1501661ac56170 100644 --- a/net/minecraft/world/entity/monster/Silverfish.java +++ b/net/minecraft/world/entity/monster/Silverfish.java @@ -170,7 +170,7 @@ public class Silverfish extends Monster { @@ -213,7 +213,7 @@ index c200d57841304ba0d7a76fdd9a440fe9f2b25136..ff3761507f2025fd1e652afee03a18de } else { RandomSource random = this.mob.getRandom(); - if (getServerLevel(this.mob).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && random.nextInt(reducedTickDelay(10)) == 0) { -+ if (getServerLevel(this.mob).purpurConfig.silverfishBypassMobGriefing ^ getServerLevel(this.mob).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && random.nextInt(reducedTickDelay(10)) == 0) { // Purpur - Add mobGriefing bypass to everything affected ++ if (getServerLevel(this.mob).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, getServerLevel(this.mob).purpurConfig.silverfishMobGriefingOverride) && random.nextInt(reducedTickDelay(10)) == 0) { // Purpur - Add mobGriefing override to everything affected this.selectedDirection = Direction.getRandom(random); BlockPos blockPos = BlockPos.containing(this.mob.getX(), this.mob.getY() + 0.5, this.mob.getZ()).relative(this.selectedDirection); BlockState blockState = this.mob.level().getBlockState(blockPos); @@ -222,12 +222,12 @@ index c200d57841304ba0d7a76fdd9a440fe9f2b25136..ff3761507f2025fd1e652afee03a18de if (block instanceof InfestedBlock) { // CraftBukkit start - BlockState afterState = getServerLevel(level).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? blockState.getFluidState().createLegacyBlock() : ((InfestedBlock) block).hostStateByInfested(level.getBlockState(blockPos1)); // Paper - fix wrong block state -+ BlockState afterState = getServerLevel(level).purpurConfig.silverfishBypassMobGriefing ^ getServerLevel(level).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? blockState.getFluidState().createLegacyBlock() : ((InfestedBlock) block).hostStateByInfested(level.getBlockState(blockPos1)); // Paper - fix wrong block state // Purpur - Add mobGriefing bypass to everything affected ++ BlockState afterState = getServerLevel(level).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, getServerLevel(level).purpurConfig.silverfishMobGriefingOverride) ? blockState.getFluidState().createLegacyBlock() : ((InfestedBlock) block).hostStateByInfested(level.getBlockState(blockPos1)); // Paper - fix wrong block state // Purpur - Add mobGriefing override to everything affected if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.silverfish, blockPos1, afterState)) { // Paper - fix wrong block state continue; } diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index b37038568b83db1602dca06aa06d72c4c4978cdd..8d37820522b12f2e513ca38c6ccdbb6ef3c2fc71 100644 +index b37038568b83db1602dca06aa06d72c4c4978cdd..6b404571f2086c280b16d253e218c750bf085c37 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -449,7 +449,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -235,12 +235,12 @@ index b37038568b83db1602dca06aa06d72c4c4978cdd..8d37820522b12f2e513ca38c6ccdbb6e @Override public boolean wantsToPickUp(ServerLevel level, ItemStack stack) { - return level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, stack); -+ return level.purpurConfig.piglinBypassMobGriefing ^ level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, stack); // Purpur - Add mobGriefing bypass to everything affected ++ return level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, level.purpurConfig.piglinMobGriefingOverride) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, stack); // Purpur - Add mobGriefing override to everything affected } protected boolean canReplaceCurrentItem(ItemStack candidate) { diff --git a/net/minecraft/world/entity/projectile/LargeFireball.java b/net/minecraft/world/entity/projectile/LargeFireball.java -index db1b5bce212a5147be82504469f1fa9660812ebc..b97ea6fea26182945b6360644f17d172166574d3 100644 +index db1b5bce212a5147be82504469f1fa9660812ebc..9e994953a8a8757496892441c155fba5a511c19b 100644 --- a/net/minecraft/world/entity/projectile/LargeFireball.java +++ b/net/minecraft/world/entity/projectile/LargeFireball.java @@ -19,20 +19,20 @@ public class LargeFireball extends Fireball { @@ -248,14 +248,14 @@ index db1b5bce212a5147be82504469f1fa9660812ebc..b97ea6fea26182945b6360644f17d172 public LargeFireball(EntityType entityType, Level level) { super(entityType, level); - this.isIncendiary = (level instanceof ServerLevel serverLevel) && serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit -+ this.isIncendiary = (level instanceof ServerLevel serverLevel) && serverLevel.purpurConfig.fireballsBypassMobGriefing ^ serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur - Add mobGriefing bypass to everything affected ++ this.isIncendiary = (level instanceof ServerLevel serverLevel) && serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, serverLevel.purpurConfig.fireballsMobGriefingOverride); // CraftBukkit // Purpur - Add mobGriefing override to everything affected } public LargeFireball(Level level, LivingEntity owner, Vec3 movement, int explosionPower) { super(EntityType.FIREBALL, owner, movement, level); this.explosionPower = explosionPower; - this.isIncendiary = (level instanceof ServerLevel serverLevel) && serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit -+ this.isIncendiary = (level instanceof ServerLevel serverLevel) && serverLevel.purpurConfig.fireballsBypassMobGriefing ^ serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur - Add mobGriefing bypass to everything affected ++ this.isIncendiary = (level instanceof ServerLevel serverLevel) && serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, serverLevel.purpurConfig.fireballsMobGriefingOverride); // CraftBukkit // Purpur - Add mobGriefing override to everything affected } @Override @@ -263,12 +263,12 @@ index db1b5bce212a5147be82504469f1fa9660812ebc..b97ea6fea26182945b6360644f17d172 super.onHit(result); if (this.level() instanceof ServerLevel serverLevel) { - boolean _boolean = serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); -+ boolean _boolean = serverLevel.purpurConfig.fireballsBypassMobGriefing ^ serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur - Add mobGriefing bypass to everything affected ++ boolean _boolean = serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, serverLevel.purpurConfig.fireballsMobGriefingOverride); // Purpur - Add mobGriefing override to everything affected // CraftBukkit start - fire ExplosionPrimeEvent org.bukkit.event.entity.ExplosionPrimeEvent event = new org.bukkit.event.entity.ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); if (event.callEvent()) { diff --git a/net/minecraft/world/entity/projectile/Projectile.java b/net/minecraft/world/entity/projectile/Projectile.java -index 4487c03183d20a187d391dd124abb7b926508b5b..3f0fe1190f5ec11efb148d481e0ed5d97f177969 100644 +index 4487c03183d20a187d391dd124abb7b926508b5b..0a1cee73ee7d895dba55745647daa4870038515c 100644 --- a/net/minecraft/world/entity/projectile/Projectile.java +++ b/net/minecraft/world/entity/projectile/Projectile.java @@ -466,7 +466,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { @@ -276,12 +276,12 @@ index 4487c03183d20a187d391dd124abb7b926508b5b..3f0fe1190f5ec11efb148d481e0ed5d9 public boolean mayInteract(ServerLevel level, BlockPos pos) { Entity owner = this.getOwner(); - return owner instanceof Player ? owner.mayInteract(level, pos) : owner == null || level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); -+ return owner instanceof Player ? owner.mayInteract(level, pos) : owner == null || level.purpurConfig.projectilesBypassMobGriefing ^ level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur - Add mobGriefing bypass to everything affected ++ return owner instanceof Player ? owner.mayInteract(level, pos) : owner == null || level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, level.purpurConfig.projectilesMobGriefingOverride); // Purpur - Add mobGriefing override to everything affected } public boolean mayBreak(ServerLevel level) { diff --git a/net/minecraft/world/entity/projectile/SmallFireball.java b/net/minecraft/world/entity/projectile/SmallFireball.java -index 8c84cea43fc0e42a576004663670977eac99f1a6..808aa5dcb27c87b6ba5c1eee639486067447e370 100644 +index 8c84cea43fc0e42a576004663670977eac99f1a6..6a0ec832226894687b28f35e1a8a190ba1542201 100644 --- a/net/minecraft/world/entity/projectile/SmallFireball.java +++ b/net/minecraft/world/entity/projectile/SmallFireball.java @@ -25,7 +25,7 @@ public class SmallFireball extends Fireball { @@ -289,12 +289,12 @@ index 8c84cea43fc0e42a576004663670977eac99f1a6..808aa5dcb27c87b6ba5c1eee63948606 // CraftBukkit start if (this.getOwner() != null && this.getOwner() instanceof Mob) { - this.isIncendiary = (level instanceof ServerLevel serverLevel) && serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); -+ this.isIncendiary = (level instanceof ServerLevel serverLevel) && serverLevel.purpurConfig.fireballsBypassMobGriefing ^ serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur - Add mobGriefing bypass to everything affected ++ this.isIncendiary = (level instanceof ServerLevel serverLevel) && serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, serverLevel.purpurConfig.fireballsMobGriefingOverride); // Purpur - Add mobGriefing override to everything affected } // CraftBukkit end } diff --git a/net/minecraft/world/entity/raid/Raider.java b/net/minecraft/world/entity/raid/Raider.java -index e81ae747fe95c22321fc69791a6509d601826fd6..77bb3aa7ff042aab6464aac55c846cb9082e5b97 100644 +index e81ae747fe95c22321fc69791a6509d601826fd6..76ebbab40f5bac6d5f588410d3c5e6716cbe0679 100644 --- a/net/minecraft/world/entity/raid/Raider.java +++ b/net/minecraft/world/entity/raid/Raider.java @@ -400,7 +400,7 @@ public abstract class Raider extends PatrollingMonster { @@ -302,12 +302,30 @@ index e81ae747fe95c22321fc69791a6509d601826fd6..77bb3aa7ff042aab6464aac55c846cb9 private boolean cannotPickUpBanner() { - if (!getServerLevel(this.mob).getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items -+ if (!this.mob.level().purpurConfig.pillagerBypassMobGriefing == !getServerLevel(this.mob).getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items // Purpur - Add mobGriefing bypass to everything affected ++ if (!getServerLevel(this.mob).getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING, this.mob.level().purpurConfig.pillagerMobGriefingOverride) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items // Purpur - Add mobGriefing override to everything affected if (!this.mob.hasActiveRaid()) { return true; } else if (this.mob.getCurrentRaid().isOver()) { +diff --git a/net/minecraft/world/level/GameRules.java b/net/minecraft/world/level/GameRules.java +index 02bc5d83b92a594ec519f0a02b0517fdb4b9e954..92fe6acbd530e985da23f50e615817309915122c 100644 +--- a/net/minecraft/world/level/GameRules.java ++++ b/net/minecraft/world/level/GameRules.java +@@ -343,6 +343,13 @@ public class GameRules { + this.getRule(key).setFrom(rule, level); // CraftBukkit - per-world + } + ++ public boolean getBoolean(GameRules.Key key, Boolean gameRuleOverride) { ++ if (gameRuleOverride != null) { ++ return gameRuleOverride; ++ } ++ return this.getBoolean(key); ++ } ++ + public boolean getBoolean(GameRules.Key key) { + return this.getRule(key).get(); + } diff --git a/net/minecraft/world/level/block/CropBlock.java b/net/minecraft/world/level/block/CropBlock.java -index b370b955ac8636275dfada4f38a7ca10297f7dac..275eabf64977cdf262de55124c3e5f88d8667213 100644 +index b370b955ac8636275dfada4f38a7ca10297f7dac..d345235db5a8d5f1ebbeb5bbb5e7924cb1a75518 100644 --- a/net/minecraft/world/level/block/CropBlock.java +++ b/net/minecraft/world/level/block/CropBlock.java @@ -169,7 +169,7 @@ public class CropBlock extends VegetationBlock implements BonemealableBlock { @@ -315,12 +333,12 @@ index b370b955ac8636275dfada4f38a7ca10297f7dac..275eabf64977cdf262de55124c3e5f88 protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent - if (level instanceof ServerLevel serverLevel && entity instanceof Ravager && serverLevel.purpurConfig.ravagerGriefableBlocks.contains(serverLevel.getBlockState(pos).getBlock()) && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Purpur - Configurable ravager griefable blocks list -+ if (level instanceof ServerLevel serverLevel && entity instanceof Ravager && serverLevel.purpurConfig.ravagerGriefableBlocks.contains(serverLevel.getBlockState(pos).getBlock()) && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !serverLevel.purpurConfig.ravagerBypassMobGriefing == !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Purpur - Configurable ravager griefable blocks list // Purpur - Add mobGriefing bypass to everything affected ++ if (level instanceof ServerLevel serverLevel && entity instanceof Ravager && serverLevel.purpurConfig.ravagerGriefableBlocks.contains(serverLevel.getBlockState(pos).getBlock()) && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, serverLevel.purpurConfig.ravagerMobGriefingOverride))) { // CraftBukkit // Purpur - Configurable ravager griefable blocks list // Purpur - Add mobGriefing override to everything affected serverLevel.destroyBlock(pos, true, entity); } diff --git a/net/minecraft/world/level/block/FarmBlock.java b/net/minecraft/world/level/block/FarmBlock.java -index 9883e6d1a1b76155c8ba1817fda6615b4742e18e..c816bd47577cbc898b10d0cfd9c40404429ef929 100644 +index 9883e6d1a1b76155c8ba1817fda6615b4742e18e..dc1ad33f801c308871931d271f97ff9185e9effb 100644 --- a/net/minecraft/world/level/block/FarmBlock.java +++ b/net/minecraft/world/level/block/FarmBlock.java @@ -114,7 +114,7 @@ public class FarmBlock extends Block { @@ -328,12 +346,12 @@ index 9883e6d1a1b76155c8ba1817fda6615b4742e18e..c816bd47577cbc898b10d0cfd9c40404 && (serverLevel.purpurConfig.farmlandTrampleHeight >= 0D ? fallDistance >= serverLevel.purpurConfig.farmlandTrampleHeight : level.random.nextFloat() < fallDistance - 0.5) // Purpur - Configurable farmland trample height && entity instanceof LivingEntity - && (entity instanceof Player || serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) -+ && (entity instanceof Player || serverLevel.purpurConfig.farmlandBypassMobGriefing ^ serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) // Purpur - Add mobGriefing bypass to everything affected ++ && (entity instanceof Player || serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, serverLevel.purpurConfig.farmlandMobGriefingOverride)) // Purpur - Add mobGriefing override to everything affected && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) { // CraftBukkit start - Interact soil org.bukkit.event.Cancellable cancellable; diff --git a/net/minecraft/world/level/block/PowderSnowBlock.java b/net/minecraft/world/level/block/PowderSnowBlock.java -index 248ac9bc820a96fc7653471308b18834fc735a77..5c6ebde129289f2f7feb44dc1083aa030f55fbff 100644 +index 248ac9bc820a96fc7653471308b18834fc735a77..ef70ba88e492904c426c7d35df442fa6f8d68844 100644 --- a/net/minecraft/world/level/block/PowderSnowBlock.java +++ b/net/minecraft/world/level/block/PowderSnowBlock.java @@ -89,7 +89,7 @@ public class PowderSnowBlock extends Block implements BucketPickup { @@ -341,12 +359,12 @@ index 248ac9bc820a96fc7653471308b18834fc735a77..5c6ebde129289f2f7feb44dc1083aa03 && entity1.mayInteract(serverLevel, blockPos)) { // CraftBukkit start - if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity1, pos, Blocks.AIR.defaultBlockState(), !(serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) || entity1 instanceof Player))) { -+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity1, pos, Blocks.AIR.defaultBlockState(), !(serverLevel.purpurConfig.powderSnowBypassMobGriefing ^ serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) || entity1 instanceof Player))) { // Purpur - Add mobGriefing bypass to everything affected ++ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity1, pos, Blocks.AIR.defaultBlockState(), !(serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, serverLevel.purpurConfig.powderSnowMobGriefingOverride) || entity1 instanceof Player))) { // Purpur - Add mobGriefing override to everything affected return; } // CraftBukkit end diff --git a/net/minecraft/world/level/block/TurtleEggBlock.java b/net/minecraft/world/level/block/TurtleEggBlock.java -index a23626dbfacf98ef1bc7918ca35406fa71307bed..bb3bba0d0bf89e82b929fe95247f50ccba964c02 100644 +index a23626dbfacf98ef1bc7918ca35406fa71307bed..41e51cb4f1a2443361b52c8523688e2c307a1d75 100644 --- a/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/net/minecraft/world/level/block/TurtleEggBlock.java @@ -214,7 +214,7 @@ public class TurtleEggBlock extends Block { @@ -354,7 +372,7 @@ index a23626dbfacf98ef1bc7918ca35406fa71307bed..bb3bba0d0bf89e82b929fe95247f50cc if (entity instanceof Player) return true; - return level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); -+ return level.purpurConfig.turtleEggsBypassMobGriefing ^ level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur - Add mobGriefing bypass to everything affected ++ return level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, level.purpurConfig.turtleEggsMobGriefingOverride); // Purpur - Add mobGriefing override to everything affected // Purpur end - Add turtle egg block options } } diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java index 3dc90c1b1..e5bf7ea47 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -74,8 +74,8 @@ public class PurpurConfig { commands = new HashMap<>(); commands.put("purpur", new PurpurCommand("purpur")); - version = getInt("config-version", 42); - set("config-version", 42); + version = getInt("config-version", 43); + set("config-version", 43); readConfig(PurpurConfig.class, null); diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index ac18bc20a..31cc4e6e6 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -84,6 +84,11 @@ public class PurpurWorldConfig { return predicate.test(bool); } + private Boolean getBooleanOrDefault(String path, Boolean def) { + String val = getString(path, BooleanUtils.toString(def, "true", "false", "default")).toLowerCase(); + return BooleanUtils.toBooleanObject(val, "true", "false", "default"); + } + private double getDouble(String path, double def) { if (PurpurConfig.config.get("world-settings.default." + path) == null) { PurpurConfig.config.addDefault("world-settings.default." + path, def); @@ -144,9 +149,9 @@ public class PurpurWorldConfig { public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; public boolean persistentDroppableEntityDisplayNames = true; - public boolean entitiesPickUpLootBypassMobGriefing = false; - public boolean fireballsBypassMobGriefing = false; - public boolean projectilesBypassMobGriefing = false; + public Boolean entitiesPickUpLootMobGriefingOverride = null; + public Boolean fireballsMobGriefingOverride = null; + public Boolean projectilesMobGriefingOverride = null; public boolean noteBlockIgnoreAbove = false; public boolean imposeTeleportRestrictionsOnGateways = false; public boolean imposeTeleportRestrictionsOnNetherPortals = false; @@ -173,9 +178,20 @@ public class PurpurWorldConfig { raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); - entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); - fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); - projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", false); + set("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", null); + set("gameplay-mechanics.entities-pick-up-loot-mob-griefing-override", oldVal ? true : "default"); + boolean oldVal2 = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", false); + set("gameplay-mechanics.fireballs-bypass-mob-griefing", null); + set("gameplay-mechanics.fireballs-mob-griefing-override", oldVal2 ? true : "default"); + boolean oldVal3 = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", false); + set("gameplay-mechanics.projectiles-bypass-mob-griefing", null); + set("gameplay-mechanics.projectiles-mob-griefing-override", oldVal3 ? true : "default"); + } + entitiesPickUpLootMobGriefingOverride = getBooleanOrDefault("gameplay-mechanics.entities-pick-up-loot-mob-griefing-override", entitiesPickUpLootMobGriefingOverride); + fireballsMobGriefingOverride = getBooleanOrDefault("gameplay-mechanics.fireballs-mob-griefing-override", fireballsMobGriefingOverride); + projectilesMobGriefingOverride = getBooleanOrDefault("gameplay-mechanics.projectiles-mob-griefing-override", projectilesMobGriefingOverride); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); imposeTeleportRestrictionsOnNetherPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-nether-portals", imposeTeleportRestrictionsOnNetherPortals); @@ -992,7 +1008,7 @@ public class PurpurWorldConfig { endCrystalPlaceAnywhere = getBoolean("gameplay-mechanics.item.end-crystal.place-anywhere", endCrystalPlaceAnywhere); } - public boolean farmlandBypassMobGriefing = false; + public Boolean farmlandMobGriefingOverride = null; public boolean farmlandGetsMoistFromBelow = false; public boolean farmlandAlpha = false; public boolean farmlandTramplingDisabled = false; @@ -1000,7 +1016,12 @@ public class PurpurWorldConfig { public boolean farmlandTramplingFeatherFalling = false; public double farmlandTrampleHeight = -1D; private void farmlandSettings() { - farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("blocks.farmland.bypass-mob-griefing", false); + set("blocks.farmland.bypass-mob-griefing", null); + set("blocks.farmland.mob-griefing-override", oldVal ? true : "default"); + } + farmlandMobGriefingOverride = getBooleanOrDefault("blocks.farmland.mob-griefing-override", farmlandMobGriefingOverride); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); farmlandAlpha = getBoolean("blocks.farmland.use-alpha-farmland", farmlandAlpha); farmlandTramplingDisabled = getBoolean("blocks.farmland.disable-trampling", farmlandTramplingDisabled); @@ -1053,9 +1074,14 @@ public class PurpurWorldConfig { magmaBlockDamageWhenSneaking = getBoolean("blocks.magma-block.damage-when-sneaking", magmaBlockDamageWhenSneaking); } - public boolean powderSnowBypassMobGriefing = false; + public Boolean powderSnowMobGriefingOverride = null; private void powderSnowSettings() { - powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("blocks.powder_snow.bypass-mob-griefing", false); + set("blocks.powder_snow.bypass-mob-griefing", null); + set("blocks.powder_snow.mob-griefing-override", oldVal ? true : "default"); + } + powderSnowMobGriefingOverride = getBooleanOrDefault("blocks.powder_snow.mob-griefing-override", powderSnowMobGriefingOverride); } public int railActivationRange = 8; @@ -1125,14 +1151,19 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromExpOrbs = false; public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; - public boolean turtleEggsBypassMobGriefing = false; + public Boolean turtleEggsMobGriefingOverride = null; public int turtleEggsRandomTickCrackChance = 500; public boolean turtleEggsTramplingFeatherFalling = false; private void turtleEggSettings() { turtleEggsBreakFromExpOrbs = getBoolean("blocks.turtle_egg.break-from-exp-orbs", turtleEggsBreakFromExpOrbs); turtleEggsBreakFromItems = getBoolean("blocks.turtle_egg.break-from-items", turtleEggsBreakFromItems); turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); - turtleEggsBypassMobGriefing = getBoolean("blocks.turtle_egg.bypass-mob-griefing", turtleEggsBypassMobGriefing); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("blocks.turtle_egg.bypass-mob-griefing", false); + set("blocks.turtle_egg.bypass-mob-griefing", null); + set("blocks.turtle_egg.mob-griefing-override", oldVal ? true : "default"); + } + turtleEggsMobGriefingOverride = getBooleanOrDefault("blocks.turtle_egg.mob-griefing-override", turtleEggsMobGriefingOverride); turtleEggsRandomTickCrackChance = getInt("blocks.turtle_egg.random-tick-crack-chance", turtleEggsRandomTickCrackChance); turtleEggsTramplingFeatherFalling = getBoolean("blocks.turtle_egg.feather-fall-distance-affects-trampling", turtleEggsTramplingFeatherFalling); } @@ -1488,7 +1519,7 @@ public class PurpurWorldConfig { public double creeperScale = 1.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; - public boolean creeperBypassMobGriefing = false; + public Boolean creeperMobGriefingOverride = null; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1508,7 +1539,12 @@ public class PurpurWorldConfig { creeperScale = Mth.clamp(getDouble("mobs.creeper.attributes.scale", creeperScale), 0.0625D, 16.0D); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); - creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("mobs.creeper.bypass-mob-griefing", false); + set("mobs.creeper.bypass-mob-griefing", null); + set("mobs.creeper.mob-griefing-override", oldVal ? true : "default"); + } + creeperMobGriefingOverride = getBooleanOrDefault("mobs.creeper.mob-griefing-override", creeperMobGriefingOverride); 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); @@ -1640,7 +1676,7 @@ public class PurpurWorldConfig { public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; - public boolean enderDragonBypassMobGriefing = false; + public Boolean enderDragonMobGriefingOverride = null; public boolean enderDragonTakeDamageFromWater = false; public boolean enderDragonCanRideVehicles = false; private void enderDragonSettings() { @@ -1659,7 +1695,12 @@ 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); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("mobs.ender_dragon.bypass-mob-griefing", false); + set("mobs.ender_dragon.bypass-mob-griefing", null); + set("mobs.ender_dragon.mob-griefing-override", oldVal ? true : "default"); + } + enderDragonMobGriefingOverride = getBooleanOrDefault("mobs.ender_dragon.mob-griefing-override", enderDragonMobGriefingOverride); enderDragonTakeDamageFromWater = getBoolean("mobs.ender_dragon.takes-damage-from-water", enderDragonTakeDamageFromWater); enderDragonCanRideVehicles = getBoolean("mobs.ender_dragon.can-ride-vehicles", enderDragonCanRideVehicles); } @@ -1671,7 +1712,7 @@ public class PurpurWorldConfig { public double endermanScale = 1.0D; public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; - public boolean endermanBypassMobGriefing = false; + public Boolean endermanMobGriefingOverride = null; public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -1695,7 +1736,12 @@ public class PurpurWorldConfig { endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D); 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); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("mobs.enderman.bypass-mob-griefing", false); + set("mobs.enderman.bypass-mob-griefing", null); + set("mobs.enderman.mob-griefing-override", oldVal ? true : "default"); + } + endermanMobGriefingOverride = getBooleanOrDefault("mobs.enderman.mob-griefing-override", endermanMobGriefingOverride); 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); @@ -1731,7 +1777,7 @@ public class PurpurWorldConfig { public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; public double evokerScale = 1.0D; - public boolean evokerBypassMobGriefing = false; + public Boolean evokerMobGriefingOverride = null; public boolean evokerTakeDamageFromWater = false; public boolean evokerAlwaysDropExp = false; private void evokerSettings() { @@ -1745,7 +1791,12 @@ public class PurpurWorldConfig { } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerScale = Mth.clamp(getDouble("mobs.evoker.attributes.scale", evokerScale), 0.0625D, 16.0D); - evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("mobs.evoker.bypass-mob-griefing", false); + set("mobs.evoker.bypass-mob-griefing", null); + set("mobs.evoker.mob-griefing-override", oldVal ? true : "default"); + } + evokerMobGriefingOverride = getBooleanOrDefault("mobs.evoker.mob-griefing-override", evokerMobGriefingOverride); evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); evokerAlwaysDropExp = getBoolean("mobs.evoker.always-drop-exp", evokerAlwaysDropExp); } @@ -1757,7 +1808,7 @@ public class PurpurWorldConfig { public double foxScale = 1.0D; public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; - public boolean foxBypassMobGriefing = false; + public Boolean foxMobGriefingOverride = null; public boolean foxTakeDamageFromWater = false; public boolean foxAlwaysDropExp = false; private void foxSettings() { @@ -1773,7 +1824,12 @@ public class PurpurWorldConfig { foxScale = Mth.clamp(getDouble("mobs.fox.attributes.scale", foxScale), 0.0625D, 16.0D); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); - foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("mobs.fox.bypass-mob-griefing", false); + set("mobs.fox.bypass-mob-griefing", null); + set("mobs.fox.mob-griefing-override", oldVal ? true : "default"); + } + foxMobGriefingOverride = getBooleanOrDefault("mobs.fox.mob-griefing-override", foxMobGriefingOverride); foxTakeDamageFromWater = getBoolean("mobs.fox.takes-damage-from-water", foxTakeDamageFromWater); foxAlwaysDropExp = getBoolean("mobs.fox.always-drop-exp", foxAlwaysDropExp); } @@ -2354,7 +2410,7 @@ public class PurpurWorldConfig { public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; public double piglinScale = 1.0D; - public boolean piglinBypassMobGriefing = false; + public Boolean piglinMobGriefingOverride = null; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -2371,7 +2427,12 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D); - piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("mobs.piglin.bypass-mob-griefing", false); + set("mobs.piglin.bypass-mob-griefing", null); + set("mobs.piglin.mob-griefing-override", oldVal ? true : "default"); + } + piglinMobGriefingOverride = getBooleanOrDefault("mobs.piglin.mob-griefing-override", piglinMobGriefingOverride); 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); @@ -2406,7 +2467,7 @@ public class PurpurWorldConfig { public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; public double pillagerScale = 1.0D; - public boolean pillagerBypassMobGriefing = false; + public Boolean pillagerMobGriefingOverride = null; public boolean pillagerTakeDamageFromWater = false; public boolean pillagerAlwaysDropExp = false; private void pillagerSettings() { @@ -2420,7 +2481,12 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D); - pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("mobs.pillager.bypass-mob-griefing", false); + set("mobs.pillager.bypass-mob-griefing", null); + set("mobs.pillager.mob-griefing-override", oldVal ? true : "default"); + } + pillagerMobGriefingOverride = getBooleanOrDefault("mobs.pillager.mob-griefing-override", pillagerMobGriefingOverride); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); pillagerAlwaysDropExp = getBoolean("mobs.pillager.always-drop-exp", pillagerAlwaysDropExp); } @@ -2482,7 +2548,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; - public boolean rabbitBypassMobGriefing = false; + public Boolean rabbitMobGriefingOverride = null; public boolean rabbitTakeDamageFromWater = false; public boolean rabbitAlwaysDropExp = false; private void rabbitSettings() { @@ -2499,7 +2565,12 @@ 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); - rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("mobs.rabbit.bypass-mob-griefing", false); + set("mobs.rabbit.bypass-mob-griefing", null); + set("mobs.rabbit.mob-griefing-override", oldVal ? true : "default"); + } + rabbitMobGriefingOverride = getBooleanOrDefault("mobs.rabbit.mob-griefing-override", rabbitMobGriefingOverride); rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); rabbitAlwaysDropExp = getBoolean("mobs.rabbit.always-drop-exp", rabbitAlwaysDropExp); } @@ -2509,7 +2580,7 @@ public class PurpurWorldConfig { public boolean ravagerControllable = true; public double ravagerMaxHealth = 100.0D; public double ravagerScale = 1.0D; - public boolean ravagerBypassMobGriefing = false; + public Boolean ravagerMobGriefingOverride = null; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); public boolean ravagerAlwaysDropExp = false; @@ -2525,7 +2596,12 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D); - ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("mobs.ravager.bypass-mob-griefing", false); + set("mobs.ravager.bypass-mob-griefing", null); + set("mobs.ravager.mob-griefing-override", oldVal ? true : "default"); + } + ravagerMobGriefingOverride = getBooleanOrDefault("mobs.ravager.mob-griefing-override", ravagerMobGriefingOverride); ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater); List defaultRavagerGriefableBlocks = List.of( "minecraft:oak_leaves", @@ -2595,7 +2671,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public double sheepScale = 1.0D; public int sheepBreedingTicks = 6000; - public boolean sheepBypassMobGriefing = false; + public Boolean sheepMobGriefingOverride = null; public boolean sheepTakeDamageFromWater = false; public boolean sheepAlwaysDropExp = false; private void sheepSettings() { @@ -2610,7 +2686,12 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); - sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("mobs.sheep.bypass-mob-griefing", false); + set("mobs.sheep.bypass-mob-griefing", null); + set("mobs.sheep.mob-griefing-override", oldVal ? true : "default"); + } + sheepMobGriefingOverride = getBooleanOrDefault("mobs.sheep.mob-griefing-override", sheepMobGriefingOverride); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); sheepAlwaysDropExp = getBoolean("mobs.sheep.always-drop-exp", sheepAlwaysDropExp); } @@ -2656,7 +2737,7 @@ public class PurpurWorldConfig { public double silverfishScale = 1.0D; public double silverfishMovementSpeed = 0.25D; public double silverfishAttackDamage = 1.0D; - public boolean silverfishBypassMobGriefing = false; + public Boolean silverfishMobGriefingOverride = null; public boolean silverfishTakeDamageFromWater = false; public boolean silverfishAlwaysDropExp = false; private void silverfishSettings() { @@ -2672,7 +2753,12 @@ public class PurpurWorldConfig { silverfishScale = Mth.clamp(getDouble("mobs.silverfish.attributes.scale", silverfishScale), 0.0625D, 16.0D); silverfishMovementSpeed = getDouble("mobs.silverfish.attributes.movement_speed", silverfishMovementSpeed); silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage); - silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("mobs.silverfish.bypass-mob-griefing", false); + set("mobs.silverfish.bypass-mob-griefing", null); + set("mobs.silverfish.mob-griefing-override", oldVal ? true : "default"); + } + silverfishMobGriefingOverride = getBooleanOrDefault("mobs.silverfish.mob-griefing-override", silverfishMobGriefingOverride); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); silverfishAlwaysDropExp = getBoolean("mobs.silverfish.always-drop-exp", silverfishAlwaysDropExp); } @@ -2785,7 +2871,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; - public boolean snowGolemBypassMobGriefing = false; + public Boolean snowGolemMobGriefingOverride = null; public boolean snowGolemTakeDamageFromWater = true; public boolean snowGolemAlwaysDropExp = false; private void snowGolemSettings() { @@ -2805,7 +2891,12 @@ 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); - snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("mobs.snow_golem.bypass-mob-griefing", false); + set("mobs.snow_golem.bypass-mob-griefing", null); + set("mobs.snow_golem.mob-griefing-override", oldVal ? true : "default"); + } + snowGolemMobGriefingOverride = getBooleanOrDefault("mobs.snow_golem.mob-griefing-override", snowGolemMobGriefingOverride); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); snowGolemAlwaysDropExp = getBoolean("mobs.snow_golem.always-drop-exp", snowGolemAlwaysDropExp); } @@ -3044,7 +3135,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; - public boolean villagerBypassMobGriefing = false; + public Boolean villagerMobGriefingOverride = null; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -3075,7 +3166,12 @@ 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); - villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("mobs.villager.bypass-mob-griefing", false); + set("mobs.villager.bypass-mob-griefing", null); + set("mobs.villager.mob-griefing-override", oldVal ? true : "default"); + } + villagerMobGriefingOverride = getBooleanOrDefault("mobs.villager.mob-griefing-override", villagerMobGriefingOverride); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); @@ -3192,7 +3288,7 @@ public class PurpurWorldConfig { public double witherScale = 1.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; - public boolean witherBypassMobGriefing = false; + public Boolean witherMobGriefingOverride = null; public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -3216,7 +3312,12 @@ public class PurpurWorldConfig { witherScale = Mth.clamp(getDouble("mobs.wither.attributes.scale", witherScale), 0.0625D, 16.0D); 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); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("mobs.wither.bypass-mob-griefing", false); + set("mobs.wither.bypass-mob-griefing", null); + set("mobs.wither.mob-griefing-override", oldVal ? true : "default"); + } + witherMobGriefingOverride = getBooleanOrDefault("mobs.wither.mob-griefing-override", witherMobGriefingOverride); 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); @@ -3312,7 +3413,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; - public boolean zombieBypassMobGriefing = false; + public Boolean zombieMobGriefingOverride = null; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; public double zombieHeadVisibilityPercent = 0.5D; @@ -3332,7 +3433,12 @@ 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); + if (PurpurConfig.version < 43) { + boolean oldVal = getBoolean("mobs.zombie.bypass-mob-griefing", false); + set("mobs.zombie.bypass-mob-griefing", null); + set("mobs.zombie.mob-griefing-override", oldVal ? true : "default"); + } + zombieMobGriefingOverride = getBooleanOrDefault("mobs.zombie.mob-griefing-override", zombieMobGriefingOverride); 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); From 1dd9bd0ca4adbae94cdb917738a59770066dbccc Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 20 May 2025 21:13:46 -0700 Subject: [PATCH 096/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@fa360aa8 Add some missing annotations and an incorrect one (#12204) PaperMC/Paper@113b18ee Update paperweight and Gradle wrapper (#12573) --- build.gradle.kts | 2 +- gradle.properties | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- .../sources/net/minecraft/world/level/Level.java.patch | 6 +++--- .../bukkit/craftbukkit/entity/CraftPlayer.java.patch | 10 +++++----- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 2d5925231..2702101e2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ import org.gradle.api.tasks.testing.logging.TestLogEvent plugins { java // TODO java launcher tasks - id("io.papermc.paperweight.patcher") version "2.0.0-beta.16" + id("io.papermc.paperweight.patcher") version "2.0.0-beta.17" } val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/" diff --git a/gradle.properties b/gradle.properties index 6ae0be592..00fc3a483 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = ce0fa4c4383e5dff3923a648cdf48ca1214b8868 +paperCommit = 113b18ee08720cacc90fe98605fbab1cbf8ab9d6 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cea7a793a..ca025c83a 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.12-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch index 7bb427566..56101522d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch @@ -60,10 +60,10 @@ // Paper end - getblock optimisations - cache world height/sections this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).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) levelData).getLevelName(), env); // Purpur - Purpur config files ++ this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).getLevelName(), environment); // Purpur - Purpur config files + this.playerBreedingCooldowns = this.getNewBreedingCooldownCache(); // Purpur - Add adjustable breeding cooldown to config - this.generator = gen; - this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); + this.generator = generator; + this.world = new CraftWorld((ServerLevel) this, generator, biomeProvider, environment); @@ -2127,4 +_,14 @@ return this.id; diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 1b650af88..8b63cde56 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -17,13 +17,13 @@ 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)) { -@@ -2722,6 +_,28 @@ +@@ -2720,6 +_,28 @@ return this.getHandle().getAbilities().walkingSpeed * 2f; } + // Purpur start - OfflinePlayer API + @Override -+ public boolean teleportOffline(@NotNull Location destination) { ++ public boolean teleportOffline(Location destination) { + return this.teleport(destination); + } + @@ -33,12 +33,12 @@ + } + + @Override -+ public java.util.concurrent.CompletableFuture teleportOfflineAsync(@NotNull Location destination) { ++ public java.util.concurrent.CompletableFuture teleportOfflineAsync(Location destination) { + return this.teleportAsync(destination); + } + + @Override -+ public java.util.concurrent.CompletableFuture teleportOfflineAsync(@NotNull Location destination, PlayerTeleportEvent.TeleportCause cause) { ++ public java.util.concurrent.CompletableFuture teleportOfflineAsync(Location destination, PlayerTeleportEvent.TeleportCause cause) { + return this.teleportAsync(destination, cause); + } + // Purpur end - OfflinePlayer API @@ -46,7 +46,7 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3568,4 +_,76 @@ +@@ -3566,4 +_,76 @@ public void setDeathScreenScore(final int score) { getHandle().setScore(score); } From 7a8aa86a18405eabfdae5c2e037227ec55d24a89 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 22 May 2025 18:34:47 -0700 Subject: [PATCH 097/289] finish updating gradle --- gradle/wrapper/gradle-wrapper.jar | Bin 63721 -> 43764 bytes gradlew | 24 +++++++++++++----------- gradlew.bat | 26 ++++++++++++++------------ 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7f93135c49b765f8051ef9d0a6055ff8e46073d8..1b33c55baabb587c669f562ae36f953de2481846 100644 GIT binary patch literal 43764 zcma&OWmKeVvL#I6?i3D%6z=Zs?ofE*?rw#G$eqJB ziT4y8-Y@s9rkH0Tz>ll(^xkcTl)CY?rS&9VNd66Yc)g^6)JcWaY(5$5gt z8gr3SBXUTN;~cBgz&})qX%#!Fxom2Yau_`&8)+6aSN7YY+pS410rRUU*>J}qL0TnJ zRxt*7QeUqTh8j)Q&iavh<}L+$Jqz))<`IfKussVk%%Ah-Ti?Eo0hQH!rK%K=#EAw0 zwq@@~XNUXRnv8$;zv<6rCRJ6fPD^hfrh;0K?n z=p!u^3xOgWZ%f3+?+>H)9+w^$Tn1e;?UpVMJb!!;f)`6f&4|8mr+g)^@x>_rvnL0< zvD0Hu_N>$(Li7|Jgu0mRh&MV+<}`~Wi*+avM01E)Jtg=)-vViQKax!GeDc!xv$^mL z{#OVBA$U{(Zr8~Xm|cP@odkHC*1R8z6hcLY#N@3E-A8XEvpt066+3t9L_6Zg6j@9Q zj$$%~yO-OS6PUVrM2s)(T4#6=JpI_@Uz+!6=GdyVU?`!F=d;8#ZB@(5g7$A0(`eqY z8_i@3w$0*es5mrSjhW*qzrl!_LQWs4?VfLmo1Sd@Ztt53+etwzAT^8ow_*7Jp`Y|l z*UgSEwvxq+FYO!O*aLf-PinZYne7Ib6ny3u>MjQz=((r3NTEeU4=-i0LBq3H-VJH< z^>1RE3_JwrclUn9vb7HcGUaFRA0QHcnE;6)hnkp%lY1UII#WPAv?-;c?YH}LWB8Nl z{sx-@Z;QxWh9fX8SxLZk8;kMFlGD3Jc^QZVL4nO)1I$zQwvwM&_!kW+LMf&lApv#< zur|EyC|U@5OQuph$TC_ZU`{!vJp`13e9alaR0Dbn5ikLFH7>eIz4QbV|C=%7)F=qo z_>M&5N)d)7G(A%c>}UCrW!Ql_6_A{?R7&CL`;!KOb3 z8Z=$YkV-IF;c7zs{3-WDEFJzuakFbd*4LWd<_kBE8~BFcv}js_2OowRNzWCtCQ6&k z{&~Me92$m*@e0ANcWKuz)?YjB*VoSTx??-3Cc0l2U!X^;Bv@m87eKHukAljrD54R+ zE;@_w4NPe1>3`i5Qy*3^E9x#VB6?}v=~qIprrrd5|DFkg;v5ixo0IsBmik8=Y;zv2 z%Bcf%NE$a44bk^`i4VwDLTbX=q@j9;JWT9JncQ!+Y%2&HHk@1~*L8-{ZpY?(-a9J-1~<1ltr9i~D9`P{XTIFWA6IG8c4;6bFw*lzU-{+?b&%OcIoCiw00n>A1ra zFPE$y@>ebbZlf(sN_iWBzQKDV zmmaLX#zK!@ZdvCANfwV}9@2O&w)!5gSgQzHdk2Q`jG6KD7S+1R5&F)j6QTD^=hq&7 zHUW+r^da^%V(h(wonR(j?BOiC!;y=%nJvz?*aW&5E87qq;2z`EI(f zBJNNSMFF9U{sR-af5{IY&AtoGcoG)Iq-S^v{7+t0>7N(KRoPj;+2N5;9o_nxIGjJ@ z7bYQK)bX)vEhy~VL%N6g^NE@D5VtV+Q8U2%{ji_=6+i^G%xeskEhH>Sqr194PJ$fB zu1y^){?9Vkg(FY2h)3ZHrw0Z<@;(gd_dtF#6y_;Iwi{yX$?asr?0N0_B*CifEi7<6 zq`?OdQjCYbhVcg+7MSgIM|pJRu~`g?g3x?Tl+V}#$It`iD1j+!x+!;wS0+2e>#g?Z z*EA^k7W{jO1r^K~cD#5pamp+o@8&yw6;%b|uiT?{Wa=4+9<}aXWUuL#ZwN1a;lQod zW{pxWCYGXdEq9qAmvAB904}?97=re$>!I%wxPV#|f#@A*Y=qa%zHlDv^yWbR03%V0 zprLP+b(#fBqxI%FiF*-n8HtH6$8f(P6!H3V^ysgd8de-N(@|K!A< z^qP}jp(RaM9kQ(^K(U8O84?D)aU(g?1S8iWwe)gqpHCaFlJxb*ilr{KTnu4_@5{K- z)n=CCeCrPHO0WHz)dDtkbZfUfVBd?53}K>C5*-wC4hpDN8cGk3lu-ypq+EYpb_2H; z%vP4@&+c2p;thaTs$dc^1CDGlPG@A;yGR5@$UEqk6p58qpw#7lc<+W(WR;(vr(D>W z#(K$vE#uBkT=*q&uaZwzz=P5mjiee6>!lV?c}QIX%ZdkO1dHg>Fa#xcGT6~}1*2m9 zkc7l3ItD6Ie~o_aFjI$Ri=C!8uF4!Ky7iG9QTrxVbsQroi|r)SAon#*B*{}TB-?=@ z8~jJs;_R2iDd!$+n$%X6FO&PYS{YhDAS+U2o4su9x~1+U3z7YN5o0qUK&|g^klZ6X zj_vrM5SUTnz5`*}Hyts9ADwLu#x_L=nv$Z0`HqN`Zo=V>OQI)fh01n~*a%01%cx%0 z4LTFVjmW+ipVQv5rYcn3;d2o4qunWUY!p+?s~X~(ost@WR@r@EuDOSs8*MT4fiP>! zkfo^!PWJJ1MHgKS2D_hc?Bs?isSDO61>ebl$U*9*QY(b=i&rp3@3GV@z>KzcZOxip z^dzA~44;R~cnhWz7s$$v?_8y-k!DZys}Q?4IkSyR!)C0j$(Gm|t#e3|QAOFaV2}36 z?dPNY;@I=FaCwylc_;~kXlZsk$_eLkNb~TIl8QQ`mmH&$*zwwR8zHU*sId)rxHu*K z;yZWa8UmCwju%aSNLwD5fBl^b0Ux1%q8YR*uG`53Mi<`5uA^Dc6Ync)J3N7;zQ*75)hf%a@{$H+%S?SGT)ks60)?6j$ zspl|4Ad6@%-r1t*$tT(en!gIXTUDcsj?28ZEzz)dH)SV3bZ+pjMaW0oc~rOPZP@g! zb9E+ndeVO_Ib9c_>{)`01^`ZS198 z)(t=+{Azi11$eu%aU7jbwuQrO`vLOixuh~%4z@mKr_Oc;F%Uq01fA)^W&y+g16e?rkLhTxV!EqC%2}sx_1u7IBq|}Be&7WI z4I<;1-9tJsI&pQIhj>FPkQV9{(m!wYYV@i5h?A0#BN2wqlEwNDIq06|^2oYVa7<~h zI_OLan0Do*4R5P=a3H9`s5*>xU}_PSztg`+2mv)|3nIy=5#Z$%+@tZnr> zLcTI!Mxa`PY7%{;KW~!=;*t)R_sl<^b>eNO@w#fEt(tPMg_jpJpW$q_DoUlkY|uo> z0-1{ouA#;t%spf*7VjkK&$QrvwUERKt^Sdo)5@?qAP)>}Y!h4(JQ!7{wIdkA+|)bv z&8hBwoX4v|+fie}iTslaBX^i*TjwO}f{V)8*!dMmRPi%XAWc8<_IqK1jUsApk)+~R zNFTCD-h>M5Y{qTQ&0#j@I@tmXGj%rzhTW5%Bkh&sSc=$Fv;M@1y!zvYG5P2(2|(&W zlcbR1{--rJ&s!rB{G-sX5^PaM@3EqWVz_y9cwLR9xMig&9gq(voeI)W&{d6j1jh&< zARXi&APWE1FQWh7eoZjuP z;vdgX>zep^{{2%hem;e*gDJhK1Hj12nBLIJoL<=0+8SVEBx7!4Ea+hBY;A1gBwvY<)tj~T=H`^?3>zeWWm|LAwo*S4Z%bDVUe z6r)CH1H!(>OH#MXFJ2V(U(qxD{4Px2`8qfFLG+=a;B^~Te_Z!r3RO%Oc#ZAHKQxV5 zRYXxZ9T2A%NVJIu5Pu7!Mj>t%YDO$T@M=RR(~mi%sv(YXVl`yMLD;+WZ{vG9(@P#e zMo}ZiK^7^h6TV%cG+;jhJ0s>h&VERs=tuZz^Tlu~%d{ZHtq6hX$V9h)Bw|jVCMudd zwZ5l7In8NT)qEPGF$VSKg&fb0%R2RnUnqa){)V(X(s0U zkCdVZe6wy{+_WhZh3qLp245Y2RR$@g-!9PjJ&4~0cFSHMUn=>dapv)hy}|y91ZWTV zCh=z*!S3_?`$&-eZ6xIXUq8RGl9oK0BJw*TdU6A`LJqX9eS3X@F)g$jLkBWFscPhR zpCv8#KeAc^y>>Y$k^=r|K(DTC}T$0#jQBOwB#@`P6~*IuW_8JxCG}J4va{ zsZzt}tt+cv7=l&CEuVtjD6G2~_Meh%p4RGuY?hSt?(sreO_F}8r7Kp$qQdvCdZnDQ zxzc*qchE*E2=WK)^oRNa>Ttj`fpvF-JZ5tu5>X1xw)J@1!IqWjq)ESBG?J|ez`-Tc zi5a}GZx|w-h%5lNDE_3ho0hEXMoaofo#Z;$8|2;EDF&*L+e$u}K=u?pb;dv$SXeQM zD-~7P0i_`Wk$#YP$=hw3UVU+=^@Kuy$>6?~gIXx636jh{PHly_a2xNYe1l60`|y!7 z(u%;ILuW0DDJ)2%y`Zc~hOALnj1~txJtcdD#o4BCT68+8gZe`=^te6H_egxY#nZH&P*)hgYaoJ^qtmpeea`35Fw)cy!w@c#v6E29co8&D9CTCl%^GV|X;SpneSXzV~LXyRn-@K0Df z{tK-nDWA!q38M1~`xUIt_(MO^R(yNY#9@es9RQbY@Ia*xHhD&=k^T+ zJi@j2I|WcgW=PuAc>hs`(&CvgjL2a9Rx zCbZyUpi8NWUOi@S%t+Su4|r&UoU|ze9SVe7p@f1GBkrjkkq)T}X%Qo1g!SQ{O{P?m z-OfGyyWta+UCXH+-+(D^%kw#A1-U;?9129at7MeCCzC{DNgO zeSqsV>W^NIfTO~4({c}KUiuoH8A*J!Cb0*sp*w-Bg@YfBIPZFH!M}C=S=S7PLLcIG zs7K77g~W)~^|+mx9onzMm0qh(f~OsDTzVmRtz=aZTllgR zGUn~_5hw_k&rll<4G=G+`^Xlnw;jNYDJz@bE?|r866F2hA9v0-8=JO3g}IHB#b`hy zA42a0>{0L7CcabSD+F7?pGbS1KMvT{@1_@k!_+Ki|5~EMGt7T%u=79F)8xEiL5!EJ zzuxQ`NBliCoJMJdwu|);zRCD<5Sf?Y>U$trQ-;xj6!s5&w=9E7)%pZ+1Nh&8nCCwM zv5>Ket%I?cxr3vVva`YeR?dGxbG@pi{H#8@kFEf0Jq6~K4>kt26*bxv=P&jyE#e$| zDJB_~imk^-z|o!2njF2hL*|7sHCnzluhJjwLQGDmC)Y9 zr9ZN`s)uCd^XDvn)VirMgW~qfn1~SaN^7vcX#K1G`==UGaDVVx$0BQnubhX|{e z^i0}>k-;BP#Szk{cFjO{2x~LjK{^Upqd&<+03_iMLp0$!6_$@TbX>8U-f*-w-ew1?`CtD_0y_Lo|PfKi52p?`5$Jzx0E8`M0 zNIb?#!K$mM4X%`Ry_yhG5k@*+n4||2!~*+&pYLh~{`~o(W|o64^NrjP?-1Lgu?iK^ zTX6u3?#$?R?N!{599vg>G8RGHw)Hx&=|g4599y}mXNpM{EPKKXB&+m?==R3GsIq?G zL5fH={=zawB(sMlDBJ+{dgb)Vx3pu>L=mDV0{r1Qs{0Pn%TpopH{m(By4;{FBvi{I z$}x!Iw~MJOL~&)p93SDIfP3x%ROjg}X{Sme#hiJ&Yk&a;iR}V|n%PriZBY8SX2*;6 z4hdb^&h;Xz%)BDACY5AUsV!($lib4>11UmcgXKWpzRL8r2Srl*9Y(1uBQsY&hO&uv znDNff0tpHlLISam?o(lOp#CmFdH<6HmA0{UwfU#Y{8M+7od8b8|B|7ZYR9f<#+V|ZSaCQvI$~es~g(Pv{2&m_rKSB2QQ zMvT}$?Ll>V+!9Xh5^iy3?UG;dF-zh~RL#++roOCsW^cZ&({6q|?Jt6`?S8=16Y{oH zp50I7r1AC1(#{b`Aq5cw>ypNggHKM9vBx!W$eYIzD!4KbLsZGr2o8>g<@inmS3*>J zx8oG((8f!ei|M@JZB`p7+n<Q}?>h249<`7xJ?u}_n;Gq(&km#1ULN87CeTO~FY zS_Ty}0TgQhV zOh3T7{{x&LSYGQfKR1PDIkP!WnfC1$l+fs@Di+d4O=eVKeF~2fq#1<8hEvpwuqcaH z4A8u~r^gnY3u6}zj*RHjk{AHhrrDqaj?|6GaVJbV%o-nATw}ASFr!f`Oz|u_QPkR# z0mDudY1dZRlk@TyQ?%Eti=$_WNFtLpSx9=S^be{wXINp%MU?a`F66LNU<c;0&ngifmP9i;bj6&hdGMW^Kf8e6ZDXbQD&$QAAMo;OQ)G zW(qlHh;}!ZP)JKEjm$VZjTs@hk&4{?@+NADuYrr!R^cJzU{kGc1yB?;7mIyAWwhbeA_l_lw-iDVi7wcFurf5 z#Uw)A@a9fOf{D}AWE%<`s1L_AwpZ?F!Vac$LYkp<#A!!`XKaDC{A%)~K#5z6>Hv@V zBEqF(D5?@6r3Pwj$^krpPDCjB+UOszqUS;b2n>&iAFcw<*im2(b3|5u6SK!n9Sg4I z0KLcwA6{Mq?p%t>aW0W!PQ>iUeYvNjdKYqII!CE7SsS&Rj)eIw-K4jtI?II+0IdGq z2WT|L3RL?;GtGgt1LWfI4Ka`9dbZXc$TMJ~8#Juv@K^1RJN@yzdLS8$AJ(>g!U9`# zx}qr7JWlU+&m)VG*Se;rGisutS%!6yybi%B`bv|9rjS(xOUIvbNz5qtvC$_JYY+c& za*3*2$RUH8p%pSq>48xR)4qsp!Q7BEiJ*`^>^6INRbC@>+2q9?x(h0bpc>GaNFi$K zPH$6!#(~{8@0QZk=)QnM#I=bDx5vTvjm$f4K}%*s+((H2>tUTf==$wqyoI`oxI7>C z&>5fe)Yg)SmT)eA(|j@JYR1M%KixxC-Eceknf-;N=jJTwKvk#@|J^&5H0c+%KxHUI z6dQbwwVx3p?X<_VRVb2fStH?HH zFR@Mp=qX%#L3XL)+$PXKV|o|#DpHAoqvj6uQKe@M-mnhCSou7Dj4YuO6^*V`m)1lf z;)@e%1!Qg$10w8uEmz{ENb$^%u}B;J7sDd zump}onoD#!l=agcBR)iG!3AF0-63%@`K9G(CzKrm$VJ{v7^O9Ps7Zej|3m= zVXlR&yW6=Y%mD30G@|tf=yC7-#L!16Q=dq&@beWgaIL40k0n% z)QHrp2Jck#evLMM1RGt3WvQ936ZC9vEje0nFMfvmOHVI+&okB_K|l-;|4vW;qk>n~ z+|kk8#`K?x`q>`(f6A${wfw9Cx(^)~tX7<#TpxR#zYG2P+FY~mG{tnEkv~d6oUQA+ z&hNTL=~Y@rF`v-RZlts$nb$3(OL1&@Y11hhL9+zUb6)SP!;CD)^GUtUpCHBE`j1te zAGud@miCVFLk$fjsrcpjsadP__yj9iEZUW{Ll7PPi<$R;m1o!&Xdl~R_v0;oDX2z^!&8}zNGA}iYG|k zmehMd1%?R)u6R#<)B)1oe9TgYH5-CqUT8N7K-A-dm3hbm_W21p%8)H{O)xUlBVb+iUR}-v5dFaCyfSd zC6Bd7=N4A@+Bna=!-l|*_(nWGDpoyU>nH=}IOrLfS+-d40&(Wo*dDB9nQiA2Tse$R z;uq{`X7LLzP)%Y9aHa4YQ%H?htkWd3Owv&UYbr5NUDAH^<l@Z0Cx%`N+B*i!!1u>D8%;Qt1$ zE5O0{-`9gdDxZ!`0m}ywH!;c{oBfL-(BH<&SQ~smbcobU!j49O^f4&IIYh~f+hK*M zZwTp%{ZSAhMFj1qFaOA+3)p^gnXH^=)`NTYgTu!CLpEV2NF=~-`(}7p^Eof=@VUbd z_9U|8qF7Rueg&$qpSSkN%%%DpbV?8E8ivu@ensI0toJ7Eas^jyFReQ1JeY9plb^{m z&eQO)qPLZQ6O;FTr*aJq=$cMN)QlQO@G&%z?BKUs1&I^`lq>=QLODwa`(mFGC`0H< zOlc*|N?B5&!U6BuJvkL?s1&nsi$*5cCv7^j_*l&$-sBmRS85UIrE--7eD8Gr3^+o? zqG-Yl4S&E;>H>k^a0GdUI(|n1`ws@)1%sq2XBdK`mqrNq_b4N{#VpouCXLzNvjoFv zo9wMQ6l0+FT+?%N(ka*;%m~(?338bu32v26!{r)|w8J`EL|t$}TA4q_FJRX5 zCPa{hc_I(7TGE#@rO-(!$1H3N-C0{R$J=yPCXCtGk{4>=*B56JdXU9cQVwB`6~cQZ zf^qK21x_d>X%dT!!)CJQ3mlHA@ z{Prkgfs6=Tz%63$6Zr8CO0Ak3A)Cv#@BVKr&aiKG7RYxY$Yx>Bj#3gJk*~Ps-jc1l z;4nltQwwT4@Z)}Pb!3xM?+EW0qEKA)sqzw~!C6wd^{03-9aGf3Jmt=}w-*!yXupLf z;)>-7uvWN4Unn8b4kfIza-X=x*e4n5pU`HtgpFFd))s$C@#d>aUl3helLom+RYb&g zI7A9GXLRZPl}iQS*d$Azxg-VgcUr*lpLnbPKUV{QI|bsG{8bLG<%CF( zMoS4pRDtLVYOWG^@ox^h8xL~afW_9DcE#^1eEC1SVSb1BfDi^@g?#f6e%v~Aw>@w- zIY0k+2lGWNV|aA*e#`U3=+oBDmGeInfcL)>*!w|*;mWiKNG6wP6AW4-4imN!W)!hE zA02~S1*@Q`fD*+qX@f3!2yJX&6FsEfPditB%TWo3=HA;T3o2IrjS@9SSxv%{{7&4_ zdS#r4OU41~GYMiib#z#O;zohNbhJknrPPZS6sN$%HB=jUnlCO_w5Gw5EeE@KV>soy z2EZ?Y|4RQDDjt5y!WBlZ(8M)|HP<0YyG|D%RqD+K#e7-##o3IZxS^wQ5{Kbzb6h(i z#(wZ|^ei>8`%ta*!2tJzwMv+IFHLF`zTU8E^Mu!R*45_=ccqI};Zbyxw@U%a#2}%f zF>q?SrUa_a4H9l+uW8JHh2Oob>NyUwG=QH~-^ZebU*R@67DcXdz2{HVB4#@edz?B< z5!rQH3O0>A&ylROO%G^fimV*LX7>!%re{_Sm6N>S{+GW1LCnGImHRoF@csnFzn@P0 zM=jld0z%oz;j=>c7mMwzq$B^2mae7NiG}%>(wtmsDXkWk{?BeMpTrIt3Mizq?vRsf zi_WjNp+61uV(%gEU-Vf0;>~vcDhe(dzWdaf#4mH3o^v{0EWhj?E?$5v02sV@xL0l4 zX0_IMFtQ44PfWBbPYN#}qxa%=J%dlR{O!KyZvk^g5s?sTNycWYPJ^FK(nl3k?z-5t z39#hKrdO7V(@!TU)LAPY&ngnZ1MzLEeEiZznn7e-jLCy8LO zu^7_#z*%I-BjS#Pg-;zKWWqX-+Ly$T!4`vTe5ZOV0j?TJVA*2?*=82^GVlZIuH%9s zXiV&(T(QGHHah=s&7e|6y?g+XxZGmK55`wGV>@1U)Th&=JTgJq>4mI&Av2C z)w+kRoj_dA!;SfTfkgMPO>7Dw6&1*Hi1q?54Yng`JO&q->^CX21^PrU^JU#CJ_qhV zSG>afB%>2fx<~g8p=P8Yzxqc}s@>>{g7}F!;lCXvF#RV)^fyYb_)iKVCz1xEq=fJ| z0a7DMCK*FuP=NM*5h;*D`R4y$6cpW-E&-i{v`x=Jbk_xSn@2T3q!3HoAOB`@5Vg6) z{PW|@9o!e;v1jZ2{=Uw6S6o{g82x6g=k!)cFSC*oemHaVjg?VpEmtUuD2_J^A~$4* z3O7HsbA6wxw{TP5Kk)(Vm?gKo+_}11vbo{Tp_5x79P~#F)ahQXT)tSH5;;14?s)On zel1J>1x>+7;g1Iz2FRpnYz;sD0wG9Q!vuzE9yKi3@4a9Nh1!GGN?hA)!mZEnnHh&i zf?#ZEN2sFbf~kV;>K3UNj1&vFhc^sxgj8FCL4v>EOYL?2uuT`0eDH}R zmtUJMxVrV5H{L53hu3#qaWLUa#5zY?f5ozIn|PkMWNP%n zWB5!B0LZB0kLw$k39=!akkE9Q>F4j+q434jB4VmslQ;$ zKiO#FZ`p|dKS716jpcvR{QJkSNfDVhr2%~eHrW;fU45>>snr*S8Vik-5eN5k*c2Mp zyxvX&_cFbB6lODXznHHT|rsURe2!swomtrqc~w5 zymTM8!w`1{04CBprR!_F{5LB+2_SOuZN{b*!J~1ZiPpP-M;);!ce!rOPDLtgR@Ie1 zPreuqm4!H)hYePcW1WZ0Fyaqe%l}F~Orr)~+;mkS&pOhP5Ebb`cnUt!X_QhP4_4p( z8YKQCDKGIy>?WIFm3-}Br2-N`T&FOi?t)$hjphB9wOhBXU#Hb+zm&We_-O)s(wc`2 z8?VsvU;J>Ju7n}uUb3s1yPx_F*|FlAi=Ge=-kN?1;`~6szP%$3B0|8Sqp%ebM)F8v zADFrbeT0cgE>M0DMV@_Ze*GHM>q}wWMzt|GYC%}r{OXRG3Ij&<+nx9;4jE${Fj_r* z`{z1AW_6Myd)i6e0E-h&m{{CvzH=Xg!&(bLYgRMO_YVd8JU7W+7MuGWNE=4@OvP9+ zxi^vqS@5%+#gf*Z@RVyU9N1sO-(rY$24LGsg1>w>s6ST^@)|D9>cT50maXLUD{Fzf zt~tp{OSTEKg3ZSQyQQ5r51){%=?xlZ54*t1;Ow)zLe3i?8tD8YyY^k%M)e`V*r+vL zPqUf&m)U+zxps+NprxMHF{QSxv}>lE{JZETNk1&F+R~bp{_T$dbXL2UGnB|hgh*p4h$clt#6;NO~>zuyY@C-MD@)JCc5XrYOt`wW7! z_ti2hhZBMJNbn0O-uTxl_b6Hm313^fG@e;RrhIUK9@# z+DHGv_Ow$%S8D%RB}`doJjJy*aOa5mGHVHz0e0>>O_%+^56?IkA5eN+L1BVCp4~m=1eeL zb;#G!#^5G%6Mw}r1KnaKsLvJB%HZL)!3OxT{k$Yo-XrJ?|7{s4!H+S2o?N|^Z z)+?IE9H7h~Vxn5hTis^3wHYuOU84+bWd)cUKuHapq=&}WV#OxHpLab`NpwHm8LmOo zjri+!k;7j_?FP##CpM+pOVx*0wExEex z@`#)K<-ZrGyArK;a%Km`^+We|eT+#MygHOT6lXBmz`8|lyZOwL1+b+?Z$0OhMEp3R z&J=iRERpv~TC=p2-BYLC*?4 zxvPs9V@g=JT0>zky5Poj=fW_M!c)Xxz1<=&_ZcL=LMZJqlnO1P^xwGGW*Z+yTBvbV z-IFe6;(k1@$1;tS>{%pXZ_7w+i?N4A2=TXnGf=YhePg8bH8M|Lk-->+w8Y+FjZ;L=wSGwxfA`gqSn)f(XNuSm>6Y z@|#e-)I(PQ^G@N`%|_DZSb4_pkaEF0!-nqY+t#pyA>{9^*I-zw4SYA1_z2Bs$XGUZbGA;VeMo%CezHK0lO={L%G)dI-+8w?r9iexdoB{?l zbJ}C?huIhWXBVs7oo{!$lOTlvCLZ_KN1N+XJGuG$rh<^eUQIqcI7^pmqhBSaOKNRq zrx~w^?9C?*&rNwP_SPYmo;J-#!G|{`$JZK7DxsM3N^8iR4vvn>E4MU&Oe1DKJvLc~ zCT>KLZ1;t@My zRj_2hI^61T&LIz)S!+AQIV23n1>ng+LUvzv;xu!4;wpqb#EZz;F)BLUzT;8UA1x*6vJ zicB!3Mj03s*kGV{g`fpC?V^s(=JG-k1EMHbkdP4P*1^8p_TqO|;!Zr%GuP$8KLxuf z=pv*H;kzd;P|2`JmBt~h6|GxdU~@weK5O=X&5~w$HpfO}@l-T7@vTCxVOwCkoPQv8 z@aV_)I5HQtfs7^X=C03zYmH4m0S!V@JINm6#(JmZRHBD?T!m^DdiZJrhKpBcur2u1 zf9e4%k$$vcFopK5!CC`;ww(CKL~}mlxK_Pv!cOsFgVkNIghA2Au@)t6;Y3*2gK=5d z?|@1a)-(sQ%uFOmJ7v2iG&l&m^u&^6DJM#XzCrF%r>{2XKyxLD2rgWBD;i(!e4InDQBDg==^z;AzT2z~OmV0!?Z z0S9pX$+E;w3WN;v&NYT=+G8hf=6w0E1$0AOr61}eOvE8W1jX%>&Mjo7&!ulawgzLH zbcb+IF(s^3aj12WSi#pzIpijJJzkP?JzRawnxmNDSUR#7!29vHULCE<3Aa#be}ie~d|!V+ z%l~s9Odo$G&fH!t!+`rUT0T9DulF!Yq&BfQWFZV1L9D($r4H(}Gnf6k3^wa7g5|Ws zj7%d`!3(0bb55yhC6@Q{?H|2os{_F%o=;-h{@Yyyn*V7?{s%Grvpe!H^kl6tF4Zf5 z{Jv1~yZ*iIWL_9C*8pBMQArfJJ0d9Df6Kl#wa}7Xa#Ef_5B7=X}DzbQXVPfCwTO@9+@;A^Ti6il_C>g?A-GFwA0#U;t4;wOm-4oS})h z5&on>NAu67O?YCQr%7XIzY%LS4bha9*e*4bU4{lGCUmO2UQ2U)QOqClLo61Kx~3dI zmV3*(P6F_Tr-oP%x!0kTnnT?Ep5j;_IQ^pTRp=e8dmJtI4YgWd0}+b2=ATkOhgpXe z;jmw+FBLE}UIs4!&HflFr4)vMFOJ19W4f2^W(=2)F%TAL)+=F>IE$=e=@j-*bFLSg z)wf|uFQu+!=N-UzSef62u0-C8Zc7 zo6@F)c+nZA{H|+~7i$DCU0pL{0Ye|fKLuV^w!0Y^tT$isu%i1Iw&N|tX3kwFKJN(M zXS`k9js66o$r)x?TWL}Kxl`wUDUpwFx(w4Yk%49;$sgVvT~n8AgfG~HUcDt1TRo^s zdla@6heJB@JV z!vK;BUMznhzGK6PVtj0)GB=zTv6)Q9Yt@l#fv7>wKovLobMV-+(8)NJmyF8R zcB|_K7=FJGGn^X@JdFaat0uhKjp3>k#^&xE_}6NYNG?kgTp>2Iu?ElUjt4~E-?`Du z?mDCS9wbuS%fU?5BU@Ijx>1HG*N?gIP+<~xE4u=>H`8o((cS5M6@_OK%jSjFHirQK zN9@~NXFx*jS{<|bgSpC|SAnA@I)+GB=2W|JJChLI_mx+-J(mSJ!b)uUom6nH0#2^(L@JBlV#t zLl?j54s`Y3vE^c_3^Hl0TGu*tw_n?@HyO@ZrENxA+^!)OvUX28gDSF*xFtQzM$A+O zCG=n#6~r|3zt=8%GuG} z<#VCZ%2?3Q(Ad#Y7GMJ~{U3>E{5e@z6+rgZLX{Cxk^p-7dip^d29;2N1_mm4QkASo z-L`GWWPCq$uCo;X_BmGIpJFBlhl<8~EG{vOD1o|X$aB9KPhWO_cKiU*$HWEgtf=fn zsO%9bp~D2c@?*K9jVN@_vhR03>M_8h!_~%aN!Cnr?s-!;U3SVfmhRwk11A^8Ns`@KeE}+ zN$H}a1U6E;*j5&~Og!xHdfK5M<~xka)x-0N)K_&e7AjMz`toDzasH+^1bZlC!n()crk9kg@$(Y{wdKvbuUd04N^8}t1iOgsKF zGa%%XWx@WoVaNC1!|&{5ZbkopFre-Lu(LCE5HWZBoE#W@er9W<>R=^oYxBvypN#x3 zq#LC8&q)GFP=5^-bpHj?LW=)-g+3_)Ylps!3^YQ{9~O9&K)xgy zMkCWaApU-MI~e^cV{Je75Qr7eF%&_H)BvfyKL=gIA>;OSq(y z052BFz3E(Prg~09>|_Z@!qj}@;8yxnw+#Ej0?Rk<y}4ghbD569B{9hSFr*^ygZ zr6j7P#gtZh6tMk6?4V$*Jgz+#&ug;yOr>=qdI#9U&^am2qoh4Jy}H2%a|#Fs{E(5r z%!ijh;VuGA6)W)cJZx+;9Bp1LMUzN~x_8lQ#D3+sL{be-Jyeo@@dv7XguJ&S5vrH` z>QxOMWn7N-T!D@1(@4>ZlL^y5>m#0!HKovs12GRav4z!>p(1~xok8+_{| z#Ae4{9#NLh#Vj2&JuIn5$d6t@__`o}umFo(n0QxUtd2GKCyE+erwXY?`cm*h&^9*8 zJ+8x6fRZI-e$CRygofIQN^dWysCxgkyr{(_oBwwSRxZora1(%(aC!5BTtj^+YuevI zx?)H#(xlALUp6QJ!=l9N__$cxBZ5p&7;qD3PsXRFVd<({Kh+mShFWJNpy`N@ab7?9 zv5=klvCJ4bx|-pvOO2-+G)6O?$&)ncA#Urze2rlBfp#htudhx-NeRnJ@u%^_bfw4o z4|{b8SkPV3b>Wera1W(+N@p9H>dc6{cnkh-sgr?e%(YkWvK+0YXVwk0=d`)}*47*B z5JGkEdVix!w7-<%r0JF~`ZMMPe;f0EQHuYHxya`puazyph*ZSb1mJAt^k4549BfS; zK7~T&lRb=W{s&t`DJ$B}s-eH1&&-wEOH1KWsKn0a(ZI+G!v&W4A*cl>qAvUv6pbUR z#(f#EKV8~hk&8oayBz4vaswc(?qw1vn`yC zZQDl2PCB-&Uu@g9ZQHhO+v(W0bNig{-k0;;`+wM@#@J)8r?qOYs#&vUna8ILxN7S{ zp1s41KnR8miQJtJtOr|+qk}wrLt+N*z#5o`TmD1)E&QD(Vh&pjZJ_J*0!8dy_ z>^=@v=J)C`x&gjqAYu`}t^S=DFCtc0MkBU2zf|69?xW`Ck~(6zLD)gSE{7n~6w8j_ zoH&~$ED2k5-yRa0!r8fMRy z;QjBYUaUnpd}mf%iVFPR%Dg9!d>g`01m~>2s))`W|5!kc+_&Y>wD@@C9%>-lE`WB0 zOIf%FVD^cj#2hCkFgi-fgzIfOi+ya)MZK@IZhHT5FVEaSbv-oDDs0W)pA0&^nM0TW zmgJmd7b1R7b0a`UwWJYZXp4AJPteYLH>@M|xZFKwm!t3D3&q~av?i)WvAKHE{RqpD{{%OhYkK?47}+}` zrR2(Iv9bhVa;cDzJ%6ntcSbx7v7J@Y4x&+eWSKZ*eR7_=CVIUSB$^lfYe@g+p|LD{ zPSpQmxx@b$%d!05|H}WzBT4_cq?@~dvy<7s&QWtieJ9)hd4)$SZz}#H2UTi$CkFWW|I)v_-NjuH!VypONC=1`A=rm_jfzQ8Fu~1r8i{q-+S_j$ z#u^t&Xnfi5tZtl@^!fUJhx@~Cg0*vXMK}D{>|$#T*+mj(J_@c{jXBF|rm4-8%Z2o! z2z0o(4%8KljCm^>6HDK!{jI7p+RAPcty_~GZ~R_+=+UzZ0qzOwD=;YeZt*?3%UGdr z`c|BPE;yUbnyARUl&XWSNJ<+uRt%!xPF&K;(l$^JcA_CMH6)FZt{>6ah$|(9$2fc~ z=CD00uHM{qv;{Zk9FR0~u|3|Eiqv9?z2#^GqylT5>6JNZwKqKBzzQpKU2_pmtD;CT zi%Ktau!Y2Tldfu&b0UgmF(SSBID)15*r08eoUe#bT_K-G4VecJL2Pa=6D1K6({zj6 za(2Z{r!FY5W^y{qZ}08+h9f>EKd&PN90f}Sc0ejf%kB4+f#T8Q1=Pj=~#pi$U zp#5rMR%W25>k?<$;$x72pkLibu1N|jX4cWjD3q^Pk3js!uK6h7!dlvw24crL|MZs_ zb%Y%?Fyp0bY0HkG^XyS76Ts*|Giw{31LR~+WU5NejqfPr73Rp!xQ1mLgq@mdWncLy z%8}|nzS4P&`^;zAR-&nm5f;D-%yNQPwq4N7&yULM8bkttkD)hVU>h>t47`{8?n2&4 zjEfL}UEagLUYwdx0sB2QXGeRmL?sZ%J!XM`$@ODc2!y|2#7hys=b$LrGbvvjx`Iqi z&RDDm3YBrlKhl`O@%%&rhLWZ*ABFz2nHu7k~3@e4)kO3%$=?GEFUcCF=6-1n!x^vmu+Ai*amgXH+Rknl6U>#9w;A} zn2xanZSDu`4%%x}+~FG{Wbi1jo@wqBc5(5Xl~d0KW(^Iu(U3>WB@-(&vn_PJt9{1`e9Iic@+{VPc`vP776L*viP{wYB2Iff8hB%E3|o zGMOu)tJX!`qJ}ZPzq7>=`*9TmETN7xwU;^AmFZ-ckZjV5B2T09pYliaqGFY|X#E-8 z20b>y?(r-Fn5*WZ-GsK}4WM>@TTqsxvSYWL6>18q8Q`~JO1{vLND2wg@58OaU!EvT z1|o+f1mVXz2EKAbL!Q=QWQKDZpV|jznuJ}@-)1&cdo z^&~b4Mx{*1gurlH;Vhk5g_cM&6LOHS2 zRkLfO#HabR1JD4Vc2t828dCUG#DL}f5QDSBg?o)IYYi@_xVwR2w_ntlpAW0NWk$F1 z$If?*lP&Ka1oWfl!)1c3fl`g*lMW3JOn#)R1+tfwrs`aiFUgz3;XIJ>{QFxLCkK30 zNS-)#DON3yb!7LBHQJ$)4y%TN82DC2-9tOIqzhZ27@WY^<6}vXCWcR5iN{LN8{0u9 zNXayqD=G|e?O^*ms*4P?G%o@J1tN9_76e}E#66mr89%W_&w4n66~R;X_vWD(oArwj z4CpY`)_mH2FvDuxgT+akffhX0b_slJJ*?Jn3O3~moqu2Fs1oL*>7m=oVek2bnprnW zixkaIFU%+3XhNA@@9hyhFwqsH2bM|`P?G>i<-gy>NflhrN{$9?LZ1ynSE_Mj0rADF zhOz4FnK}wpLmQuV zgO4_Oz9GBu_NN>cPLA=`SP^$gxAnj;WjJnBi%Q1zg`*^cG;Q)#3Gv@c^j6L{arv>- zAW%8WrSAVY1sj$=umcAf#ZgC8UGZGoamK}hR7j6}i8#np8ruUlvgQ$j+AQglFsQQq zOjyHf22pxh9+h#n$21&$h?2uq0>C9P?P=Juw0|;oE~c$H{#RGfa>| zj)Iv&uOnaf@foiBJ}_;zyPHcZt1U~nOcNB{)og8Btv+;f@PIT*xz$x!G?u0Di$lo7 zOugtQ$Wx|C($fyJTZE1JvR~i7LP{ zbdIwqYghQAJi9p}V&$=*2Azev$6K@pyblphgpv8^9bN!?V}{BkC!o#bl&AP!3DAjM zmWFsvn2fKWCfjcAQmE+=c3Y7j@#7|{;;0f~PIodmq*;W9Fiak|gil6$w3%b_Pr6K_ zJEG@&!J%DgBZJDCMn^7mk`JV0&l07Bt`1ymM|;a)MOWz*bh2#d{i?SDe9IcHs7 zjCrnyQ*Y5GzIt}>`bD91o#~5H?4_nckAgotN{2%!?wsSl|LVmJht$uhGa+HiH>;av z8c?mcMYM7;mvWr6noUR{)gE!=i7cZUY7e;HXa221KkRoc2UB>s$Y(k%NzTSEr>W(u z<(4mcc)4rB_&bPzX*1?*ra%VF}P1nwiP5cykJ&W{!OTlz&Td0pOkVp+wc z@k=-Hg=()hNg=Q!Ub%`BONH{ z_=ZFgetj@)NvppAK2>8r!KAgi>#%*7;O-o9MOOfQjV-n@BX6;Xw;I`%HBkk20v`qoVd0)}L6_49y1IhR z_OS}+eto}OPVRn*?UHC{eGyFU7JkPz!+gX4P>?h3QOwGS63fv4D1*no^6PveUeE5% zlehjv_3_^j^C({a2&RSoVlOn71D8WwMu9@Nb@=E_>1R*ve3`#TF(NA0?d9IR_tm=P zOP-x;gS*vtyE1Cm zG0L?2nRUFj#aLr-R1fX*$sXhad)~xdA*=hF3zPZhha<2O$Ps+F07w*3#MTe?)T8|A!P!v+a|ot{|^$q(TX`35O{WI0RbU zCj?hgOv=Z)xV?F`@HKI11IKtT^ocP78cqHU!YS@cHI@{fPD?YXL)?sD~9thOAv4JM|K8OlQhPXgnevF=F7GKD2#sZW*d za}ma31wLm81IZxX(W#A9mBvLZr|PoLnP>S4BhpK8{YV_}C|p<)4#yO{#ISbco92^3 zv&kCE(q9Wi;9%7>>PQ!zSkM%qqqLZW7O`VXvcj;WcJ`2~v?ZTYB@$Q&^CTfvy?1r^ z;Cdi+PTtmQwHX_7Kz?r#1>D zS5lWU(Mw_$B&`ZPmqxpIvK<~fbXq?x20k1~9az-Q!uR78mCgRj*eQ>zh3c$W}>^+w^dIr-u{@s30J=)1zF8?Wn|H`GS<=>Om|DjzC{}Jt?{!fSJe*@$H zg>wFnlT)k#T?LslW zu$^7Uy~$SQ21cE?3Ijl+bLfuH^U5P^$@~*UY#|_`uvAIe(+wD2eF}z_y!pvomuVO; zS^9fbdv)pcm-B@CW|Upm<7s|0+$@@<&*>$a{aW+oJ%f+VMO<#wa)7n|JL5egEgoBv zl$BY(NQjE0#*nv=!kMnp&{2Le#30b)Ql2e!VkPLK*+{jv77H7)xG7&=aPHL7LK9ER z5lfHxBI5O{-3S?GU4X6$yVk>lFn;ApnwZybdC-GAvaznGW-lScIls-P?Km2mF>%B2 zkcrXTk+__hj-3f48U%|jX9*|Ps41U_cd>2QW81Lz9}%`mTDIhE)jYI$q$ma7Y-`>% z8=u+Oftgcj%~TU}3nP8&h7k+}$D-CCgS~wtWvM|UU77r^pUw3YCV80Ou*+bH0!mf0 zxzUq4ed6y>oYFz7+l18PGGzhB^pqSt)si=9M>~0(Bx9*5r~W7sa#w+_1TSj3Jn9mW zMuG9BxN=}4645Cpa#SVKjFst;9UUY@O<|wpnZk$kE+to^4!?0@?Cwr3(>!NjYbu?x z1!U-?0_O?k!NdM^-rIQ8p)%?M+2xkhltt*|l=%z2WFJhme7*2xD~@zk#`dQR$6Lmd zb3LOD4fdt$Cq>?1<%&Y^wTWX=eHQ49Xl_lFUA(YQYHGHhd}@!VpYHHm=(1-O=yfK#kKe|2Xc*9}?BDFN zD7FJM-AjVi)T~OG)hpSWqH>vlb41V#^G2B_EvYlWhDB{Z;Q9-0)ja(O+By`31=biA zG&Fs#5!%_mHi|E4Nm$;vVQ!*>=_F;ZC=1DTPB#CICS5fL2T3XmzyHu?bI;m7D4@#; ztr~;dGYwb?m^VebuULtS4lkC_7>KCS)F@)0OdxZIFZp@FM_pHnJes8YOvwB|++#G( z&dm*OP^cz95Wi15vh`Q+yB>R{8zqEhz5of>Po$9LNE{xS<)lg2*roP*sQ}3r3t<}; zPbDl{lk{pox~2(XY5=qg0z!W-x^PJ`VVtz$git7?)!h>`91&&hESZy1KCJ2nS^yMH z!=Q$eTyRi68rKxdDsdt+%J_&lapa{ds^HV9Ngp^YDvtq&-Xp}60B_w@Ma>_1TTC;^ zpbe!#gH}#fFLkNo#|`jcn?5LeUYto%==XBk6Ik0kc4$6Z+L3x^4=M6OI1=z5u#M%0 z0E`kevJEpJjvvN>+g`?gtnbo$@p4VumliZV3Z%CfXXB&wPS^5C+7of2tyVkMwNWBiTE2 z8CdPu3i{*vR-I(NY5syRR}I1TJOV@DJy-Xmvxn^IInF>Tx2e)eE9jVSz69$6T`M9-&om!T+I znia!ZWJRB28o_srWlAxtz4VVft8)cYloIoVF=pL zugnk@vFLXQ_^7;%hn9x;Vq?lzg7%CQR^c#S)Oc-8d=q_!2ZVH764V z!wDKSgP}BrVV6SfCLZnYe-7f;igDs9t+K*rbMAKsp9L$Kh<6Z;e7;xxced zn=FGY<}CUz31a2G}$Q(`_r~75PzM4l_({Hg&b@d8&jC}B?2<+ed`f#qMEWi z`gm!STV9E4sLaQX+sp5Nu9*;9g12naf5?=P9p@H@f}dxYprH+3ju)uDFt^V{G0APn zS;16Dk{*fm6&BCg#2vo?7cbkkI4R`S9SSEJ=#KBk3rl69SxnCnS#{*$!^T9UUmO#&XXKjHKBqLdt^3yVvu8yn|{ zZ#%1CP)8t-PAz(+_g?xyq;C2<9<5Yy<~C74Iw(y>uUL$+$mp(DRcCWbCKiGCZw@?_ zdomfp+C5xt;j5L@VfhF*xvZdXwA5pcdsG>G<8II-|1dhAgzS&KArcb0BD4ZZ#WfiEY{hkCq5%z9@f|!EwTm;UEjKJsUo696V>h zy##eXYX}GUu%t{Gql8vVZKkNhQeQ4C%n|RmxL4ee5$cgwlU+?V7a?(jI#&3wid+Kz5+x^G!bb#$q>QpR#BZ}Xo5UW^ zD&I`;?(a}Oys7-`I^|AkN?{XLZNa{@27Dv^s4pGowuyhHuXc zuctKG2x0{WCvg_sGN^n9myJ}&FXyGmUQnW7fR$=bj$AHR88-q$D!*8MNB{YvTTEyS zn22f@WMdvg5~o_2wkjItJN@?mDZ9UUlat2zCh(zVE=dGi$rjXF7&}*sxac^%HFD`Y zTM5D3u5x**{bW!68DL1A!s&$2XG@ytB~dX-?BF9U@XZABO`a|LM1X3HWCllgl0+uL z04S*PX$%|^WAq%jkzp~%9HyYIF{Ym?k)j3nMwPZ=hlCg9!G+t>tf0o|J2%t1 ztC+`((dUplgm3`+0JN~}&FRRJ3?l*>Y&TfjS>!ShS`*MwO{WIbAZR#<%M|4c4^dY8 z{Rh;-!qhY=dz5JthbWoovLY~jNaw>%tS4gHVlt5epV8ekXm#==Po$)}mh^u*cE>q7*kvX&gq)(AHoItMYH6^s6f(deNw%}1=7O~bTHSj1rm2|Cq+3M z93djjdomWCTCYu!3Slx2bZVy#CWDozNedIHbqa|otsUl+ut?>a;}OqPfQA05Yim_2 zs@^BjPoFHOYNc6VbNaR5QZfSMh2S*`BGwcHMM(1@w{-4jVqE8Eu0Bi%d!E*^Rj?cR z7qgxkINXZR)K^=fh{pc0DCKtrydVbVILI>@Y0!Jm>x-xM!gu%dehm?cC6ok_msDVA*J#{75%4IZt}X|tIVPReZS#aCvuHkZxc zHVMtUhT(wp09+w9j9eRqz~LtuSNi2rQx_QgQ(}jBt7NqyT&ma61ldD(s9x%@q~PQl zp6N*?=N$BtvjQ_xIT{+vhb1>{pM0Arde0!X-y))A4znDrVx8yrP3B1(7bKPE5jR@5 zwpzwT4cu~_qUG#zYMZ_!2Tkl9zP>M%cy>9Y(@&VoB84#%>amTAH{(hL4cDYt!^{8L z645F>BWO6QaFJ-{C-i|-d%j7#&7)$X7pv#%9J6da#9FB5KyDhkA+~)G0^87!^}AP>XaCSScr;kL;Z%RSPD2CgoJ;gpYT5&6NUK$86$T?jRH=w8nI9Z534O?5fk{kd z`(-t$8W|#$3>xoMfXvV^-A(Q~$8SKDE^!T;J+rQXP71XZ(kCCbP%bAQ1|%$%Ov9_a zyC`QP3uPvFoBqr_+$HenHklqyIr>PU_Fk5$2C+0eYy^~7U&(!B&&P2%7#mBUhM!z> z_B$Ko?{Pf6?)gpYs~N*y%-3!1>o-4;@1Zz9VQHh)j5U1aL-Hyu@1d?X;jtDBNk*vMXPn@ z+u@wxHN*{uHR!*g*4Xo&w;5A+=Pf9w#PeZ^x@UD?iQ&${K2c}UQgLRik-rKM#Y5rdDphdcNTF~cCX&9ViRP}`>L)QA4zNXeG)KXFzSDa6 zd^St;inY6J_i=5mcGTx4_^Ys`M3l%Q==f>{8S1LEHn{y(kbxn5g1ezt4CELqy)~TV6{;VW>O9?5^ ztcoxHRa0jQY7>wwHWcxA-BCwzsP>63Kt&3fy*n#Cha687CQurXaRQnf5wc9o8v7Rw zNwGr2fac;Wr-Ldehn7tF^(-gPJwPt@VR1f;AmKgxN&YPL;j=0^xKM{!wuU|^mh3NE zy35quf}MeL!PU;|{OW_x$TBothLylT-J>_x6p}B_jW1L>k)ps6n%7Rh z96mPkJIM0QFNYUM2H}YF5bs%@Chs6#pEnloQhEl?J-)es!(SoJpEPoMTdgA14-#mC zghayD-DJWtUu`TD8?4mR)w5E`^EHbsz2EjH5aQLYRcF{l7_Q5?CEEvzDo(zjh|BKg z3aJl_n#j&eFHsUw4~lxqnr!6NL*se)6H=A+T1e3xUJGQrd}oSPwSy5+$tt{2t5J5@(lFxl43amsARG74iyNC}uuS zd2$=(r6RdamdGx^eatX@F2D8?U23tDpR+Os?0Gq2&^dF+$9wiWf?=mDWfjo4LfRwL zI#SRV9iSz>XCSgEj!cW&9H-njJopYiYuq|2w<5R2!nZ27DyvU4UDrHpoNQZiGPkp@ z1$h4H46Zn~eqdj$pWrv;*t!rTYTfZ1_bdkZmVVIRC21YeU$iS-*XMNK`#p8Z_DJx| zk3Jssf^XP7v0X?MWFO{rACltn$^~q(M9rMYoVxG$15N;nP)A98k^m3CJx8>6}NrUd@wp-E#$Q0uUDQT5GoiK_R{ z<{`g;8s>UFLpbga#DAf%qbfi`WN1J@6IA~R!YBT}qp%V-j!ybkR{uY0X|x)gmzE0J z&)=eHPjBxJvrZSOmt|)hC+kIMI;qgOnuL3mbNR0g^<%|>9x7>{}>a2qYSZAGPt4it?8 zNcLc!Gy0>$jaU?}ZWxK78hbhzE+etM`67*-*x4DN>1_&{@5t7_c*n(qz>&K{Y?10s zXsw2&nQev#SUSd|D8w7ZD2>E<%g^; zV{yE_O}gq?Q|zL|jdqB^zcx7vo(^})QW?QKacx$yR zhG|XH|8$vDZNIfuxr-sYFR{^csEI*IM#_gd;9*C+SysUFejP0{{z7@P?1+&_o6=7V|EJLQun^XEMS)w(=@eMi5&bbH*a0f;iC~2J74V2DZIlLUHD&>mlug5+v z6xBN~8-ovZylyH&gG#ptYsNlT?-tzOh%V#Y33zlsJ{AIju`CjIgf$@gr8}JugRq^c zAVQ3;&uGaVlVw}SUSWnTkH_6DISN&k2QLMBe9YU=sA+WiX@z)FoSYX`^k@B!j;ZeC zf&**P?HQG6Rk98hZ*ozn6iS-dG}V>jQhb3?4NJB*2F?6N7Nd;EOOo;xR7acylLaLy z9)^lykX39d@8@I~iEVar4jmjjLWhR0d=EB@%I;FZM$rykBNN~jf>#WbH4U{MqhhF6 zU??@fSO~4EbU4MaeQ_UXQcFyO*Rae|VAPLYMJEU`Q_Q_%s2*>$#S^)&7er+&`9L=1 z4q4ao07Z2Vsa%(nP!kJ590YmvrWg+YrgXYs_lv&B5EcoD`%uL79WyYA$0>>qi6ov7 z%`ia~J^_l{p39EY zv>>b}Qs8vxsu&WcXEt8B#FD%L%ZpcVtY!rqVTHe;$p9rbb5O{^rFMB>auLn-^;s+-&P1#h~mf~YLg$8M9 zZ4#87;e-Y6x6QO<{McUzhy(%*6| z)`D~A(TJ$>+0H+mct(jfgL4x%^oC^T#u(bL)`E2tBI#V1kSikAWmOOYrO~#-cc_8! zCe|@1&mN2{*ceeiBldHCdrURk4>V}79_*TVP3aCyV*5n@jiNbOm+~EQ_}1#->_tI@ zqXv+jj2#8xJtW508rzFrYcJxoek@iW6SR@1%a%Bux&;>25%`j3UI`0DaUr7l79`B1 zqqUARhW1^h6=)6?;@v>xrZNM;t}{yY3P@|L}ey@gG( z9r{}WoYN(9TW&dE2dEJIXkyHA4&pU6ki=rx&l2{DLGbVmg4%3Dlfvn!GB>EVaY_%3+Df{fBiqJV>~Xf8A0aqUjgpa} zoF8YXO&^_x*Ej}nw-$-F@(ddB>%RWoPUj?p8U{t0=n>gAI83y<9Ce@Q#3&(soJ{64 z37@Vij1}5fmzAuIUnXX`EYe;!H-yTVTmhAy;y8VZeB#vD{vw9~P#DiFiKQ|kWwGFZ z=jK;JX*A;Jr{#x?n8XUOLS;C%f|zj-7vXtlf_DtP7bpurBeX%Hjwr z4lI-2TdFpzkjgiv!8Vfv`=SP+s=^i3+N~1ELNWUbH|ytVu>EyPN_3(4TM^QE1swRo zoV7Y_g)a>28+hZG0e7g%@2^s>pzR4^fzR-El}ARTmtu!zjZLuX%>#OoU3}|rFjJg} zQ2TmaygxJ#sbHVyiA5KE+yH0LREWr%^C*yR|@gM$nK2P zo}M}PV0v))uJh&33N>#aU376@ZH79u(Yw`EQ2hM3SJs9f99+cO6_pNW$j$L-CtAfe zYfM)ccwD!P%LiBk!eCD?fHCGvgMQ%Q2oT_gmf?OY=A>&PaZQOq4eT=lwbaf}33LCH zFD|)lu{K7$8n9gX#w4~URjZxWm@wlH%oL#G|I~Fb-v^0L0TWu+`B+ZG!yII)w05DU z>GO?n(TN+B=>HdxVDSlIH76pta$_LhbBg;eZ`M7OGcqt||qi zogS72W1IN%=)5JCyOHWoFP7pOFK0L*OAh=i%&VW&4^LF@R;+K)t^S!96?}^+5QBIs zjJNTCh)?)4k^H^g1&jc>gysM`y^8Rm3qsvkr$9AeWwYpa$b22=yAd1t<*{ zaowSEFP+{y?Ob}8&cwfqoy4Pb9IA~VnM3u!trIK$&&0Op#Ql4j>(EW?UNUv#*iH1$ z^j>+W{afcd`{e&`-A{g}{JnIzYib)!T56IT@YEs{4|`sMpW3c8@UCoIJv`XsAw!XC z34|Il$LpW}CIHFC5e*)}00I5{%OL*WZRGzC0?_}-9{#ue?-ug^ zLE|uv-~6xnSs_2_&CN9{9vyc!Xgtn36_g^wI0C4s0s^;8+p?|mm;Odt3`2ZjwtK;l zfd6j)*Fr#53>C6Y8(N5?$H0ma;BCF3HCjUs7rpb2Kf*x3Xcj#O8mvs#&33i+McX zQpBxD8!O{5Y8D&0*QjD=Yhl9%M0)&_vk}bmN_Ud^BPN;H=U^bn&(csl-pkA+GyY0Z zKV7sU_4n;}uR78ouo8O%g*V;79KY?3d>k6%gpcmQsKk&@Vkw9yna_3asGt`0Hmj59 z%0yiF*`jXhByBI9QsD=+>big5{)BGe&+U2gAARGe3ID)xrid~QN_{I>k}@tzL!Md_ z&=7>TWciblF@EMC3t4-WX{?!m!G6$M$1S?NzF*2KHMP3Go4=#ZHkeIv{eEd;s-yD# z_jU^Ba06TZqvV|Yd;Z_sN%$X=!T+&?#p+OQIHS%!LO`Hx0q_Y0MyGYFNoM{W;&@0@ zLM^!X4KhdtsET5G<0+|q0oqVXMW~-7LW9Bg}=E$YtNh1#1D^6Mz(V9?2g~I1( zoz9Cz=8Hw98zVLwC2AQvp@pBeKyidn6Xu0-1SY1((^Hu*-!HxFUPs)yJ+i`^BC>PC zjwd0mygOVK#d2pRC9LxqGc6;Ui>f{YW9Bvb>33bp^NcnZoH~w9(lM5@JiIlfa-6|k ziy31UoMN%fvQfhi8^T+=yrP{QEyb-jK~>$A4SZT-N56NYEbpvO&yUme&pWKs3^94D zH{oXnUTb3T@H+RgzML*lejx`WAyw*?K7B-I(VJx($2!NXYm%3`=F~TbLv3H<{>D?A zJo-FDYdSA-(Y%;4KUP2SpHKAIcv9-ld(UEJE7=TKp|Gryn;72?0LHqAN^fk6%8PCW z{g_-t)G5uCIf0I`*F0ZNl)Z>))MaLMpXgqWgj-y;R+@A+AzDjsTqw2Mo9ULKA3c70 z!7SOkMtZb+MStH>9MnvNV0G;pwSW9HgP+`tg}e{ij0H6Zt5zJ7iw`hEnvye!XbA@!~#%vIkzowCOvq5I5@$3wtc*w2R$7!$*?}vg4;eDyJ_1=ixJuEp3pUS27W?qq(P^8$_lU!mRChT}ctvZz4p!X^ zOSp|JOAi~f?UkwH#9k{0smZ7-#=lK6X3OFEMl7%)WIcHb=#ZN$L=aD`#DZKOG4p4r zwlQ~XDZ`R-RbF&hZZhu3(67kggsM-F4Y_tI^PH8PMJRcs7NS9ogF+?bZB*fcpJ z=LTM4W=N9yepVvTj&Hu~0?*vR1HgtEvf8w%Q;U0^`2@e8{SwgX5d(cQ|1(!|i$km! zvY03MK}j`sff;*-%mN~ST>xU$6Bu?*Hm%l@0dk;j@%>}jsgDcQ)Hn*UfuThz9(ww_ zasV`rSrp_^bp-0sx>i35FzJwA!d6cZ5#5#nr@GcPEjNnFHIrtUYm1^Z$;{d&{hQV9 z6EfFHaIS}46p^5I-D_EcwwzUUuO}mqRh&T7r9sfw`)G^Q%oHxEs~+XoM?8e*{-&!7 z7$m$lg9t9KP9282eke608^Q2E%H-xm|oJ8=*SyEo} z@&;TQ3K)jgspgKHyGiKVMCz>xmC=H5Fy3!=TP)-R3|&1S-B)!6q50wfLHKM@7Bq6E z44CY%G;GY>tC`~yh!qv~YdXw! zSkquvYNs6k1r7>Eza?Vkkxo6XRS$W7EzL&A`o>=$HXgBp{L(i^$}t`NcnAxzbH8Ht z2!;`bhKIh`f1hIFcI5bHI=ueKdzmB9)!z$s-BT4ItyY|NaA_+o=jO%MU5as9 zc2)aLP>N%u>wlaXTK!p)r?+~)L+0eCGb5{8WIk7K52$nufnQ+m8YF+GQc&{^(zh-$ z#wyWV*Zh@d!b(WwXqvfhQX)^aoHTBkc;4ossV3&Ut*k>AI|m+{#kh4B!`3*<)EJVj zwrxK>99v^k4&Y&`Awm>|exo}NvewV%E+@vOc>5>%H#BK9uaE2$vje zWYM5fKuOTtn96B_2~~!xJPIcXF>E_;yO8AwpJ4)V`Hht#wbO3Ung~@c%%=FX4)q+9 z99#>VC2!4l`~0WHs9FI$Nz+abUq# zz`Of97})Su=^rGp2S$)7N3rQCj#0%2YO<R&p>$<#lgXcUj=4H_{oAYiT3 z44*xDn-$wEzRw7#@6aD)EGO$0{!C5Z^7#yl1o;k0PhN=aVUQu~eTQ^Xy{z8Ow6tk83 z4{5xe%(hx)%nD&|e*6sTWH`4W&U!Jae#U4TnICheJmsw{l|CH?UA{a6?2GNgpZLyzU2UlFu1ZVwlALmh_DOs03J^Cjh1im`E3?9&zvNmg(MuMw&0^Lu$(#CJ*q6DjlKsY-RMJ^8yIY|{SQZ*9~CH|u9L z`R78^r=EbbR*_>5?-)I+$6i}G)%mN(`!X72KaV(MNUP7Nv3MS9S|Pe!%N2AeOt5zG zVJ;jI4HZ$W->Ai_4X+`9c(~m=@ek*m`ZQbv3ryI-AD#AH=`x$~WeW~M{Js57(K7(v ze5`};LG|%C_tmd>bkufMWmAo&B+DT9ZV~h(4jg0>^aeAqL`PEUzJJtI8W1M!bQWpv zvN(d}E1@nlYa!L!!A*RN!(Q3F%J?5PvQ0udu?q-T)j3JKV~NL>KRb~w-lWc685uS6 z=S#aR&B8Sc8>cGJ!!--?kwsJTUUm`Jk?7`H z7PrO~xgBrSW2_tTlCq1LH8*!o?pj?qxy8}(=r_;G18POrFh#;buWR0qU24+XUaVZ0 z?(sXcr@-YqvkCmHr{U2oPogHL{r#3r49TeR<{SJX1pcUqyWPrkYz^X8#QW~?F)R5i z>p^!i<;qM8Nf{-fd6!_&V*e_9qP6q(s<--&1Ttj01j0w>bXY7y1W*%Auu&p|XSOH=)V7Bd4fUKh&T1)@cvqhuD-d=?w}O zjI%i(f|thk0Go*!d7D%0^ztBfE*V=(ZIN84f5HU}T9?ulmEYzT5usi=DeuI*d|;M~ zp_=Cx^!4k#=m_qSPBr5EK~E?3J{dWWPH&oCcNepYVqL?nh4D5ynfWip$m*YlZ8r^Z zuFEUL-nW!3qjRCLIWPT0x)FDL7>Yt7@8dA?R2kF@WE>ysMY+)lTsgNM#3VbXVGL}F z1O(>q>2a+_`6r5Xv$NZAnp=Kgnr3)cL(^=8ypEeOf3q8(HGe@7Tt59;yFl||w|mnO zHDxg2G3z8=(6wjj9kbcEY@Z0iOd7Gq5GiPS5% z*sF1J<#daxDV2Z8H>wxOF<;yKzMeTaSOp_|XkS9Sfn6Mpe9UBi1cSTieGG5$O;ZLIIJ60Y>SN4vC?=yE_CWlo(EEE$e4j?z&^FM%kNmRtlbEL^dPPgvs9sbK5fGw*r@ z+!EU@u$T8!nZh?Fdf_qk$VuHk^yVw`h`_#KoS*N%epIIOfQUy_&V}VWDGp3tplMbf z5Se1sJUC$7N0F1-9jdV2mmGK{-}fu|Nv;12jDy0<-kf^AmkDnu6j~TPWOgy1MT68|D z=4=50jVbUKdKaQgD`eWGr3I&^<6uhkjz$YwItY8%Yp9{z4-{6g{73<_b*@XJ4Nm3-3z z?BW3{aY_ccRjb@W1)i5nLg|7BnWS!B`_Uo9CWaE`Ij327QH?i)9A}4Ug4wmxVVa^b z-4+m%-wwOl7cKH7+=x&nrCrbEC)Q$fpg&V83#uEH;C=GNMz`ps@^RxK%T*8%OPnC` z{WO~J%nxYJ`x|N%?&i7?;{_8t^jM&=50HlaOQj8fS}_`moH$c;vI<|cruPFnpT8yU zS%rPOCUSd5Zdb(zwk`hqwTQn)*&n)uYsP*F_(~xEWq}C= zv30kFmZFwJZ@ELVX3?$dXQh|icO7UrL*_5G=I^xXjImz`ZPp>?g#tf(ej~KaIU0algsG!IS09;>?MvqGg#c{i+}qY|{P8W~O%#>|gFd z<1dr$-oxyRGN17yZo1OwLnzwYs0|;IS_nymNB0IlSzPQ%-r`?T=;_XQ^~&#}b|AB} zkNbN5uB?-sUB-T5QLlg%Uk3)uHB;>VIzGe9_J9 zaeISkQm!v(9d(0ML^b9fR^sfHFlH?7Mvddt37OuR{|O0{uv)(&-6<87W4 zyO>s!=cPgP3O&7xxU5DlIPw_o3O>6o6Qb?JWs3qw#p3sBc3g$?Dx zi(6D+DYgV;GrUis-CL%Qe{nvZnwaVXmbhH(|GFh|Q)k=1uvA$I@1DXI7bKlQ@8D6P zS?(*?><>)G49q0wr;NajpxP4W2G)kHl6^=Z>hrNEI4Mwd_$O6$1dXF;Q#hE(-eeW6 zz03GJF%Wl?HO=_ztv5*zRlcU~{+{k%#N59mgm~eK>P!QZ6E?#Cu^2)+K8m@ySvZ*5 z|HDT}BkF@3!l(0%75G=1u2hETXEj!^1Z$!)!lyGXlWD!_vqGE$Z)#cUVBqlORW>0^ zDjyVTxwKHKG|0}j-`;!R-p>}qQfBl(?($7pP<+Y8QE#M8SCDq~k<+>Q^Zf@cT_WdX3~BSe z+|KK|7OL5Hm5(NFP~j>Ct3*$wi0n0!xl=(C61`q&cec@mFlH(sy%+RH<=s)8aAPN`SfJdkAQjdv82G5iRdv8 zh{9wHUZaniSEpslXl^_ODh}mypC?b*9FzLjb~H@3DFSe;D(A-K3t3eOTB(m~I6C;(-lKAvit(70k`%@+O*Ztdz;}|_TS~B?Tpmi=QKC^m_ z2YpEaT3iiz*;T~ap1yiA)a`dKMwu`^UhIUeltNQ1Yjo=q@bI@&3zH?rVUg=IxLy-ni zyxDu%-Fr{H6owTjZU2O5>nDb=q&Jz_TjeSq%!2m40x&U6w~GQ({quPL73IsJS;f`$ zsuhioqCBj(gJ>2hoo)Gou7(WP*pX)f=Y=!=k!&1K?EYY%jJ~X&DnK{^saPQK<1BJ z_A`_{%ZozcB(3w$z^To^6d|XuT@=X~wtW!+{4ID@N{AB~J6AL5vuY>JwvWCNFKsKh zd}@>q@_WV#QZ&UJ0#?X(pXR!oyXOEG3rqzHbCzGLONDb042i$})fM@XF)uSP(DHUc z^&{|$*xe{cs?Gp8=B%RY3L7#$ve$?TWh>MZdxF1zH1v}1z+$Ov#G7?%D)bBCyDe*% zSeKSpETC2V1){II>@UwJi>4uBN+iAx+82E~gb|Cr&8E^i&)A!uv-g?jzH99wU}8+# z$nh>yvb;TwZmS@7LrvuCu_d0-WxFNI&C7%sWuTL%YU!l|I1{|->=dlOeHOCtUO#zkS3ESO8LHV4hTdQL5EdV zuWD33fFPH}HPrW^s$Qn1Xgp&AT6<-He{{4%eIu3rN=iK|9mURdKXfB&Q?qGok%!cs ze53UP{Z!TO-Y@q2;;k2avA3`lm4OoN4@S*k=UA)7H;qZ`d8`XaYFCv?Ba+uGW@r5v z&&{nf(24WSBOhc7!qF^@0cz;XcUynNaj6w2349;s!K{KVqs5yS{ z7VubS`2OzT^5#1~6Tt^RTvt9-J|D2F>y~>2;jeF>g`hx5l%B3H=aLExQihuYngzlnBTYOTHJQMzl>kwqN5JYs)Ej zblA@ntkUS~xi+}y6|(81helS}Q~&VB37qyV|S3Y=><^1wh%msQM?fz z<58MX(=|PSUKCF#)dbhR%D&xgCD?$aR0qen+wpp6 zst}vX18!Be96TD??j1HsHTUx(a&@F?=gT`Q$oJFFyrh^;zgz!(NlAHGn0cJy@us=w zNhC#l5G;H}+>49Nsh12=ZPO2r*2OBQe5kpb&1?*PIBFitK8}FUfb~S-#hKfF0o#&d z#3aPkB$9scYku&kA6{0xHnBV#&Wei5J>5T-XX-gUXEPo+9b7WL=*XESc(3BshL`aj zXp}QIp*40}oWJt*l043e8_5;H5PI5c)U&IEw5dF(4zjX0y_lk9 zAp@!mK>WUqHo)-jop=DoK>&no>kAD=^qIE7qis&_*4~ z6q^EF$D@R~3_xseCG>Ikb6Gfofb$g|75PPyyZN&tiRxqovo_k zO|HA|sgy#B<32gyU9x^&)H$1jvw@qp+1b(eGAb)O%O!&pyX@^nQd^9BQ4{(F8<}|A zhF&)xusQhtoXOOhic=8#Xtt5&slLia3c*a?dIeczyTbC#>FTfiLST57nc3@Y#v_Eg#VUv zT8cKH#f3=1PNj!Oroz_MAR*pow%Y0*6YCYmUy^7`^r|j23Q~^*TW#cU7CHf0eAD_0 zEWEVddxFgQ7=!nEBQ|ibaScslvhuUk^*%b#QUNrEB{3PG@uTxNwW}Bs4$nS9wc(~O zG7Iq>aMsYkcr!9#A;HNsJrwTDYkK8ikdj{M;N$sN6BqJ<8~z>T20{J8Z2rRUuH7~3 z=tgS`AgxbBOMg87UT4Lwge`*Y=01Dvk>)^{Iu+n6fuVX4%}>?3czOGR$0 zpp*wp>bsFFSV`V;r_m+TZns$ZprIi`OUMhe^cLE$2O+pP3nP!YB$ry}2THx2QJs3< za1;>d-AggCarrQ>&Z!d@;mW+!q6eXhb&`GbzUDSxpl8AJ#Cm#tuc)_xh(2NV=5XMs zrf_ozRYO$NkC=pKFX5OH8v1>0i9Z$ec`~Mf+_jQ68spn(CJwclDhEEkH2Qw;${J$clv__nUjn5jA0wCLEnu1j;v!0vB>Ri6m9`;R{JMS%^)4FC zU0Z44+u$I$w=Bj|iu4DT5h~sS`C*zbmX?@-crY}E+hy>}2~C0Nn(EKk@5^qO4@l@! z6O0lr%tzGC`D^)8xU3FnMZVm0kX1sBWhaQyzVoXFWwr%Ny?=2M{5s#5i7fTu3gEkG zc{(Pr$v=;`Y#&`y*J}#M9ux>0?xu!`$9cUKm#Bdd_&S#LPTS?ZPV6zN6>W6JTS~-LfjL{mB=b(KMk3 z2HjBSlJeyUVqDd=Mt!=hpYsvby2GL&3~zm;0{^nZJq+4vb?5HH4wufvr}IX42sHeK zm@x?HN$8TsTavXs)tLDFJtY9b)y~Tl@7z4^I8oUQq4JckH@~CVQ;FoK(+e0XAM>1O z(ei}h?)JQp>)d=6ng-BZF1Z5hsAKW@mXq+hU?r8I(*%`tnIIOXw7V6ZK(T9RFJJe@ zZS!aC+p)Gf2Ujc=a6hx4!A1Th%YH!Lb^xpI!Eu` zmJO{9rw){B1Ql18d%F%da+Tbu1()?o(zT7StYqK6_w`e+fjXq5L^y(0 z09QA6H4oFj59c2wR~{~>jUoDzDdKz}5#onYPJRwa`SUO)Pd4)?(ENBaFVLJr6Kvz= zhTtXqbx09C1z~~iZt;g^9_2nCZ{};-b4dQJbv8HsWHXPVg^@(*!@xycp#R?a|L!+` zY5w))JWV`Gls(=}shH0#r*;~>_+-P5Qc978+QUd>J%`fyn{*TsiG-dWMiJXNgwBaT zJ=wgYFt+1ACW)XwtNx)Q9tA2LPoB&DkL16P)ERWQlY4%Y`-5aM9mZ{eKPUgI!~J3Z zkMd5A_p&v?V-o-6TUa8BndiX?ooviev(DKw=*bBVOW|=zps9=Yl|-R5@yJe*BPzN}a0mUsLn{4LfjB_oxpv(mwq# zSY*%E{iB)sNvWfzg-B!R!|+x(Q|b@>{-~cFvdDHA{F2sFGA5QGiIWy#3?P2JIpPKg6ncI^)dvqe`_|N=8nW$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/gradlew b/gradlew index 0adc8e1a5..23d15a936 100755 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -84,7 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # 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 +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -112,7 +114,7 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar +CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -145,7 +147,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 +155,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,16 +204,16 @@ 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, 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" \ -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat index 93e3f59f1..db3a6ac20 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @@ -43,11 +45,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,22 +59,22 @@ 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 :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar +set CLASSPATH= @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell From fd78b90f2041e50b2a94110859b951fc8fa320e9 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 22 May 2025 20:38:11 -0700 Subject: [PATCH 098/289] bandaid fix: increase the daemon heap for now --- gradle.properties | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gradle.properties b/gradle.properties index 00fc3a483..9e9311437 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,3 +8,5 @@ org.gradle.configuration-cache = true org.gradle.caching = true org.gradle.parallel = true org.gradle.vfs.watch = false + +org.gradle.jvmargs=-Xmx4G From 470df8e7e65f8f389c4e3681ecbf8cd4ae2a5a74 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 25 May 2025 14:39:22 -0700 Subject: [PATCH 099/289] will this bandaid fix work? --- build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle.kts b/build.gradle.kts index 2702101e2..b7ff36c8c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -46,6 +46,7 @@ subprojects { options.release = 21 options.isFork = true options.compilerArgs.addAll(listOf("-Xlint:-deprecation", "-Xlint:-removal")) + options.forkOptions.memoryMaximumSize = "4g" } tasks.withType { options.encoding = Charsets.UTF_8.name() From f565bc230e6cae060fb96d29beb6023f137224ba Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 25 May 2025 14:39:37 -0700 Subject: [PATCH 100/289] use daemon in github actions workflow --- .github/workflows/build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c073a7728..f2c695646 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,12 +21,12 @@ jobs: - name: Configure Git run: git config --global user.email "no-reply@github.com" && git config --global user.name "Github Actions" - name: Apply Patches - run: ./gradlew applyAllPatches --no-daemon --stacktrace + run: ./gradlew applyAllPatches --stacktrace - name: Build - run: ./gradlew build --no-daemon --stacktrace + run: ./gradlew build --stacktrace - name: Rebuild on Failure if: ${{ failure() }} run: | ./gradlew clean cleanCache --refresh-dependencies - ./gradlew applyAllPatches --no-daemon --stacktrace - ./gradlew build --no-daemon --stacktrace + ./gradlew applyAllPatches --stacktrace + ./gradlew build --stacktrace From 42286249e5ca6bb889f912992ae8212de009dfce Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 25 May 2025 15:18:38 -0700 Subject: [PATCH 101/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@f303a076 fix: Don't hardcode checks for translation registries (#12571) PaperMC/Paper@87349c31 Fix CombatTracker stale on death (#12562) PaperMC/Paper@b70bca6b Revert "fix: Don't hardcode checks for translation registries (#12571)" PaperMC/Paper@3efaf477 Add API for client-side signs (#11903) PaperMC/Paper@a3909f54 [ci/skip] Fix bad format for jd @link (#12581) PaperMC/Paper@7774243d Add plugin details to zip file errors (#12580) PaperMC/Paper@220b57ad Fixs and Improvements for EndermanEscapeEvent (#12570) PaperMC/Paper@b8fe22c9 Do not call EntityRemoveEvent during worldgen (#12588) PaperMC/Paper@ee3b4053 Replace spigot check with generation check PaperMC/Paper@84ee4249 Add Map filled event (#12574) PaperMC/Paper@b9d6ba24 Expose more data for MusicInstrument (#12415) PaperMC/Paper@a033e3b9 Fix ancient player custom name converter --- gradle.properties | 2 +- .../src/main/java/org/bukkit/entity/Player.java.patch | 2 +- ...-Add-mobGriefing-override-to-everything-affected.patch | 6 +++--- .../minecraft/world/damagesource/CombatTracker.java.patch | 4 ++-- .../minecraft/world/entity/monster/EnderMan.java.patch | 8 ++++---- .../features/0004-Add-EntityTeleportHinderedEvent.patch | 6 +++--- .../features/0005-API-for-any-mob-to-burn-daylight.patch | 6 +++--- .../craftbukkit/entity/CraftLivingEntity.java.patch | 2 +- .../org/bukkit/craftbukkit/entity/CraftPlayer.java.patch | 6 +++--- 9 files changed, 21 insertions(+), 21 deletions(-) diff --git a/gradle.properties b/gradle.properties index 9e9311437..a28de1f2c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = 113b18ee08720cacc90fe98605fbab1cbf8ab9d6 +paperCommit = a033e3b9ef78cfe85be807ac3fd1dd956274d4db org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch index 483644566..9b55c4223 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3910,4 +_,123 @@ +@@ -3925,4 +_,123 @@ * @param score New death screen score of player */ void setDeathScreenScore(int score); diff --git a/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch index 720686b30..9cb07cb80 100644 --- a/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch +++ b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch @@ -157,10 +157,10 @@ index f0ec9334d9e6bf879568a085db691c46f7c652b6..38772967805dc73ffaae19d95b4f2d20 int alternativeTarget = Mth.floor(this.getBbWidth() / 2.0F + 1.0F); int floor = Mth.floor(this.getBbHeight()); diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index c01c91db94136700f9501624763e3bd735986a9f..9ba0ff75dcee5f331bc8e51ac1c53273c92e3e3b 100644 +index b8094cd018e7b6cf165c92bd37cf6f9d5703599a..a6f8a3164a7c57ac9d9ea9850f037410c861de26 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -509,7 +509,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -511,7 +511,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls return this.enderman.getCarriedBlock() != null @@ -169,7 +169,7 @@ index c01c91db94136700f9501624763e3bd735986a9f..9ba0ff75dcee5f331bc8e51ac1c53273 && this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0; } -@@ -659,7 +659,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -661,7 +661,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls return this.enderman.getCarriedBlock() == null diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch index 5e1eb74c4..2bc01f621 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/damagesource/CombatTracker.java +++ b/net/minecraft/world/damagesource/CombatTracker.java -@@ -62,7 +_,7 @@ +@@ -64,7 +_,7 @@ private Component getMessageForAssistedFall(Entity entity, Component entityDisplayName, String hasWeaponTranslationKey, String noWeaponTranslationKey) { ItemStack itemStack = entity instanceof LivingEntity livingEntity ? livingEntity.getMainHandItem() : ItemStack.EMPTY; @@ -9,7 +9,7 @@ ? Component.translatable(hasWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName, itemStack.getDisplayName()) : Component.translatable(noWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName); } -@@ -106,6 +_,15 @@ +@@ -108,6 +_,15 @@ 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/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch index 4ae69d3a7..0d9f0fc51 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch @@ -26,7 +26,7 @@ } else { AbstractThrownPotion abstractThrownPotion1 = damageSource.getDirectEntity() instanceof AbstractThrownPotion abstractThrownPotion ? abstractThrownPotion -@@ -390,6 +_,7 @@ +@@ -392,6 +_,7 @@ } else { boolean flag = abstractThrownPotion1 != null && this.hurtWithCleanWater(level, damageSource, abstractThrownPotion1, amount); @@ -34,7 +34,7 @@ if (this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.INDIRECT)) { // Paper - EndermanEscapeEvent for (int i = 0; i < 64; i++) { if (this.teleport()) { -@@ -433,7 +_,7 @@ +@@ -435,7 +_,7 @@ @Override public boolean requiresCustomPersistence() { @@ -43,7 +43,7 @@ } static class EndermanFreezeWhenLookedAt extends Goal { -@@ -477,6 +_,7 @@ +@@ -479,6 +_,7 @@ @Override public boolean canUse() { @@ -51,7 +51,7 @@ return this.enderman.getCarriedBlock() != null && getServerLevel(this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0; -@@ -626,6 +_,7 @@ +@@ -628,6 +_,7 @@ @Override public boolean canUse() { diff --git a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch index d66c24d89..a39137942 100644 --- a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch @@ -29,10 +29,10 @@ index 041fc1d4182834bda5de9b2172601a2a59b5514b..2c87953a3b99c5e776fe06271d5cba5c } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 382c20eb62a2619b3f2a68f422f5e704d83e6a80..07c45bce5f3ceea897b9453a2c1568cdb2479560 100644 +index 3c8e98218e4bc63a9260ea31af10981e033fe81b..fcc7bc9098e2544588d8b36dd0cff59e6a2563bd 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1433,6 +1433,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1436,6 +1436,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper start - Teleport passenger API // Don't allow teleporting between worlds while keeping passengers if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -40,7 +40,7 @@ index 382c20eb62a2619b3f2a68f422f5e704d83e6a80..07c45bce5f3ceea897b9453a2c1568cd return false; } -@@ -1454,6 +1455,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1457,6 +1458,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch index 39eb31054..2d98f9323 100644 --- a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch @@ -24,12 +24,12 @@ index 2c87953a3b99c5e776fe06271d5cba5cc355bf53..395951c968e95adffa97e1851d104faf 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 39f24f04cb406ad67bc297881960abc1b375c59f..fda6883bca79e99e486aef87866d8877eea9f140 100644 +index 78846e0abe010997b6a5da04f2be4b5ffba5dd0a..5f30621d717bd0728ddc074072ab7a02c487b253 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1170,4 +1170,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1165,4 +1165,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public CombatTracker getCombatTracker() { - return this.combatTracker; + return this.getHandle().getCombatTracker().paperCombatTracker; } + + // Purpur start - API for any mob to burn daylight diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch index 236a44b1f..a73b21afb 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -518,7 +_,7 @@ +@@ -513,7 +_,7 @@ net.minecraft.server.level.ServerPlayer nmsKiller = killer == null ? null : ((CraftPlayer) killer).getHandle(); this.getHandle().setLastHurtByMob(nmsKiller); if (nmsKiller != null) { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 8b63cde56..c7d7a7415 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -611,10 +_,15 @@ +@@ -614,10 +_,15 @@ @Override public void setPlayerListName(String name) { @@ -17,7 +17,7 @@ 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)) { -@@ -2720,6 +_,28 @@ +@@ -2723,6 +_,28 @@ return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -46,7 +46,7 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3566,4 +_,76 @@ +@@ -3576,4 +_,76 @@ public void setDeathScreenScore(final int score) { getHandle().setScore(score); } From fe690f5568e246b4263488dbd7e9ce0a00651190 Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 28 May 2025 17:55:44 -0700 Subject: [PATCH 102/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@47650100 Improve error messages when PluginRemapper fails to initialize (#12598) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a28de1f2c..b1bdc18d1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = a033e3b9ef78cfe85be807ac3fd1dd956274d4db +paperCommit = 47650100837178e2852bdb50d8c9c6f0cc0bb2e0 org.gradle.configuration-cache = true org.gradle.caching = true From 59d7a40b38d27de82bf4160f48ba7c7562360334 Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 28 May 2025 19:23:02 -0700 Subject: [PATCH 103/289] convert file patches to git patches --- purpur-server/build.gradle.kts.patch | 58 +++++++++++++++++++ .../activation/ActivationRange.java.patch | 12 +++- .../net/minecraft/CrashReport.java.patch | 14 ++++- .../commands/CommandSourceStack.java.patch | 18 ++++-- .../minecraft/commands/Commands.java.patch | 16 +++-- .../selector/EntitySelector.java.patch | 12 +++- .../net/minecraft/core/BlockPos.java.patch | 10 +++- .../dispenser/DispenseItemBehavior.java.patch | 10 +++- .../EquipmentDispenseItemBehavior.java.patch | 10 +++- .../framework/GameTestHelper.java.patch | 10 +++- .../minecraft/network/Connection.java.patch | 10 +++- .../chat/SignedMessageChain.java.patch | 10 +++- .../net/minecraft/server/Main.java.patch | 10 +++- .../server/MinecraftServer.java.patch | 30 ++++++---- .../server/PlayerAdvancements.java.patch | 12 +++- .../server/commands/EnchantCommand.java.patch | 12 +++- .../commands/GameModeCommand.java.patch | 10 +++- .../server/commands/GiveCommand.java.patch | 10 +++- .../dedicated/DedicatedServer.java.patch | 16 +++-- .../DedicatedServerProperties.java.patch | 10 +++- .../server/gui/MinecraftServerGui.java.patch | 31 ++++++---- .../server/gui/StatsComponent.java.patch | 10 +++- .../server/level/ServerLevel.java.patch | 37 +++++++----- .../server/level/ServerPlayer.java.patch | 42 ++++++++------ .../level/ServerPlayerGameMode.java.patch | 16 +++-- .../server/level/WorldGenRegion.java.patch | 10 +++- .../ServerCommonPacketListenerImpl.java.patch | 18 ++++-- .../ServerGamePacketListenerImpl.java.patch | 38 +++++++----- .../ServerLoginPacketListenerImpl.java.patch | 10 +++- .../ServerStatusPacketListenerImpl.java.patch | 10 +++- .../server/players/PlayerList.java.patch | 18 ++++-- .../server/players/SleepStatus.java.patch | 12 +++- .../stats/ServerRecipeBook.java.patch | 10 +++- .../net/minecraft/util/StringUtil.java.patch | 10 +++- .../world/damagesource/CombatRules.java.patch | 12 +++- .../damagesource/CombatTracker.java.patch | 12 +++- .../damagesource/DamageSource.java.patch | 21 +++++-- .../damagesource/DamageSources.java.patch | 20 +++++-- .../world/effect/HungerMobEffect.java.patch | 10 +++- .../world/effect/PoisonMobEffect.java.patch | 10 +++- .../effect/RegenerationMobEffect.java.patch | 10 +++- .../effect/SaturationMobEffect.java.patch | 10 +++- .../world/effect/WitherMobEffect.java.patch | 10 +++- .../minecraft/world/entity/Entity.java.patch | 40 ++++++++----- .../world/entity/EntitySelector.java.patch | 10 +++- .../world/entity/EntityType.java.patch | 14 ++++- .../world/entity/ExperienceOrb.java.patch | 12 +++- .../world/entity/GlowSquid.java.patch | 10 +++- .../world/entity/LivingEntity.java.patch | 47 ++++++++------- .../net/minecraft/world/entity/Mob.java.patch | 30 ++++++---- .../ai/attributes/RangedAttribute.java.patch | 10 +++- .../entity/ai/behavior/AcquirePoi.java.patch | 10 +++- .../ai/behavior/InteractWithDoor.java.patch | 14 ++++- .../ai/behavior/ShowTradesToPlayer.java.patch | 10 +++- .../ai/goal/LlamaFollowCaravanGoal.java.patch | 12 +++- .../ai/goal/RangedBowAttackGoal.java.patch | 10 +++- .../ai/goal/RunAroundLikeCrazyGoal.java.patch | 10 +++- .../world/entity/ai/goal/SwellGoal.java.patch | 10 +++- .../ai/sensing/NearestBedSensor.java.patch | 10 +++- .../targeting/TargetingConditions.java.patch | 10 +++- .../world/entity/ambient/Bat.java.patch | 12 +++- .../entity/animal/AbstractCow.java.patch | 14 ++++- .../world/entity/animal/Animal.java.patch | 12 +++- .../world/entity/animal/Bee.java.patch | 22 ++++--- .../world/entity/animal/Cat.java.patch | 12 +++- .../world/entity/animal/Dolphin.java.patch | 16 +++-- .../world/entity/animal/Fox.java.patch | 20 +++++-- .../world/entity/animal/IronGolem.java.patch | 16 +++-- .../entity/animal/MushroomCow.java.patch | 10 +++- .../world/entity/animal/Ocelot.java.patch | 10 +++- .../world/entity/animal/Parrot.java.patch | 18 ++++-- .../world/entity/animal/Pig.java.patch | 10 +++- .../world/entity/animal/PolarBear.java.patch | 14 ++++- .../world/entity/animal/Rabbit.java.patch | 10 +++- .../world/entity/animal/SnowGolem.java.patch | 14 ++++- .../world/entity/animal/Squid.java.patch | 14 ++++- .../entity/animal/WaterAnimal.java.patch | 10 +++- .../world/entity/animal/goat/Goat.java.patch | 10 +++- .../entity/animal/horse/Llama.java.patch | 18 ++++-- .../world/entity/animal/wolf/Wolf.java.patch | 24 +++++--- .../boss/enderdragon/EndCrystal.java.patch | 14 ++++- .../boss/enderdragon/EnderDragon.java.patch | 12 +++- .../entity/boss/wither/WitherBoss.java.patch | 22 ++++--- .../entity/decoration/ArmorStand.java.patch | 14 ++++- .../world/entity/item/ItemEntity.java.patch | 14 ++++- .../world/entity/item/PrimedTnt.java.patch | 10 +++- .../monster/AbstractSkeleton.java.patch | 12 +++- .../world/entity/monster/Creeper.java.patch | 16 +++-- .../world/entity/monster/Drowned.java.patch | 10 +++- .../world/entity/monster/EnderMan.java.patch | 22 ++++--- .../world/entity/monster/Endermite.java.patch | 12 +++- .../world/entity/monster/Monster.java.patch | 10 +++- .../world/entity/monster/Phantom.java.patch | 10 +++- .../world/entity/monster/Ravager.java.patch | 12 +++- .../world/entity/monster/Shulker.java.patch | 16 +++-- .../world/entity/monster/Skeleton.java.patch | 10 +++- .../world/entity/monster/Strider.java.patch | 10 +++- .../entity/monster/Vindicator.java.patch | 10 +++- .../world/entity/monster/Zombie.java.patch | 12 +++- .../entity/monster/ZombieVillager.java.patch | 10 +++- .../entity/monster/ZombifiedPiglin.java.patch | 18 ++++-- .../entity/monster/piglin/PiglinAi.java.patch | 17 ++++-- .../world/entity/npc/CatSpawner.java.patch | 14 ++++- .../world/entity/npc/Villager.java.patch | 24 +++++--- .../entity/npc/WanderingTrader.java.patch | 14 ++++- .../npc/WanderingTraderSpawner.java.patch | 10 +++- .../world/entity/player/Player.java.patch | 28 +++++---- .../projectile/AbstractArrow.java.patch | 20 +++++-- .../entity/projectile/Snowball.java.patch | 15 ++++- .../projectile/ThrownEnderpearl.java.patch | 12 +++- .../projectile/ThrownTrident.java.patch | 10 +++- .../entity/projectile/WitherSkull.java.patch | 18 ++++-- .../world/entity/raid/Raids.java.patch | 14 ++++- .../entity/vehicle/AbstractBoat.java.patch | 10 +++- .../vehicle/NewMinecartBehavior.java.patch | 10 +++- .../vehicle/OldMinecartBehavior.java.patch | 10 +++- .../minecraft/world/food/FoodData.java.patch | 12 +++- .../world/food/FoodProperties.java.patch | 10 +++- .../AbstractContainerMenu.java.patch | 10 +++- .../inventory/AbstractFurnaceMenu.java.patch | 10 +++- .../world/inventory/AnvilMenu.java.patch | 26 ++++++--- .../world/inventory/ArmorSlot.java.patch | 10 +++- .../inventory/EnchantmentMenu.java.patch | 14 ++++- .../world/inventory/GrindstoneMenu.java.patch | 18 ++++-- .../inventory/ItemCombinerMenu.java.patch | 10 +++- .../minecraft/world/item/AxeItem.java.patch | 14 ++++- .../minecraft/world/item/BlockItem.java.patch | 14 ++++- .../minecraft/world/item/BowItem.java.patch | 14 ++++- .../world/item/BucketItem.java.patch | 12 +++- .../world/item/CrossbowItem.java.patch | 10 +++- .../minecraft/world/item/DyeColor.java.patch | 10 +++- .../minecraft/world/item/EggItem.java.patch | 10 +++- .../world/item/EndCrystalItem.java.patch | 10 +++- .../world/item/EnderpearlItem.java.patch | 12 +++- .../minecraft/world/item/HoeItem.java.patch | 10 +++- .../minecraft/world/item/ItemStack.java.patch | 22 ++++--- .../net/minecraft/world/item/Items.java.patch | 12 +++- .../minecraft/world/item/MapItem.java.patch | 10 +++- .../world/item/NameTagItem.java.patch | 10 +++- .../item/ProjectileWeaponItem.java.patch | 10 +++- .../world/item/ShovelItem.java.patch | 10 +++- .../world/item/SnowballItem.java.patch | 10 +++- .../world/item/SpawnEggItem.java.patch | 10 +++- .../world/item/ThrowablePotionItem.java.patch | 10 +++- .../world/item/TridentItem.java.patch | 12 +++- ...arAllStatusEffectsConsumeEffect.java.patch | 10 +++- .../world/item/crafting/Ingredient.java.patch | 12 +++- .../enchantment/EnchantmentHelper.java.patch | 10 +++- .../enchantment/ItemEnchantments.java.patch | 14 ++++- .../item/trading/MerchantOffer.java.patch | 10 +++- .../world/level/BaseSpawner.java.patch | 10 +++- .../world/level/EntityGetter.java.patch | 10 +++- .../minecraft/world/level/Level.java.patch | 14 ++++- .../world/level/NaturalSpawner.java.patch | 10 +++- .../world/level/ServerExplosion.java.patch | 12 +++- .../world/level/block/AnvilBlock.java.patch | 10 +++- .../world/level/block/AzaleaBlock.java.patch | 10 +++- .../block/BaseCoralPlantTypeBlock.java.patch | 10 +++- .../world/level/block/BedBlock.java.patch | 14 ++++- .../level/block/BigDripleafBlock.java.patch | 10 +++- .../world/level/block/Block.java.patch | 23 +++++--- .../world/level/block/Blocks.java.patch | 12 +++- .../level/block/BubbleColumnBlock.java.patch | 10 +++- .../world/level/block/CactusBlock.java.patch | 14 ++++- .../world/level/block/CakeBlock.java.patch | 10 +++- .../level/block/CampfireBlock.java.patch | 10 +++- .../level/block/CarvedPumpkinBlock.java.patch | 12 +++- .../level/block/CauldronBlock.java.patch | 10 +++- .../level/block/CaveVinesBlock.java.patch | 10 +++- .../block/ChangeOverTimeBlock.java.patch | 10 +++- .../world/level/block/ChestBlock.java.patch | 10 +++- .../level/block/ComposterBlock.java.patch | 20 +++++-- .../world/level/block/CoralBlock.java.patch | 10 +++- .../world/level/block/CropBlock.java.patch | 12 +++- .../world/level/block/DoorBlock.java.patch | 12 +++- .../level/block/DragonEggBlock.java.patch | 10 +++- .../block/EnchantingTableBlock.java.patch | 10 +++- .../world/level/block/FarmBlock.java.patch | 14 ++++- .../block/GrowingPlantHeadBlock.java.patch | 18 ++++-- .../world/level/block/HayBlock.java.patch | 10 +++- .../world/level/block/IceBlock.java.patch | 12 +++- .../world/level/block/KelpBlock.java.patch | 10 +++- .../world/level/block/LiquidBlock.java.patch | 14 ++++- .../world/level/block/MagmaBlock.java.patch | 10 +++- .../level/block/NetherPortalBlock.java.patch | 12 +++- .../level/block/NetherWartBlock.java.patch | 12 +++- .../world/level/block/NoteBlock.java.patch | 10 +++- .../level/block/ObserverBlock.java.patch | 10 +++- .../block/PointedDripstoneBlock.java.patch | 10 +++- .../level/block/PoweredRailBlock.java.patch | 10 +++- .../level/block/RespawnAnchorBlock.java.patch | 10 +++- .../level/block/SculkShriekerBlock.java.patch | 10 +++- .../world/level/block/SlabBlock.java.patch | 10 +++- .../level/block/SnowLayerBlock.java.patch | 10 +++- .../world/level/block/SpawnerBlock.java.patch | 12 +++- .../world/level/block/SpongeBlock.java.patch | 14 ++++- .../level/block/StonecutterBlock.java.patch | 10 +++- .../level/block/SugarCaneBlock.java.patch | 12 +++- .../level/block/TurtleEggBlock.java.patch | 12 +++- .../level/block/TwistingVinesBlock.java.patch | 10 +++- .../level/block/VegetationBlock.java.patch | 10 +++- .../level/block/WeepingVinesBlock.java.patch | 10 +++- .../level/block/WitherSkullBlock.java.patch | 10 +++- .../AbstractFurnaceBlockEntity.java.patch | 12 +++- .../block/entity/BeaconBlockEntity.java.patch | 16 +++-- .../entity/BeehiveBlockEntity.java.patch | 14 ++++- .../level/block/entity/BlockEntity.java.patch | 14 ++++- .../entity/ConduitBlockEntity.java.patch | 16 +++-- .../EnchantingTableBlockEntity.java.patch | 14 ++++- .../block/entity/SignBlockEntity.java.patch | 18 ++++-- .../piston/PistonStructureResolver.java.patch | 14 ++++- .../chunk/storage/EntityStorage.java.patch | 10 +++- .../storage/RegionFileStorage.java.patch | 10 +++- .../levelgen/DensityFunctions.java.patch | 10 +++- .../level/levelgen/PhantomSpawner.java.patch | 12 +++- .../level/material/FlowingFluid.java.patch | 18 ++++-- .../world/level/material/LavaFluid.java.patch | 18 ++++-- .../level/material/WaterFluid.java.patch | 10 +++- .../pathfinder/WalkNodeEvaluator.java.patch | 12 +++- .../world/level/portal/PortalShape.java.patch | 10 +++- .../maps/MapItemSavedData.java.patch | 10 +++- .../EnchantedCountIncreaseFunction.java.patch | 10 +++- .../net/minecraft/world/phys/AABB.java.patch | 10 +++- 223 files changed, 2426 insertions(+), 591 deletions(-) diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index 5ae07c4dd..6e782f80d 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -1,5 +1,63 @@ --- a/paper-server/build.gradle.kts +++ b/paper-server/build.gradle.kts +@@ -1,9 +_,7 @@ + import io.papermc.paperweight.attribute.DevBundleOutput + import io.papermc.paperweight.util.* +-import io.papermc.paperweight.util.data.FileEntry +-import paper.libs.com.google.gson.annotations.SerializedName + import java.time.Instant +-import kotlin.io.path.readText ++import kotlin.io.path.writeText + + plugins { + `java-library` +@@ -20,6 +_,46 @@ + testRuntimeOnly("org.junit.platform:junit-platform-launcher") + } + ++tasks.register("rebuildMinecraftSourcesWithGit") { ++ group = "temp" ++ ++ val patchDir = project.rootDir.resolve("purpur-server/minecraft-patches/sources").convertToPath().cleanDir() ++ val inputDir = this.project.rootDir.resolve("purpur-server/src/minecraft/java").convertToPath() ++ ++ val git = Git(inputDir) ++ git("stash", "push").executeSilently(silenceErr = true) ++ git("checkout", "file").executeSilently(silenceErr = true) ++ ++ rebuildWithGit(git, patchDir) ++} ++ ++private fun rebuildWithGit( ++ git: Git, ++ patchDir: java.nio.file.Path ++): Int { ++ val files = git("diff-tree", "--name-only", "--no-commit-id", "-r", "HEAD").getText().split("\n") ++ files.parallelStream().forEach { filename -> ++ if (filename.isBlank()) return@forEach ++ val patch = git( ++ "format-patch", ++ "--diff-algorithm=myers", ++ "--full-index", ++ "--no-signature", ++ "--no-stat", ++ "--no-numbered", ++ "-1", ++ "HEAD", ++ "--stdout", ++ filename ++ ).getText() ++ val patchFile = patchDir.resolve("$filename.patch") ++ patchFile.createParentDirectories() ++ patchFile.writeText(patch) ++ } ++ ++ return files.size ++} ++ + paperweight { + minecraftVersion = providers.gradleProperty("mcVersion") + gitFilePatches = false @@ -28,6 +_,18 @@ // oldPaperCommit = "f4f275519f7c1fbe9db173b7144a4fe81440e365" //} diff --git a/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch b/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch index cca45cce0..b4d83ca96 100644 --- a/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch +++ b/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/io/papermc/paper/entity/activation/ActivationRange.java b/io/papermc/paper/entity/activation/ActivationRange.java +index 2ebee223085fe7926c7f3e555df19ae69f36157e..265f20fd771df850a0bb0029e699d3146d883837 100644 --- a/io/papermc/paper/entity/activation/ActivationRange.java +++ b/io/papermc/paper/entity/activation/ActivationRange.java -@@ -141,6 +_,8 @@ +@@ -141,6 +141,8 @@ public final class ActivationRange { continue; } @@ -9,7 +17,7 @@ final int worldHeight = world.getHeight(); ActivationRange.maxBB = player.getBoundingBox().inflate(maxRange, worldHeight, maxRange); ActivationType.MISC.boundingBox = player.getBoundingBox().inflate(miscActivationRange, worldHeight, miscActivationRange); -@@ -282,6 +_,7 @@ +@@ -282,6 +284,7 @@ public final class ActivationRange { * @return */ public static boolean checkIfActive(final Entity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch index 52cafd0d1..0ecfb5660 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/CrashReport.java b/net/minecraft/CrashReport.java +index 3e0e88afcf010d9a3d46e48bca5cbdf98fe97544..394443d00e661715439be1e56dddc129947699a4 100644 --- a/net/minecraft/CrashReport.java +++ b/net/minecraft/CrashReport.java -@@ -30,6 +_,7 @@ +@@ -30,6 +30,7 @@ public class CrashReport { private boolean trackingStackTrace = true; private StackTraceElement[] uncategorizedStackTrace = new StackTraceElement[0]; private final SystemReport systemReport = new SystemReport(); @@ -8,7 +16,7 @@ public CrashReport(String title, Throwable exception) { io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(exception); // Paper -@@ -130,7 +_,7 @@ +@@ -130,7 +131,7 @@ public class CrashReport { } public String getFriendlyReport(ReportType type) { @@ -17,7 +25,7 @@ } @Nullable -@@ -161,7 +_,7 @@ +@@ -161,7 +162,7 @@ public class CrashReport { } public boolean saveToFile(Path path, ReportType type) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch index cfbdec120..1314da7f1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/commands/CommandSourceStack.java b/net/minecraft/commands/CommandSourceStack.java +index cb63e4c264a31788cd1405428af70f7a018910e9..4d06587cd55af988eecdda5186577ab72ca3d533 100644 --- a/net/minecraft/commands/CommandSourceStack.java +++ b/net/minecraft/commands/CommandSourceStack.java -@@ -455,6 +_,19 @@ +@@ -455,6 +455,19 @@ public class CommandSourceStack implements ExecutionCommandSource io.papermc.paper.adventure.PaperAdventure.asVanilla(message), broadcastToOps); + } + // Purpur end - Purpur config files - ++ public void sendSuccess(Supplier messageSupplier, boolean allowLogging) { boolean flag = this.source.acceptsSuccess() && !this.silent; + boolean flag1 = allowLogging && this.source.shouldInformAdmins() && !this.silent; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch index bcd3caac9..a8a521ef4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java +index 1927163db5d44383b69f41e4b9855535e853d127..603feb73bb5b45eec5984d27d0f5cf98ccc8420c 100644 --- a/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java -@@ -222,7 +_,7 @@ +@@ -222,7 +222,7 @@ public class Commands { JfrCommand.register(this.dispatcher); } @@ -9,7 +17,7 @@ RaidCommand.register(this.dispatcher, context); DebugPathCommand.register(this.dispatcher); DebugMobSpawningCommand.register(this.dispatcher); -@@ -250,6 +_,14 @@ +@@ -250,6 +250,14 @@ public class Commands { StopCommand.register(this.dispatcher); TransferCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); @@ -24,7 +32,7 @@ } if (selection.includeIntegrated) { -@@ -502,6 +_,7 @@ +@@ -502,6 +510,7 @@ public class Commands { private void runSync(ServerPlayer player, java.util.Collection bukkit, RootCommandNode rootCommandNode) { // Paper end - Perf: Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootCommandNode, true).callEvent(); // Paper - Brigadier API @@ -32,7 +40,7 @@ org.bukkit.event.player.PlayerCommandSendEvent event = new org.bukkit.event.player.PlayerCommandSendEvent(player.getBukkitEntity(), new java.util.LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -512,6 +_,7 @@ +@@ -512,6 +521,7 @@ public class Commands { } } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch index c89e997d6..2b06881db 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/commands/arguments/selector/EntitySelector.java b/net/minecraft/commands/arguments/selector/EntitySelector.java +index 514f8fbdeb776087608665c35de95294aadf5cf0..b305ba9bab617bf4e52d0e6ddf160bacc5751a94 100644 --- a/net/minecraft/commands/arguments/selector/EntitySelector.java +++ b/net/minecraft/commands/arguments/selector/EntitySelector.java -@@ -192,26 +_,27 @@ +@@ -192,26 +192,27 @@ public class EntitySelector { this.checkPermissions(source); if (this.playerName != null) { ServerPlayer playerByName = source.getServer().getPlayerList().getPlayerByName(this.playerName); @@ -32,7 +40,7 @@ players.add(serverPlayer1); if (players.size() >= resultLimit) { return players; -@@ -270,4 +_,10 @@ +@@ -270,4 +271,10 @@ public class EntitySelector { public static Component joinNames(List names) { return ComponentUtils.formatList(names, Entity::getDisplayName); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch index 8b669b1d6..86a42c71c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/core/BlockPos.java b/net/minecraft/core/BlockPos.java +index a81694a22e94cca6f7110f7d5b205d1303f4e071..6518d3fff6daf331b24a7bf5b39fa1920b73711d 100644 --- a/net/minecraft/core/BlockPos.java +++ b/net/minecraft/core/BlockPos.java -@@ -63,6 +_,12 @@ +@@ -63,6 +63,12 @@ public class BlockPos extends Vec3i { public static final int MAX_HORIZONTAL_COORDINATE = 33554431; // Paper end - Optimize Bit Operations by inlining diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch index 15ad30cf2..f7b3d00eb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/core/dispenser/DispenseItemBehavior.java b/net/minecraft/core/dispenser/DispenseItemBehavior.java +index ca02c4c71a0a5a1a0ae8bbb40f0b1b7eac64e6fd..582e012222123e5001c34153f2ee1ab1d08935fd 100644 --- a/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/net/minecraft/core/dispenser/DispenseItemBehavior.java -@@ -735,5 +_,22 @@ +@@ -735,5 +735,22 @@ public interface DispenseItemBehavior { DispenserBlock.registerBehavior(Items.TNT_MINECART, new MinecartDispenseItemBehavior(EntityType.TNT_MINECART)); DispenserBlock.registerBehavior(Items.HOPPER_MINECART, new MinecartDispenseItemBehavior(EntityType.HOPPER_MINECART)); DispenserBlock.registerBehavior(Items.COMMAND_BLOCK_MINECART, new MinecartDispenseItemBehavior(EntityType.COMMAND_BLOCK_MINECART)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch index 9a2c1e083..b4fdadcbc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java b/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java +index e2d169b45f1dba6559ca337b07a110f79d3db504..727d04a442053f6d0c4df3e744554e2866fa38cd 100644 --- a/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java +++ b/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java -@@ -32,7 +_,7 @@ +@@ -32,7 +32,7 @@ public class EquipmentDispenseItemBehavior extends DefaultDispenseItemBehavior { return false; } else { LivingEntity livingEntity = entitiesOfClass.getFirst(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch index 870429942..17ea862ad 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/gametest/framework/GameTestHelper.java b/net/minecraft/gametest/framework/GameTestHelper.java +index fafbc8a9229432c4fb290a54cf453cd0c0c7b3b6..fa7a2a85adf7758a753c54a7cf75cc667922d3d7 100644 --- a/net/minecraft/gametest/framework/GameTestHelper.java +++ b/net/minecraft/gametest/framework/GameTestHelper.java -@@ -292,6 +_,8 @@ +@@ -292,6 +292,8 @@ public class GameTestHelper { return gameType; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch index ac6b9a64d..68ff08029 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/network/Connection.java b/net/minecraft/network/Connection.java +index 4ed9611994c5c8da01fede690197527c5b3a5731..00a82873d226f113278632a53c0faca420dd67d4 100644 --- a/net/minecraft/network/Connection.java +++ b/net/minecraft/network/Connection.java -@@ -588,11 +_,20 @@ +@@ -588,11 +588,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/purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch index 60c29bda0..c5218eef6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/network/chat/SignedMessageChain.java b/net/minecraft/network/chat/SignedMessageChain.java +index f6eed34b2fd72ab74cc9dc4b99ca184d512c0a66..a3e211edd348c0936757de33a74b9456248b3bd2 100644 --- a/net/minecraft/network/chat/SignedMessageChain.java +++ b/net/minecraft/network/chat/SignedMessageChain.java -@@ -45,7 +_,7 @@ +@@ -45,7 +45,7 @@ public class SignedMessageChain { SignedMessageLink signedMessageLink = SignedMessageChain.this.nextLink; if (signedMessageLink == null) { throw new SignedMessageChain.DecodeException(SignedMessageChain.DecodeException.CHAIN_BROKEN); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch index 16550b7e6..1eb3d7c5c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/Main.java b/net/minecraft/server/Main.java +index 9c9b601a3f903bebb0dd1bda0e24745587229727..29dd9a980bb7dc8457dd9ad6eeaa2c5067e3b954 100644 --- a/net/minecraft/server/Main.java +++ b/net/minecraft/server/Main.java -@@ -108,6 +_,12 @@ +@@ -108,6 +108,12 @@ public class Main { JvmProfiler.INSTANCE.start(Environment.SERVER); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch index 4d8cfe0ec..746aac419 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java +index f1373fd5fdebb9f4600ba7f32a5df6188de3a0e9..924dc9a32cd78f37078ff47cde54e61844572f47 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -283,6 +_,7 @@ +@@ -283,6 +283,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop processQueue = new java.util.concurrent.ConcurrentLinkedQueue(); public int autosavePeriod; // Paper - don't store the vanilla dispatcher -@@ -293,7 +_,7 @@ +@@ -293,7 +294,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop pluginsBlockingSleep = new java.util.HashSet<>(); // Paper - API to allow/disallow tick sleeping public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation @@ -26,7 +34,7 @@ public static S spin(Function threadFunction) { AtomicReference atomicReference = new AtomicReference<>(); -@@ -993,6 +_,15 @@ +@@ -993,6 +996,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/PlayerAdvancements.java b/net/minecraft/server/PlayerAdvancements.java +index 52e0ae233a7b1c88bfbbc27707ef5f18453ec865..bc5fe40ba202bf80b925f08ceee045e8a69a7d45 100644 --- a/net/minecraft/server/PlayerAdvancements.java +++ b/net/minecraft/server/PlayerAdvancements.java -@@ -148,6 +_,7 @@ +@@ -148,6 +148,7 @@ public class PlayerAdvancements { AdvancementHolder advancementHolder = advancementManager.get(path); if (advancementHolder == null) { if (!path.getNamespace().equals(ResourceLocation.DEFAULT_NAMESPACE)) return; // CraftBukkit @@ -8,7 +16,7 @@ LOGGER.warn("Ignored advancement '{}' in progress file {} - it doesn't exist anymore?", path, this.playerSavePath); } else { this.startProgress(advancementHolder, progress); -@@ -195,6 +_,7 @@ +@@ -195,6 +196,7 @@ public class PlayerAdvancements { advancement.value().display().ifPresent(displayInfo -> { // Paper start - Add Adventure message to PlayerAdvancementDoneEvent if (event.message() != null && this.player.serverLevel().getGameRules().getBoolean(GameRules.RULE_ANNOUNCE_ADVANCEMENTS)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch index 6379c1d94..ccdc5faf5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/commands/EnchantCommand.java b/net/minecraft/server/commands/EnchantCommand.java +index 709690044ec506c50a73197f5ba43e89f3403a5e..60baf9a5dc4a583d08007acb68bbed61768270d5 100644 --- a/net/minecraft/server/commands/EnchantCommand.java +++ b/net/minecraft/server/commands/EnchantCommand.java -@@ -70,7 +_,7 @@ +@@ -70,7 +70,7 @@ public class EnchantCommand { private static int enchant(CommandSourceStack source, Collection targets, Holder enchantment, int level) throws CommandSyntaxException { Enchantment enchantment1 = enchantment.value(); @@ -9,7 +17,7 @@ throw ERROR_LEVEL_TOO_HIGH.create(level, enchantment1.getMaxLevel()); } else { int i = 0; -@@ -80,7 +_,7 @@ +@@ -80,7 +80,7 @@ public class EnchantCommand { ItemStack mainHandItem = livingEntity.getMainHandItem(); if (!mainHandItem.isEmpty()) { if (enchantment1.canEnchant(mainHandItem) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch index b1ef32c8b..67bc6d5de 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/commands/GameModeCommand.java b/net/minecraft/server/commands/GameModeCommand.java +index c44cdbbdc06b25bd20a208386545a10af9b96df8..a88b8f999b181071ebb492bc1afa2d72fff3748e 100644 --- a/net/minecraft/server/commands/GameModeCommand.java +++ b/net/minecraft/server/commands/GameModeCommand.java -@@ -51,6 +_,18 @@ +@@ -51,6 +51,18 @@ public class GameModeCommand { } private static int setMode(CommandContext source, Collection players, GameType gameType) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch index 557923162..17dd8a921 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/commands/GiveCommand.java b/net/minecraft/server/commands/GiveCommand.java +index b81f98738ef166336e4cc3092b6ba63f385b68e3..ca4bad763602f202423409ffb16f797f91a5dadc 100644 --- a/net/minecraft/server/commands/GiveCommand.java +++ b/net/minecraft/server/commands/GiveCommand.java -@@ -66,6 +_,7 @@ +@@ -66,6 +66,7 @@ public class GiveCommand { i1 -= min; ItemStack itemStack1 = item.createItemStack(min, false); boolean flag = serverPlayer.getInventory().add(itemStack1); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch index e8a2669b4..3723a2ea6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java +index 31e02f50edd46220dac81500dbb273f1ccdbe0b9..6a296adcd9d5289dd86840fdc58dce3accbe9ce5 100644 --- a/net/minecraft/server/dedicated/DedicatedServer.java +++ b/net/minecraft/server/dedicated/DedicatedServer.java -@@ -105,6 +_,7 @@ +@@ -105,6 +105,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface public void run() { if (!org.bukkit.craftbukkit.Main.useConsole) return; // CraftBukkit // Paper start - Use TerminalConsoleAppender @@ -8,7 +16,7 @@ new com.destroystokyo.paper.console.PaperConsole(DedicatedServer.this).start(); /* BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); -@@ -183,6 +_,15 @@ +@@ -183,6 +184,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics @@ -24,7 +32,7 @@ com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now this.setPvpAllowed(properties.pvp); -@@ -230,6 +_,30 @@ +@@ -230,6 +240,30 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface if (true) throw new IllegalStateException("Failed to bind to port", var10); // Paper - Propagate failed to bind to port error return false; } @@ -55,7 +63,7 @@ // CraftBukkit start this.server.loadPlugins(); -@@ -308,6 +_,8 @@ +@@ -308,6 +342,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface LOGGER.info("JMX monitoring enabled"); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch index 14576e237..cc09a01a3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/dedicated/DedicatedServerProperties.java b/net/minecraft/server/dedicated/DedicatedServerProperties.java +index f6518e29f805018c72222f5aaa7b662071665b65..5748658abf0b90812005ae9d426df92daf5532f0 100644 --- a/net/minecraft/server/dedicated/DedicatedServerProperties.java +++ b/net/minecraft/server/dedicated/DedicatedServerProperties.java -@@ -49,6 +_,7 @@ +@@ -49,6 +49,7 @@ public class DedicatedServerProperties extends Settings +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/gui/MinecraftServerGui.java b/net/minecraft/server/gui/MinecraftServerGui.java +index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b3788623900db41 100644 --- a/net/minecraft/server/gui/MinecraftServerGui.java +++ b/net/minecraft/server/gui/MinecraftServerGui.java -@@ -39,6 +_,11 @@ +@@ -39,6 +39,11 @@ public class MinecraftServerGui extends JComponent { private Thread logAppenderThread; private final Collection finalizers = Lists.newArrayList(); final AtomicBoolean isClosing = new AtomicBoolean(); @@ -12,7 +20,7 @@ public static MinecraftServerGui showFrameFor(final DedicatedServer server) { try { -@@ -46,7 +_,7 @@ +@@ -46,7 +51,7 @@ public class MinecraftServerGui extends JComponent { } catch (Exception var3) { } @@ -21,7 +29,7 @@ final MinecraftServerGui minecraftServerGui = new MinecraftServerGui(server); jFrame.setDefaultCloseOperation(2); jFrame.add(minecraftServerGui); -@@ -54,7 +_,7 @@ +@@ -54,7 +59,7 @@ public class MinecraftServerGui extends JComponent { jFrame.setLocationRelativeTo(null); jFrame.setVisible(true); // Paper start - Improve ServerGUI @@ -30,7 +38,7 @@ try { jFrame.setIconImage(javax.imageio.ImageIO.read(java.util.Objects.requireNonNull(MinecraftServerGui.class.getClassLoader().getResourceAsStream("logo.png")))); } catch (java.io.IOException ignore) { -@@ -64,7 +_,7 @@ +@@ -64,7 +69,7 @@ public class MinecraftServerGui extends JComponent { @Override public void windowClosing(WindowEvent event) { if (!minecraftServerGui.isClosing.getAndSet(true)) { @@ -39,7 +47,7 @@ server.halt(true); minecraftServerGui.runFinalizers(); } -@@ -112,7 +_,7 @@ +@@ -112,7 +117,7 @@ public class MinecraftServerGui extends JComponent { private JComponent buildChatPanel() { JPanel jPanel = new JPanel(new BorderLayout()); @@ -48,7 +56,7 @@ JScrollPane jScrollPane = new JScrollPane(jTextArea, 22, 30); jTextArea.setEditable(false); jTextArea.setFont(MONOSPACED); -@@ -121,10 +_,43 @@ +@@ -121,10 +126,43 @@ public class MinecraftServerGui extends JComponent { String trimmed = jTextField.getText().trim(); if (!trimmed.isEmpty()) { this.server.handleConsoleInput(trimmed, this.server.createCommandSourceStack()); @@ -92,7 +100,7 @@ jTextArea.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent event) { -@@ -159,7 +_,7 @@ +@@ -159,7 +197,7 @@ public class MinecraftServerGui extends JComponent { } private static final java.util.regex.Pattern ANSI = java.util.regex.Pattern.compile("\\e\\[[\\d;]*[^\\d;]"); // CraftBukkit // Paper @@ -101,7 +109,7 @@ if (!SwingUtilities.isEventDispatchThread()) { SwingUtilities.invokeLater(() -> this.print(textArea, scrollPane, line)); } else { -@@ -170,16 +_,29 @@ +@@ -170,10 +208,11 @@ public class MinecraftServerGui extends JComponent { flag = verticalScrollBar.getValue() + verticalScrollBar.getSize().getHeight() + MONOSPACED.getSize() * 4 > verticalScrollBar.getMaximum(); } @@ -115,10 +123,10 @@ if (flag) { verticalScrollBar.setValue(Integer.MAX_VALUE); - } +@@ -181,6 +220,18 @@ public class MinecraftServerGui extends JComponent { } } -+ + + // Purpur start - GUI Improvements + public static class CommandHistory extends java.util.LinkedList { + @Override @@ -130,6 +138,7 @@ + } + } + // Purpur end - GUI Improvements - ++ // Paper start - Add onboarding message for initial server start private JComponent buildOnboardingPanel() { + String onboardingLink = "https://docs.papermc.io/paper/next-steps"; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch index a082bca56..2dc512827 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/gui/StatsComponent.java b/net/minecraft/server/gui/StatsComponent.java +index 35fd539eb2bfe60ad17ab1e558a01273666acc54..103ff139dae918c991413ce9df61da3e22ee458a 100644 --- a/net/minecraft/server/gui/StatsComponent.java +++ b/net/minecraft/server/gui/StatsComponent.java -@@ -43,7 +_,7 @@ +@@ -43,7 +43,7 @@ public class StatsComponent extends JComponent { } this.msgs[0] = "Memory use: " + l / 1024L / 1024L + " mb (" + Runtime.getRuntime().freeMemory() * 100L / Runtime.getRuntime().maxMemory() + "% free)"; this.msgs[1] = "Avg tick: " + DECIMAL_FORMAT.format((double)this.server.getAverageTickTimeNanos() / TimeUtil.NANOSECONDS_PER_MILLISECOND) + " ms"; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch index 9671040f3..2c3ea23a4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java +index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0e2653da2 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -203,6 +_,8 @@ +@@ -203,6 +203,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe private final StructureManager structureManager; private final StructureCheck structureCheck; private final boolean tickTime; @@ -9,7 +17,7 @@ private final RandomSequences randomSequences; // CraftBukkit start -@@ -587,7 +_,24 @@ +@@ -587,7 +589,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe // CraftBukkit end this.tickTime = tickTime; this.server = server; @@ -35,7 +43,7 @@ this.serverLevelData = serverLevelData; ChunkGenerator chunkGenerator = levelStem.generator(); // CraftBukkit start -@@ -671,6 +_,7 @@ +@@ -671,6 +690,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler); // Paper end - rewrite chunk system this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit @@ -43,7 +51,7 @@ } // Paper start -@@ -717,7 +_,7 @@ +@@ -717,7 +737,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); @@ -52,7 +60,7 @@ // Paper start - create time skip event - move up calculations final long newDayTime = this.levelData.getDayTime() + 24000L; org.bukkit.event.world.TimeSkipEvent event = new org.bukkit.event.world.TimeSkipEvent( -@@ -836,6 +_,13 @@ +@@ -836,6 +856,13 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.serverLevelData.getScheduledEvents().tick(this.server, l); Profiler.get().pop(); if (this.serverLevelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { @@ -66,11 +74,10 @@ this.setDayTime(this.levelData.getDayTime() + 1L); } } -@@ -843,7 +_,21 @@ +@@ -843,7 +870,21 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe public void setDayTime(long time) { this.serverLevelData.setDayTime(time); -- } + // Purpur start - Configurable daylight cycle + this.preciseTime = time; + this.forceTime = false; @@ -84,12 +91,12 @@ + // Purpur start - Configurable daylight cycle + public boolean isForceTime() { + return this.forceTime; -+ } + } + // Purpur end - Configurable daylight cycle public void tickCustomSpawners(boolean spawnEnemies, boolean spawnFriendlies) { for (CustomSpawner customSpawner : this.customSpawners) { -@@ -947,9 +_,17 @@ +@@ -947,9 +988,17 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe && this.random.nextDouble() < currentDifficultyAt.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01) // Paper - Configurable spawn chances for skeleton horses && !this.getBlockState(blockPos.below()).is(Blocks.LIGHTNING_ROD); if (flag) { @@ -109,7 +116,7 @@ skeletonHorse.setAge(0); skeletonHorse.setPos(blockPos.getX(), blockPos.getY(), blockPos.getZ()); this.addFreshEntity(skeletonHorse, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit -@@ -984,9 +_,35 @@ +@@ -984,9 +1033,35 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe if (blockState.is(Blocks.SNOW)) { int layersValue = blockState.getValue(SnowLayerBlock.LAYERS); if (layersValue < Math.min(_int, 8)) { @@ -145,7 +152,7 @@ } } else { org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(this, heightmapPos, Blocks.SNOW.defaultBlockState(), 3, null); // CraftBukkit -@@ -1007,7 +_,7 @@ +@@ -1007,7 +1082,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe pointOfInterestType -> pointOfInterestType.is(PoiTypes.LIGHTNING_ROD), blockPos -> blockPos.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockPos.getX(), blockPos.getZ()) - 1, pos, @@ -154,7 +161,7 @@ PoiManager.Occupancy.ANY ); return optional.map(blockPos -> blockPos.above(1)); -@@ -1056,8 +_,26 @@ +@@ -1056,8 +1131,26 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); Component component; if (this.sleepStatus.areEnoughSleeping(_int)) { @@ -181,7 +188,7 @@ component = Component.translatable("sleep.players_sleeping", this.sleepStatus.amountSleeping(), this.sleepStatus.sleepersNeeded(_int)); } -@@ -1190,6 +_,7 @@ +@@ -1190,6 +1283,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -189,7 +196,7 @@ 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.... -@@ -1197,6 +_,7 @@ +@@ -1197,6 +1291,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -197,7 +204,7 @@ this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. -@@ -2674,7 +_,7 @@ +@@ -2674,7 +2769,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe // 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/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index ddca6f955..31778e737 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java +index 3781d9cc174b7aecacb9b9855d52c7b1ff05835c..5ced523477c2b86e2b46182a77a9d991cf4cdd1f 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -420,6 +_,10 @@ +@@ -420,6 +420,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc public @Nullable com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent public @Nullable String clientBrandName = null; // Paper - Brand support public @Nullable 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 @@ -11,7 +19,7 @@ // Paper start - rewrite chunk system private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; -@@ -553,6 +_,10 @@ +@@ -553,6 +557,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.respawnConfig = compound.read("respawn", ServerPlayer.RespawnConfig.CODEC).orElse(null); this.spawnExtraParticlesOnFall = compound.getBooleanOr("spawn_extra_particles_on_fall", false); this.raidOmenPosition = compound.read("raid_omen_position", BlockPos.CODEC).orElse(null); @@ -22,7 +30,7 @@ } @Override -@@ -570,6 +_,9 @@ +@@ -570,6 +578,9 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc compound.storeNullable("raid_omen_position", BlockPos.CODEC, this.raidOmenPosition); this.saveEnderPearls(compound); this.getBukkitEntity().setExtraData(compound); // CraftBukkit @@ -32,7 +40,7 @@ } private void saveParentVehicle(CompoundTag tag) { -@@ -1063,6 +_,7 @@ +@@ -1063,6 +1074,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc // Paper - moved up to sendClientboundPlayerCombatKillPacket() sendClientboundPlayerCombatKillPacket(event.getShowDeathMessages(), deathScreenMessage); // Paper - Expand PlayerDeathEvent Team team = this.getTeam(); @@ -40,7 +48,7 @@ if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) { this.server.getPlayerList().broadcastSystemMessage(deathMessage, false); } else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { -@@ -1169,6 +_,13 @@ +@@ -1169,6 +1181,13 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc if (this.isInvulnerableTo(level, damageSource)) { return false; } else { @@ -54,7 +62,7 @@ Entity entity = damageSource.getEntity(); if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. !(entity instanceof Player player && !this.canHarmPlayer(player)) -@@ -1395,6 +_,7 @@ +@@ -1395,6 +1414,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -62,7 +70,7 @@ this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1512,7 +_,7 @@ +@@ -1512,7 +1532,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), monster -> monster.isPreventingPlayerRest(this.serverLevel(), this) ); @@ -71,7 +79,7 @@ return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1549,7 +_,19 @@ +@@ -1549,7 +1569,19 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); if (!this.serverLevel().canSleepThroughNights()) { @@ -92,7 +100,7 @@ } ((ServerLevel)this.level()).updateSleepingPlayerList(); -@@ -1641,6 +_,7 @@ +@@ -1641,6 +1673,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -100,7 +108,7 @@ this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -1943,6 +_,26 @@ +@@ -1943,6 +1976,26 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -127,7 +135,7 @@ @Override public void displayClientMessage(Component chatComponent, boolean actionBar) { this.sendSystemMessage(chatComponent, actionBar); -@@ -2160,6 +_,20 @@ +@@ -2160,6 +2213,20 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc ); } @@ -148,14 +156,13 @@ public void sendSystemMessage(Component mesage) { this.sendSystemMessage(mesage, false); } -@@ -2298,7 +_,67 @@ +@@ -2298,8 +2365,68 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); -- } + this.setAfk(false); // Purpur - AFK API -+ } -+ + } + + // Purpur start - AFK API + private boolean isAfk = false; + @@ -214,10 +221,11 @@ + return !this.isAfk() && super.canBeCollidedWith(); + } + // Purpur end - AFK API - ++ public ServerStatsCounter getStats() { return this.stats; -@@ -2926,4 +_,56 @@ + } +@@ -2926,4 +3053,56 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch index f28a3de6d..3d32ad621 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/level/ServerPlayerGameMode.java b/net/minecraft/server/level/ServerPlayerGameMode.java +index b604cba2490a747661d6819251bc3b9a1d35c7d4..3a596650feb96123c5684bb5065e20c5b005c0b9 100644 --- a/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -348,6 +_,7 @@ +@@ -348,6 +348,7 @@ public class ServerPlayerGameMode { } return false; } @@ -8,7 +16,7 @@ } // CraftBukkit end -@@ -461,6 +_,7 @@ +@@ -461,6 +462,7 @@ public class ServerPlayerGameMode { public InteractionHand interactHand; public ItemStack interactItemStack; public InteractionResult useItemOn(ServerPlayer player, Level level, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) { @@ -16,7 +24,7 @@ BlockPos blockPos = hitResult.getBlockPos(); BlockState blockState = level.getBlockState(blockPos); boolean cancelledBlock = false; -@@ -503,7 +_,7 @@ +@@ -503,7 +505,7 @@ public class ServerPlayerGameMode { boolean flag = !player.getMainHandItem().isEmpty() || !player.getOffhandItem().isEmpty(); boolean flag1 = player.isSecondaryUseActive() && flag; ItemStack itemStack = stack.copy(); @@ -25,7 +33,7 @@ InteractionResult interactionResult = blockState.useItemOn(player.getItemInHand(hand), level, player, hand, hitResult); if (interactionResult.consumesAction()) { CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger(player, blockPos, itemStack); -@@ -549,4 +_,18 @@ +@@ -549,4 +551,18 @@ public class ServerPlayerGameMode { public void setLevel(ServerLevel serverLevel) { this.level = serverLevel; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch index ab71931ac..9232e8f23 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/level/WorldGenRegion.java b/net/minecraft/server/level/WorldGenRegion.java +index 11fed81a4696ba18440e755c3b8a5ca39ed8a6b1..18367ee56288c4cc60b66555583a8900e7a47daf 100644 --- a/net/minecraft/server/level/WorldGenRegion.java +++ b/net/minecraft/server/level/WorldGenRegion.java -@@ -314,6 +_,7 @@ +@@ -314,6 +314,7 @@ public class WorldGenRegion implements WorldGenLevel { return true; } else { // Paper start - Buffer OOB setBlock calls diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch index 274dd957b..2c2fd3850 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +index 186393485396cfe9b1baef29586198356e2d2600..66d70c330fd70009018d8d0a7441b93fcef96c97 100644 --- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -41,6 +_,7 @@ +@@ -41,6 +41,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack private long keepAliveChallenge; private long closedListenerTime; private boolean closed = false; @@ -8,7 +16,7 @@ private int latency; private volatile boolean suspendFlushingOnServerThread = false; // CraftBukkit start -@@ -51,6 +_,7 @@ +@@ -51,6 +52,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 net.minecraft.resources.ResourceLocation MINECRAFT_BRAND = net.minecraft.resources.ResourceLocation.withDefaultNamespace("brand"); // Paper - Brand support @@ -16,7 +24,7 @@ public ServerCommonPacketListenerImpl(MinecraftServer server, Connection connection, CommonListenerCookie cookie, net.minecraft.server.level.ServerPlayer player) { // CraftBukkit this.server = server; -@@ -118,6 +_,16 @@ +@@ -118,6 +120,16 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @Override public void handleKeepAlive(ServerboundKeepAlivePacket packet) { @@ -33,7 +41,7 @@ if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) { int i = (int)(Util.getMillis() - this.keepAliveTime); this.latency = (this.latency * 3 + i) / 4; -@@ -169,6 +_,12 @@ +@@ -169,6 +181,12 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack return; } @@ -46,7 +54,7 @@ if (identifier.equals(MINECRAFT_BRAND)) { this.player.clientBrandName = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256); } -@@ -242,6 +_,22 @@ +@@ -242,6 +260,22 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack // 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 final long elapsedTime = millis - this.keepAliveTime; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index aef98e0f9..ca7bc5528 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +index 9041830c19e2899479e1519488faba5c416ccd88..bf8a8124145e4339cadcc83691f076bdad3ec43d 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -321,6 +_,20 @@ +@@ -321,6 +321,20 @@ public class ServerGamePacketListenerImpl this.tickEndEvent = new io.papermc.paper.event.packet.ClientTickEndEvent(player.getBukkitEntity()); // Paper - add client tick end event } @@ -21,7 +29,7 @@ @Override public void tick() { if (this.ackBlockChangesUpTo > -1) { -@@ -379,6 +_,12 @@ +@@ -379,6 +393,12 @@ public class ServerGamePacketListenerImpl if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits @@ -34,7 +42,7 @@ this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854 this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause } -@@ -624,6 +_,8 @@ +@@ -624,6 +644,8 @@ public class ServerGamePacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -43,7 +51,7 @@ Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -703,6 +_,7 @@ +@@ -703,6 +725,7 @@ public class ServerGamePacketListenerImpl PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); if (packet.getId() == this.awaitingTeleport) { if (this.awaitingPositionFromClient == null) { @@ -51,7 +59,7 @@ this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause return; } -@@ -1233,6 +_,10 @@ +@@ -1233,6 +1256,10 @@ public class ServerGamePacketListenerImpl final int maxBookPageSize = pageMax.intValue(); final double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D); long byteAllowed = maxBookPageSize; @@ -62,7 +70,7 @@ for (final String page : pageList) { final int byteLength = page.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; byteTotal += byteLength; -@@ -1257,7 +_,8 @@ +@@ -1257,7 +1284,8 @@ public class ServerGamePacketListenerImpl } if (byteTotal > byteAllowed) { @@ -72,7 +80,7 @@ this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect return; } -@@ -1276,31 +_,45 @@ +@@ -1276,31 +1304,45 @@ public class ServerGamePacketListenerImpl Optional optional = packet.title(); optional.ifPresent(list::add); list.addAll(packet.pages()); @@ -122,7 +130,7 @@ itemStack.set( DataComponents.WRITTEN_BOOK_CONTENT, new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list, true) -@@ -1314,6 +_,16 @@ +@@ -1314,6 +1356,16 @@ public class ServerGamePacketListenerImpl return this.player.isTextFilteringEnabled() ? Filterable.passThrough(filteredText.filteredOrEmpty()) : Filterable.from(filteredText); } @@ -139,7 +147,7 @@ @Override public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); -@@ -1349,7 +_,15 @@ +@@ -1349,7 +1401,15 @@ public class ServerGamePacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); @@ -156,7 +164,7 @@ this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause } else { ServerLevel serverLevel = this.player.serverLevel(); -@@ -1531,7 +_,7 @@ +@@ -1531,7 +1591,7 @@ public class ServerGamePacketListenerImpl movedWrongly = true; if (event.getLogWarning()) // Paper end @@ -165,7 +173,7 @@ } // Paper } -@@ -1597,6 +_,8 @@ +@@ -1597,6 +1657,8 @@ public class ServerGamePacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -174,7 +182,7 @@ Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -1652,6 +_,13 @@ +@@ -1652,6 +1714,13 @@ public class ServerGamePacketListenerImpl this.player.tryResetCurrentImpulseContext(); } @@ -188,7 +196,7 @@ this.player.checkMovementStatistics(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1669,6 +_,17 @@ +@@ -1669,6 +1738,17 @@ public class ServerGamePacketListenerImpl } } @@ -206,7 +214,7 @@ private boolean shouldCheckPlayerMovement(boolean isElytraMovement) { if (this.isSingleplayerOwner()) { return false; -@@ -2065,6 +_,7 @@ +@@ -2065,6 +2145,7 @@ public class ServerGamePacketListenerImpl boolean cancelled; if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) { @@ -214,7 +222,7 @@ org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { -@@ -2737,6 +_,7 @@ +@@ -2737,6 +2818,7 @@ public class ServerGamePacketListenerImpl AABB boundingBox = target.getBoundingBox(); if (this.player.canInteractWithEntity(boundingBox, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience value for interact range diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch index dfa6db0dc..6b43b0aa8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +index 7950f4f88d8a83ed5610b7af4e134557d32da3f0..637b2eb7104cb0bc7f314ad6eea11a432e899861 100644 --- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -306,7 +_,7 @@ +@@ -306,7 +306,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(string1)); // Spigot } else { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch index 3fc9d014a..8f27573c6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/network/ServerStatusPacketListenerImpl.java b/net/minecraft/server/network/ServerStatusPacketListenerImpl.java +index 465559113071a47e706f77a5b0996597ee986b3d..1b966dc52b067cd9d1fa9f500b692e3f75f1cc90 100644 --- a/net/minecraft/server/network/ServerStatusPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerStatusPacketListenerImpl.java -@@ -37,6 +_,7 @@ +@@ -37,6 +37,7 @@ public class ServerStatusPacketListenerImpl implements ServerStatusPacketListene } else { this.hasRequestedStatus = true; // this.connection.send(new ClientboundStatusResponsePacket(this.status)); // Paper diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch index 33ba84a58..2ca3c74f1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java +index 9ca3c55a3b5b1a532b86b08eb92460df4cb54f2a..f7b12d5924005a24899aef11746b9f056fac3559 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -400,6 +_,7 @@ +@@ -400,6 +400,7 @@ public abstract class PlayerList { scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam); } // Paper end - Configurable player collision @@ -8,7 +16,7 @@ PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), loggableAddress, player.getId(), serverLevel.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); // Paper start - Send empty chunk, so players aren't stuck in the world loading screen with our chunk system not sending chunks when dead if (player.isDeadOrDying()) { -@@ -505,6 +_,7 @@ +@@ -505,6 +506,7 @@ public abstract class PlayerList { } public @Nullable net.kyori.adventure.text.Component remove(ServerPlayer player, net.kyori.adventure.text.Component leaveMessage) { // Paper end - Fix kick event leave message not being sent @@ -16,7 +24,7 @@ ServerLevel serverLevel = player.serverLevel(); player.awardStat(Stats.LEAVE_GAME); // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it -@@ -663,7 +_,7 @@ +@@ -663,7 +665,7 @@ public abstract class PlayerList { // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameProfile) // ? Component.translatable("multiplayer.disconnect.server_full") // : null; @@ -25,7 +33,7 @@ event.disallow(org.bukkit.event.player.PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure } } -@@ -932,6 +_,20 @@ +@@ -932,6 +934,20 @@ public abstract class PlayerList { } } @@ -46,7 +54,7 @@ public void broadcastAll(Packet packet, ResourceKey dimension) { for (ServerPlayer serverPlayer : this.players) { if (serverPlayer.level().dimension() == dimension) { -@@ -1016,6 +_,7 @@ +@@ -1016,6 +1032,7 @@ public abstract class PlayerList { } else { b = (byte)(24 + permLevel); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch index 998d2f057..e52bc72e9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/players/SleepStatus.java b/net/minecraft/server/players/SleepStatus.java +index 2a7ae521654ad5c9f392baa5562e64bb71b13097..3a3e6992563236141db687084aeec9684437a7db 100644 --- a/net/minecraft/server/players/SleepStatus.java +++ b/net/minecraft/server/players/SleepStatus.java -@@ -15,7 +_,7 @@ +@@ -15,7 +15,7 @@ public class SleepStatus { public boolean areEnoughDeepSleeping(int requiredSleepPercentage, List sleepingPlayers) { // CraftBukkit start @@ -9,7 +17,7 @@ boolean anyDeepSleep = sleepingPlayers.stream().anyMatch(Player::isSleepingLongEnough); return anyDeepSleep && i >= this.sleepersNeeded(requiredSleepPercentage); // CraftBukkit end -@@ -43,7 +_,7 @@ +@@ -43,7 +43,7 @@ public class SleepStatus { for (ServerPlayer serverPlayer : players) { if (!serverPlayer.isSpectator()) { this.activePlayers++; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch index f4855d61c..ab522903f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/stats/ServerRecipeBook.java b/net/minecraft/stats/ServerRecipeBook.java +index 2158b20458de63897131db3d425d1efcc358cace..7bd35dba7c7536e5451603759e004e1e31a9b614 100644 --- a/net/minecraft/stats/ServerRecipeBook.java +++ b/net/minecraft/stats/ServerRecipeBook.java -@@ -133,6 +_,7 @@ +@@ -133,6 +133,7 @@ public class ServerRecipeBook extends RecipeBook { private void loadRecipes(List>> recipes, Consumer>> output, Predicate>> isRecognized) { for (ResourceKey> resourceKey : recipes) { if (!isRecognized.test(resourceKey)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch index b8d231182..0acbf24a2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/util/StringUtil.java b/net/minecraft/util/StringUtil.java +index 77947e6915facee44588943fcd3e5b513de37e77..c3a99fe7b49858bc0ca9a7f800b0db40465f6901 100644 --- a/net/minecraft/util/StringUtil.java +++ b/net/minecraft/util/StringUtil.java -@@ -87,6 +_,7 @@ +@@ -87,6 +87,7 @@ public class StringUtil { // Paper start - Username validation public static boolean isReasonablePlayerName(final String name) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch index a70c7a253..e7f19bda9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/damagesource/CombatRules.java b/net/minecraft/world/damagesource/CombatRules.java +index d5524038314591a10c9f08a68e2ac91f6079a897..bf82de45bf98e8605a1fdb69803f75f471c4af43 100644 --- a/net/minecraft/world/damagesource/CombatRules.java +++ b/net/minecraft/world/damagesource/CombatRules.java -@@ -15,7 +_,7 @@ +@@ -15,7 +15,7 @@ public class CombatRules { public static float getDamageAfterAbsorb(LivingEntity entity, float damage, DamageSource damageSource, float armorValue, float armorToughness) { float f = 2.0F + armorToughness / 4.0F; @@ -9,7 +17,7 @@ float f2 = f1 / 25.0F; ItemStack weaponItem = damageSource.getWeaponItem(); float f3; -@@ -30,7 +_,7 @@ +@@ -30,7 +30,7 @@ public class CombatRules { } public static float getDamageAfterMagicAbsorb(float damage, float enchantModifiers) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch index 2bc01f621..9ee472807 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/damagesource/CombatTracker.java b/net/minecraft/world/damagesource/CombatTracker.java +index 4cec197634fac341cca1ed108f1ecb0561f72461..aa6213ca382e4901363317df1e30332c5166f271 100644 --- a/net/minecraft/world/damagesource/CombatTracker.java +++ b/net/minecraft/world/damagesource/CombatTracker.java -@@ -64,7 +_,7 @@ +@@ -64,7 +64,7 @@ public class CombatTracker { private Component getMessageForAssistedFall(Entity entity, Component entityDisplayName, String hasWeaponTranslationKey, String noWeaponTranslationKey) { ItemStack itemStack = entity instanceof LivingEntity livingEntity ? livingEntity.getMainHandItem() : ItemStack.EMPTY; @@ -9,7 +17,7 @@ ? Component.translatable(hasWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName, itemStack.getDisplayName()) : Component.translatable(noWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName); } -@@ -108,6 +_,15 @@ +@@ -108,6 +108,15 @@ 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/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch index 581f8d027..8b6388ba5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/damagesource/DamageSource.java b/net/minecraft/world/damagesource/DamageSource.java +index bb021fc9de91f8c4f79e6a753d57fa157efbbda7..5fa92eef9c6b88cf96d3fe427e4d4f16953e8094 100644 --- a/net/minecraft/world/damagesource/DamageSource.java +++ b/net/minecraft/world/damagesource/DamageSource.java -@@ -30,6 +_,8 @@ +@@ -30,6 +30,8 @@ public class DamageSource { @Nullable private org.bukkit.block.BlockState fromBlockSnapshot; // Captured block snapshot when the eventBlockDamager is not relevant (e.g. for bad respawn point explosions the block is already removed) private boolean critical; // Supports arrows and sweeping damage @@ -9,7 +17,7 @@ public DamageSource knownCause(final org.bukkit.event.entity.EntityDamageEvent.DamageCause cause) { final DamageSource damageSource = this.copy(); -@@ -42,6 +_,30 @@ +@@ -42,6 +44,30 @@ public class DamageSource { return this.knownCause; } @@ -40,7 +48,7 @@ @Nullable public Entity eventEntityDamager() { return this.eventEntityDamager; -@@ -103,6 +_,8 @@ +@@ -103,6 +129,8 @@ public class DamageSource { damageSource.eventBlockDamager = this.eventBlockDamager; damageSource.fromBlockSnapshot = this.fromBlockSnapshot; damageSource.critical = this.critical; @@ -49,7 +57,7 @@ return damageSource; } // CraftBukkit end -@@ -169,11 +_,20 @@ +@@ -169,12 +197,21 @@ public class DamageSource { } else { Component component = this.causingEntity == null ? this.directEntity.getDisplayName() : this.causingEntity.getDisplayName(); ItemStack itemStack = this.causingEntity instanceof LivingEntity livingEntity1 ? livingEntity1.getMainHandItem() : ItemStack.EMPTY; @@ -59,7 +67,7 @@ : Component.translatable(string, livingEntity.getDisplayName(), component); } } -+ + + // Purpur start - Component related conveniences + public Component getLocalizedDeathMessage(String str, LivingEntity entity) { + net.kyori.adventure.text.Component name = io.papermc.paper.adventure.PaperAdventure.asAdventure(entity.getDisplayName()); @@ -68,6 +76,7 @@ + return io.papermc.paper.adventure.PaperAdventure.asVanilla(component); + } + // Purpur end - Component related conveniences - ++ public String getMsgId() { return this.type().msgId(); + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch index 29006dbaf..d3490d766 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/damagesource/DamageSources.java b/net/minecraft/world/damagesource/DamageSources.java +index cc206ecff2d95f0398ca424c178a336ad80cc396..7afad362801082e5f2e3aceda864ad2a7d4e5ebb 100644 --- a/net/minecraft/world/damagesource/DamageSources.java +++ b/net/minecraft/world/damagesource/DamageSources.java -@@ -42,6 +_,8 @@ +@@ -42,6 +42,8 @@ public class DamageSources { private final DamageSource stalagmite; private final DamageSource outsideBorder; private final DamageSource genericKill; @@ -9,7 +17,7 @@ public DamageSources(RegistryAccess registry) { this.damageTypes = registry.lookupOrThrow(Registries.DAMAGE_TYPE); -@@ -70,6 +_,8 @@ +@@ -70,6 +72,8 @@ public class DamageSources { this.stalagmite = this.source(DamageTypes.STALAGMITE); this.outsideBorder = this.source(DamageTypes.OUTSIDE_BORDER); this.genericKill = this.source(DamageTypes.GENERIC_KILL); @@ -18,11 +26,10 @@ } private DamageSource source(ResourceKey damageTypeKey) { -@@ -83,6 +_,18 @@ - private DamageSource source(ResourceKey damageTypeKey, @Nullable Entity causingEntity, @Nullable Entity directEntity) { +@@ -84,6 +88,18 @@ public class DamageSources { return new DamageSource(this.damageTypes.getOrThrow(damageTypeKey), causingEntity, directEntity); } -+ + + // Purpur start - Dont run with scissor + public DamageSource scissors() { + return this.scissors; @@ -34,6 +41,7 @@ + return this.stonecutter; + } + // Purpur end - Stonecutter damage - ++ public DamageSource inFire() { return this.inFire; + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch index ea284de7b..a368f6b64 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/effect/HungerMobEffect.java b/net/minecraft/world/effect/HungerMobEffect.java +index 0890694ae96b6cd60079c34066e7a6e288f038e8..6c0e6bd2a171edc57dec71af178764454de73313 100644 --- a/net/minecraft/world/effect/HungerMobEffect.java +++ b/net/minecraft/world/effect/HungerMobEffect.java -@@ -12,7 +_,7 @@ +@@ -12,7 +12,7 @@ class HungerMobEffect extends MobEffect { @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { if (entity instanceof Player player) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch index 0e8d7e3f7..08fba0133 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/effect/PoisonMobEffect.java b/net/minecraft/world/effect/PoisonMobEffect.java +index 75327fd96858fd508ea63a6983e5cbc655a8800f..73cfc61ac3f8e33e6b9f4fd08a292266c0adb535 100644 --- a/net/minecraft/world/effect/PoisonMobEffect.java +++ b/net/minecraft/world/effect/PoisonMobEffect.java -@@ -12,8 +_,8 @@ +@@ -12,8 +12,8 @@ public class PoisonMobEffect extends MobEffect { @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch index f19f319af..41003563d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/effect/RegenerationMobEffect.java b/net/minecraft/world/effect/RegenerationMobEffect.java +index 76cffa4d4d18d6c04749d941dbdf5eb60aed4095..81481267a1577721dcc405f39a4c350bd59ac9a2 100644 --- a/net/minecraft/world/effect/RegenerationMobEffect.java +++ b/net/minecraft/world/effect/RegenerationMobEffect.java -@@ -11,7 +_,7 @@ +@@ -11,7 +11,7 @@ class RegenerationMobEffect extends MobEffect { @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { if (entity.getHealth() < entity.getMaxHealth()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch index f2d21d380..4674ebbb3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/effect/SaturationMobEffect.java b/net/minecraft/world/effect/SaturationMobEffect.java +index c192165910f6b139df6f604d0bce989061efa9cb..622c23f4570d07de8bee9623bf900aabb3331ded 100644 --- a/net/minecraft/world/effect/SaturationMobEffect.java +++ b/net/minecraft/world/effect/SaturationMobEffect.java -@@ -16,7 +_,8 @@ +@@ -16,7 +16,8 @@ class SaturationMobEffect extends InstantenousMobEffect { int oldFoodLevel = player.getFoodData().foodLevel; org.bukkit.event.entity.FoodLevelChangeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(player, amplifier + 1 + oldFoodLevel); if (!event.isCancelled()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch index 767637659..ec94a99cb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/effect/WitherMobEffect.java b/net/minecraft/world/effect/WitherMobEffect.java +index 1fc9e1ad541c46124183a401b2a7d99aea69cecf..881271f0bc77a8a8a7d31daad9a8188bebaca67b 100644 --- a/net/minecraft/world/effect/WitherMobEffect.java +++ b/net/minecraft/world/effect/WitherMobEffect.java -@@ -12,7 +_,7 @@ +@@ -12,7 +12,7 @@ public class WitherMobEffect extends MobEffect { @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index b88e9207b..6ea886bd7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java +index 22d91f99c50e3b3b88ccab4eb5d1b71be5a9dcd8..b8a0abd1cbdc0c86ae9e68ebaeec14cd4728450e 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -141,6 +_,7 @@ +@@ -141,6 +141,7 @@ import net.minecraft.world.scores.Team; import org.jetbrains.annotations.Contract; public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, ScoreHolder, DataComponentGetter, ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity, ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerEntity { // Paper - rewrite chunk system // Paper - optimise entity tracker @@ -8,7 +16,7 @@ // CraftBukkit start private static final org.slf4j.Logger LOGGER = com.mojang.logging.LogUtils.getLogger(); private static final int CURRENT_LEVEL = 2; -@@ -260,8 +_,9 @@ +@@ -260,8 +261,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public double xOld; public double yOld; public double zOld; @@ -19,7 +27,7 @@ public int tickCount; private int remainingFireTicks = -this.getFireImmuneTicks(); public boolean wasTouchingWater; -@@ -295,8 +_,8 @@ +@@ -295,8 +297,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public PortalProcessor portalProcess; public int portalCooldown; private boolean invulnerable; @@ -30,7 +38,7 @@ private boolean hasGlowingTag; private final Set tags = new io.papermc.paper.util.SizeLimitedSet<>(new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(), MAX_ENTITY_TAG_COUNT); // Paper - fully limit tag size - replace set impl private final double[] pistonDeltas = new double[]{0.0, 0.0, 0.0}; -@@ -350,6 +_,7 @@ +@@ -350,6 +352,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public long activatedTick = Integer.MIN_VALUE; public boolean isTemporarilyActive; public long activatedImmunityTick = Integer.MIN_VALUE; @@ -38,7 +46,7 @@ public void inactiveTick() { } -@@ -512,10 +_,21 @@ +@@ -512,10 +515,21 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Paper end - optimise entity tracker @@ -60,7 +68,7 @@ this.position = Vec3.ZERO; this.blockPosition = BlockPos.ZERO; this.chunkPosition = ChunkPos.ZERO; -@@ -885,6 +_,7 @@ +@@ -885,6 +899,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 @@ -68,7 +76,7 @@ this.onBelowWorld(); } } -@@ -1830,7 +_,7 @@ +@@ -1830,7 +1845,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean fireImmune() { @@ -77,7 +85,7 @@ } public boolean causeFallDamage(double fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -1890,7 +_,7 @@ +@@ -1890,7 +1905,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.isInWater() || flag; } @@ -86,7 +94,7 @@ if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { this.wasTouchingWater = false; } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) { -@@ -2516,6 +_,13 @@ +@@ -2516,6 +2531,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess compound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -100,7 +108,7 @@ return compound; } catch (Throwable var8) { CrashReport crashReport = CrashReport.forThrowable(var8, "Saving entity NBT"); -@@ -2646,6 +_,13 @@ +@@ -2646,6 +2668,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess freezeLocked = compound.getBooleanOr("Paper.FreezeLock", false); } // Paper end @@ -114,7 +122,7 @@ } catch (Throwable var8) { CrashReport crashReport = CrashReport.forThrowable(var8, "Loading entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); -@@ -2874,6 +_,7 @@ +@@ -2874,6 +2903,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess if (this.isAlive() && this instanceof Leashable leashable) { if (leashable.getLeashHolder() == player) { if (!this.level().isClientSide()) { @@ -122,7 +130,7 @@ // CraftBukkit start - fire PlayerUnleashEntityEvent // Paper start - Expand EntityUnleashEvent org.bukkit.event.player.PlayerUnleashEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials()); -@@ -3190,15 +_,18 @@ +@@ -3190,15 +3220,18 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Vec3.directionFromRotation(this.getRotationVector()); } @@ -142,7 +150,7 @@ } } } -@@ -3403,7 +_,7 @@ +@@ -3403,7 +3436,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public int getMaxAirSupply() { @@ -151,7 +159,7 @@ } public int getAirSupply() { -@@ -3931,7 +_,7 @@ +@@ -3931,7 +3964,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -160,7 +168,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4468,6 +_,12 @@ +@@ -4468,6 +4501,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -173,7 +181,7 @@ // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { -@@ -4876,7 +_,7 @@ +@@ -4876,7 +4915,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public float maxUpStep() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch index ff1e039a1..bcd07edf0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/EntitySelector.java b/net/minecraft/world/entity/EntitySelector.java +index bfd58eb04eee606ac0a8071de9bf75f46c35decb..0c1953754220ff72e18f0396134507d93ba7b1b8 100644 --- a/net/minecraft/world/entity/EntitySelector.java +++ b/net/minecraft/world/entity/EntitySelector.java -@@ -28,6 +_,8 @@ +@@ -28,6 +28,8 @@ 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 - Ability to control player's insomnia and phantoms diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch index 5fb68cfd6..b4f08e260 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/EntityType.java b/net/minecraft/world/entity/EntityType.java +index ed11697d81789ee6cd48ee2de2c9fcb8ff2be0d4..d6a0ad078fd1f0350afaac3f1743896d73b015e1 100644 --- a/net/minecraft/world/entity/EntityType.java +++ b/net/minecraft/world/entity/EntityType.java -@@ -1095,6 +_,16 @@ +@@ -1095,6 +1095,16 @@ public class EntityType implements FeatureElement, EntityTypeT return register(vanillaEntityId(key), builder); } @@ -17,7 +25,7 @@ public static ResourceLocation getKey(EntityType entityType) { return BuiltInRegistries.ENTITY_TYPE.getKey(entityType); } -@@ -1325,6 +_,16 @@ +@@ -1325,6 +1335,16 @@ public class EntityType implements FeatureElement, EntityTypeT return this.category; } @@ -34,7 +42,7 @@ public String getDescriptionId() { return this.descriptionId; } -@@ -1384,7 +_,11 @@ +@@ -1384,7 +1404,11 @@ public class EntityType implements FeatureElement, EntityTypeT entity.load(tag); }, // Paper end - Don't fire sync event during generation diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch index f77455e12..a286a6404 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ExperienceOrb.java b/net/minecraft/world/entity/ExperienceOrb.java +index c97a0e500e889b406cb2d679a3870715775f5393..81aa1a91a2ecda3053b22c2eb9e59f0ea2faf7b5 100644 --- a/net/minecraft/world/entity/ExperienceOrb.java +++ b/net/minecraft/world/entity/ExperienceOrb.java -@@ -328,7 +_,7 @@ +@@ -328,7 +328,7 @@ public class ExperienceOrb extends Entity { public void playerTouch(Player entity) { if (entity instanceof ServerPlayer serverPlayer) { if (entity.takeXpDelay == 0 && new com.destroystokyo.paper.event.player.PlayerPickupExperienceEvent(serverPlayer.getBukkitEntity(), (org.bukkit.entity.ExperienceOrb) this.getBukkitEntity()).callEvent()) { // Paper - PlayerPickupExperienceEvent @@ -9,7 +17,7 @@ entity.take(this, 1); int i = this.repairPlayerItems(serverPlayer, this.getValue()); if (i > 0) { -@@ -344,7 +_,7 @@ +@@ -344,7 +344,7 @@ public class ExperienceOrb extends Entity { } private int repairPlayerItems(ServerPlayer player, int value) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch index 932024a00..7bd87b59a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java +index 3f351fdb3cb76612d88bde713a2639d4319a7c6d..bda521cca91f070139f5e9bdef6a50e1497f53ff 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java -@@ -26,6 +_,13 @@ +@@ -26,6 +26,13 @@ public class GlowSquid extends Squid { super(entityType, level); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch index 18edfcd80..677fb9bdf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java +index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e0755fa77 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -430,6 +_,12 @@ +@@ -430,6 +430,12 @@ public abstract class LivingEntity extends Entity implements Attackable { if (d < 0.0) { double damagePerBlock = serverLevel1.getWorldBorder().getDamagePerBlock(); if (damagePerBlock > 0.0) { @@ -13,7 +21,7 @@ this.hurtServer(serverLevel1, this.damageSources().outOfBorder(), Math.max(1, Mth.floor(-d * damagePerBlock))); } } -@@ -442,10 +_,10 @@ +@@ -442,10 +448,10 @@ public abstract class LivingEntity extends Entity implements Attackable { && (!flag || !((Player)this).getAbilities().invulnerable); if (flag1) { this.setAirSupply(this.decreaseAirSupply(this.getAirSupply())); @@ -26,7 +34,7 @@ } } else if (this.getAirSupply() < this.getMaxAirSupply()) { this.setAirSupply(this.increaseAirSupply(this.getAirSupply())); -@@ -1014,14 +_,32 @@ +@@ -1014,15 +1020,33 @@ public abstract class LivingEntity extends Entity implements Attackable { if (lookingEntity != null) { ItemStack itemBySlot = this.getItemBySlot(EquipmentSlot.HEAD); EntityType type = lookingEntity.getType(); @@ -36,15 +44,13 @@ - || type == EntityType.PIGLIN_BRUTE && itemBySlot.is(Items.PIGLIN_HEAD) - || type == EntityType.CREEPER && itemBySlot.is(Items.CREEPER_HEAD)) { - d *= 0.5; -- } -- } + // Purpur start - Mob head visibility percent + if (type == EntityType.SKELETON && itemBySlot.is(Items.SKELETON_SKULL)) { + d *= lookingEntity.level().purpurConfig.skeletonHeadVisibilityPercent; + } + else if (type == EntityType.ZOMBIE && itemBySlot.is(Items.ZOMBIE_HEAD)) { + d *= lookingEntity.level().purpurConfig.zombieHeadVisibilityPercent; -+ } + } + else if ((type == EntityType.PIGLIN || type == EntityType.PIGLIN_BRUTE) && itemBySlot.is(Items.PIGLIN_HEAD)) { + d *= lookingEntity.level().purpurConfig.piglinHeadVisibilityPercent; + } @@ -52,8 +58,8 @@ + d *= lookingEntity.level().purpurConfig.creeperHeadVisibilityPercent; + } + // Purpur end - Mob head visibility percent -+ } -+ + } + + // Purpur start - Configurable mob blindness + if (lookingEntity instanceof LivingEntity entityliving) { + if (entityliving.hasEffect(MobEffects.BLINDNESS)) { @@ -64,10 +70,11 @@ + } + } + // Purpur end - Configurable mob blindness - ++ return d; } -@@ -1068,6 +_,7 @@ + +@@ -1068,6 +1092,7 @@ public abstract class LivingEntity extends Entity implements Attackable { Iterator iterator = this.activeEffects.values().iterator(); while (iterator.hasNext()) { MobEffectInstance effect = iterator.next(); @@ -75,7 +82,7 @@ EntityPotionEffectEvent event = CraftEventFactory.callEntityPotionEffectChangeEvent(this, effect, null, cause, EntityPotionEffectEvent.Action.CLEARED); if (event.isCancelled()) { continue; -@@ -1385,6 +_,24 @@ +@@ -1385,6 +1410,24 @@ public abstract class LivingEntity extends Entity implements Attackable { this.stopSleeping(); } @@ -100,7 +107,7 @@ this.noActionTime = 0; if (amount < 0.0F) { amount = 0.0F; -@@ -1646,10 +_,10 @@ +@@ -1646,10 +1689,10 @@ public abstract class LivingEntity extends Entity implements Attackable { protected Player resolvePlayerResponsibleForDamage(DamageSource damageSource) { Entity entity = damageSource.getEntity(); if (entity instanceof Player player) { @@ -113,7 +120,7 @@ } else { this.lastHurtByPlayer = null; this.lastHurtByPlayerMemoryTime = 0; -@@ -1700,6 +_,18 @@ +@@ -1700,6 +1743,18 @@ public abstract class LivingEntity extends Entity implements Attackable { } } @@ -132,7 +139,7 @@ final org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null; final EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemStack == null); -@@ -1875,6 +_,7 @@ +@@ -1875,6 +1930,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = this.lastHurtByPlayerMemoryTime > 0; this.dropEquipment(level); // CraftBukkit - from below if (this.shouldDropLoot() && level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -140,7 +147,7 @@ this.dropFromLootTable(level, damageSource, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1883,6 +_,7 @@ +@@ -1883,6 +1939,7 @@ public abstract class LivingEntity extends Entity implements Attackable { // Paper end this.dropCustomDeathLoot(level, damageSource, flag); this.clearEquipmentSlots = prev; // Paper @@ -148,7 +155,7 @@ } // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment -@@ -3057,6 +_,7 @@ +@@ -3057,6 +3114,7 @@ public abstract class LivingEntity extends Entity implements Attackable { float f = (float)(d * 10.0 - 3.0); if (f > 0.0F) { this.playSound(this.getFallDamageSound((int)f), 1.0F, 1.0F); @@ -156,16 +163,16 @@ this.hurt(this.damageSources().flyIntoWall(), f); } } -@@ -4451,6 +_,12 @@ - ? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND) +@@ -4452,6 +4510,12 @@ public abstract class LivingEntity extends Entity implements Attackable { : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType()); } -+ + + // Purpur start - Dispenser curse of binding protection + public @Nullable EquipmentSlot getEquipmentSlotForDispenserItem(ItemStack itemstack) { + return EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.BINDING_CURSE, itemstack) > 0 ? null : this.getEquipmentSlotForItem(itemstack); + } + // Purpur end - Dispenser curse of binding protection - ++ private static SlotAccess createEquipmentSlotAccess(LivingEntity entity, EquipmentSlot slot) { return slot != EquipmentSlot.HEAD && slot != EquipmentSlot.MAINHAND && slot != EquipmentSlot.OFFHAND + ? SlotAccess.forEquipmentSlot(entity, slot, itemStack -> itemStack.isEmpty() || entity.getEquipmentSlotForItem(itemStack) == slot) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch index 453f49b1b..43c9dff1b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java +index 73ba442b9d39bc021cd5eb6c1c0f98aed94a5a02..e3b804f2d612ed7971db450aeea6768109b63470 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -136,6 +_,7 @@ +@@ -136,6 +136,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab private BlockPos restrictCenter = BlockPos.ZERO; private float restrictRadius = -1.0F; public boolean aware = true; // CraftBukkit @@ -8,7 +16,7 @@ protected Mob(EntityType entityType, Level level) { super(entityType, level); -@@ -281,6 +_,7 @@ +@@ -281,6 +282,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab target = null; } } @@ -16,14 +24,13 @@ this.target = target; return true; // CraftBukkit end -@@ -324,7 +_,27 @@ +@@ -324,8 +326,28 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } profilerFiller.pop(); -- } + incrementTicksSinceLastInteraction(); // Purpur - Entity lifespan -+ } -+ + } + + // Purpur start - Entity lifespan + private void incrementTicksSinceLastInteraction() { + ++this.ticksSinceLastInteraction; @@ -42,10 +49,11 @@ + } + } + // Purpur end - Entity lifespan - ++ @Override protected void playHurtSound(DamageSource source) { -@@ -420,6 +_,7 @@ + this.resetAmbientSoundTime(); +@@ -420,6 +442,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab compound.putBoolean("NoAI", this.isNoAi()); } compound.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit @@ -53,7 +61,7 @@ } @Override -@@ -443,6 +_,7 @@ +@@ -443,6 +466,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.lootTableSeed = compound.getLongOr("DeathLootTableSeed", 0L); this.setNoAi(compound.getBooleanOr("NoAI", false)); this.aware = compound.getBooleanOr("Bukkit.Aware", true); // CraftBukkit @@ -61,7 +69,7 @@ } @Override -@@ -1167,7 +_,7 @@ +@@ -1167,7 +1191,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab ); } @@ -70,7 +78,7 @@ return spawnGroupData; } -@@ -1499,6 +_,7 @@ +@@ -1499,6 +1523,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.playAttackSound(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch index 4cd99d012..a84245ab6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/attributes/RangedAttribute.java b/net/minecraft/world/entity/ai/attributes/RangedAttribute.java +index a87accd5fe14102e7a2938f991a8ed0b9accd1bb..c7515f7f24e39d6931dcf18574cb47d754983903 100644 --- a/net/minecraft/world/entity/ai/attributes/RangedAttribute.java +++ b/net/minecraft/world/entity/ai/attributes/RangedAttribute.java -@@ -29,6 +_,7 @@ +@@ -29,6 +29,7 @@ public class RangedAttribute extends Attribute { @Override public double sanitizeValue(double value) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch index c457ae742..8c83db8ec 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +index b9174ae7e3a3e2de2d570b95ab5012ac3c3a2eda..67cbf9f5760fae5db6f31e64095cd1b6be6ade8e 100644 --- a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +++ b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -@@ -86,7 +_,7 @@ +@@ -86,7 +86,7 @@ public class AcquirePoi { }; // Paper start - optimise POI access final java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch index f90e63ebd..1b5e18b00 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java b/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java +index 296ecffbbce931b42c67ea523373a61cea23acf4..b2eec24be3635f2c19da9b147211fe6cb454c780 100644 --- a/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java +++ b/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java -@@ -55,7 +_,7 @@ +@@ -55,7 +55,7 @@ public class InteractWithDoor { Node nextNode = path.getNextNode(); BlockPos blockPos = previousNode.asBlockPos(); BlockState blockState = level.getBlockState(blockPos); @@ -9,7 +17,7 @@ DoorBlock doorBlock = (DoorBlock)blockState.getBlock(); if (!doorBlock.isOpen(blockState)) { // CraftBukkit start - entities opening doors -@@ -72,7 +_,7 @@ +@@ -72,7 +72,7 @@ public class InteractWithDoor { BlockPos blockPos1 = nextNode.asBlockPos(); BlockState blockState1 = level.getBlockState(blockPos1); @@ -18,7 +26,7 @@ DoorBlock doorBlock1 = (DoorBlock)blockState1.getBlock(); if (!doorBlock1.isOpen(blockState1)) { // CraftBukkit start - entities opening doors -@@ -118,7 +_,7 @@ +@@ -118,7 +118,7 @@ public class InteractWithDoor { iterator.remove(); } else { BlockState blockState = level.getBlockState(blockPos); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch index 2bbc2776e..b41af4c20 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java b/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java +index 400e6d49144b3e5803901938dcd2ac4e52e9c131..45c45afeffcfba3558bdf46cbe39ff60004ffc01 100644 --- a/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java +++ b/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java -@@ -46,6 +_,7 @@ +@@ -46,6 +46,7 @@ public class ShowTradesToPlayer extends Behavior { @Override public boolean canStillUse(ServerLevel level, Villager entity, long gameTime) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch index 6fbb7bf98..9a3c9b872 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java b/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java +index 6eaf0bd944349cd0c6084462ac385fa2caafe933..be59d0c27a83b329ec3f97c029cfb9c114e22472 100644 --- a/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java +++ b/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java -@@ -22,6 +_,7 @@ +@@ -22,6 +22,7 @@ public class LlamaFollowCaravanGoal extends Goal { @Override public boolean canUse() { @@ -8,7 +16,7 @@ if (!this.llama.isLeashed() && !this.llama.inCaravan()) { List entities = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0, 4.0, 9.0), entity1 -> { EntityType type = entity1.getType(); -@@ -71,6 +_,7 @@ +@@ -71,6 +72,7 @@ public class LlamaFollowCaravanGoal extends Goal { @Override public boolean canContinueToUse() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch index f623c03a9..6ff6bb7c6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java b/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java +index 722f378bb3726200b6fe88948bf1e1d3514a7b5c..e337e22c2cf82b0c1cab3fe0a9ff894c0c718716 100644 --- a/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java +++ b/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java -@@ -116,9 +_,9 @@ +@@ -116,9 +116,9 @@ public class RangedBowAttackGoal extends Go } this.mob.lookAt(target, 30.0F, 30.0F); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch index cb39bb4e0..90f79d9f5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java b/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java +index 878d7813b3f2f52bef336c6d855d738bc2f83491..d0f94f065d2ecf6ca6b47ac49422ffa656a18f55 100644 --- a/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java +++ b/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java -@@ -58,7 +_,7 @@ +@@ -58,7 +58,7 @@ public class RunAroundLikeCrazyGoal extends Goal { if (firstPassenger instanceof Player player) { int temper = this.horse.getTemper(); int maxTemper = this.horse.getMaxTemper(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch index b072c14f4..6cf8696b3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/goal/SwellGoal.java b/net/minecraft/world/entity/ai/goal/SwellGoal.java +index 243a552f6f0c8c2bd25c0209c95e3bca08734711..38fd0196a0f5a90e39fa4eb8592f89bf6b88ccf5 100644 --- a/net/minecraft/world/entity/ai/goal/SwellGoal.java +++ b/net/minecraft/world/entity/ai/goal/SwellGoal.java -@@ -55,6 +_,14 @@ +@@ -55,6 +55,14 @@ public class SwellGoal extends Goal { this.creeper.setSwellDir(-1); } else { this.creeper.setSwellDir(1); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch index 7e2366a32..99bb8d0d2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +index 066faa704338c573472381e1ebd063e0d52aaaa4..1f96fd5085bacb4c584576c7cb9f51e7898e9b03 100644 --- a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +++ b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -@@ -56,7 +_,7 @@ +@@ -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. diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch index df5fd519b..b25734824 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +index 2f8920d8ee765d057a22d76f24f7d7dc1b0b17ca..6f0fcaeaba2fec2ad944d63550f0c3e29bd9133c 100644 --- a/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -@@ -64,6 +_,10 @@ +@@ -64,6 +64,10 @@ public class TargetingConditions { return false; } else if (this.selector != null && !this.selector.test(target, level)) { return false; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch index 7c4eddca7..dd38c623c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java +index eb9fb57440f498079182030a46034008d3f6b5e8..ed8920bb6d29ce49626bc716aa2c2ce938f6d92b 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java -@@ -232,7 +_,7 @@ +@@ -232,7 +232,7 @@ public class Bat extends AmbientCreature { } else { int maxLocalRawBrightness = level.getMaxLocalRawBrightness(pos); int i = 4; @@ -9,7 +17,7 @@ i = 7; } else if (randomSource.nextBoolean()) { return false; -@@ -244,6 +_,11 @@ +@@ -244,6 +244,11 @@ public class Bat extends AmbientCreature { } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch index 3c0826a05..3aefa55a5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/AbstractCow.java b/net/minecraft/world/entity/animal/AbstractCow.java +index dd8ea03ba823996a5c97562e357650ab34d0e32e..4e81bc7215c845b316bcd46ce29f49af7f986088 100644 --- a/net/minecraft/world/entity/animal/AbstractCow.java +++ b/net/minecraft/world/entity/animal/AbstractCow.java -@@ -39,7 +_,7 @@ +@@ -39,7 +39,7 @@ public abstract class AbstractCow extends Animal { this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(1, new PanicGoal(this, 2.0)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0)); @@ -9,7 +17,7 @@ this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); -@@ -95,6 +_,10 @@ +@@ -95,6 +95,10 @@ public abstract class AbstractCow extends Animal { ItemStack itemStack = ItemUtils.createFilledResult(itemInHand, player, org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getItemStack())); // CraftBukkit player.setItemInHand(hand, itemStack); return InteractionResult.SUCCESS; @@ -20,7 +28,7 @@ } else { return super.mobInteract(player, hand); } -@@ -104,4 +_,67 @@ +@@ -104,4 +108,67 @@ public abstract class AbstractCow extends Animal { public EntityDimensions getDefaultDimensions(Pose pose) { return this.isBaby() ? BABY_DIMENSIONS : super.getDefaultDimensions(pose); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch index 0f2339b09..fb812bb2c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Animal.java b/net/minecraft/world/entity/animal/Animal.java +index b851f94d63a049292a3657009d68bc1641222104..2ce0099460c14a6dd8b128f268ee915ea4be5183 100644 --- a/net/minecraft/world/entity/animal/Animal.java +++ b/net/minecraft/world/entity/animal/Animal.java -@@ -142,7 +_,7 @@ +@@ -142,7 +142,7 @@ public abstract class Animal extends AgeableMob { ItemStack itemInHand = player.getItemInHand(hand); if (this.isFood(itemInHand)) { int age = this.getAge(); @@ -9,7 +17,7 @@ final ItemStack breedCopy = itemInHand.copy(); // Paper - Fix EntityBreedEvent copying this.usePlayerItem(player, hand, itemInHand); this.setInLove(player, breedCopy); // Paper - Fix EntityBreedEvent copying -@@ -239,10 +_,20 @@ +@@ -239,10 +239,20 @@ public abstract class Animal extends AgeableMob { public void spawnChildFromBreeding(ServerLevel level, Animal mate) { AgeableMob breedOffspring = this.getBreedOffspring(level, mate); if (breedOffspring != null) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch index dc2f1ba02..4166696de 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java +index edca2fa21e600fa1e7ef91af673adaae7d4c86c4..585131365c40136cf8a8a715b077982091ee38d5 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -167,7 +_,7 @@ +@@ -167,7 +167,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { // Paper end - Fix MC-167279 this.lookControl = new Bee.BeeLookControl(this); this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F); @@ -9,7 +17,7 @@ this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F); this.setPathfindingMalus(PathType.COCOA, -1.0F); this.setPathfindingMalus(PathType.FENCE, -1.0F); -@@ -365,7 +_,7 @@ +@@ -365,7 +365,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } public static boolean isNightOrRaining(Level level) { @@ -18,7 +26,7 @@ } public void setStayOutOfHiveCountdown(int stayOutOfHiveCountdown) { -@@ -388,7 +_,7 @@ +@@ -388,7 +388,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override protected void customServerAiStep(ServerLevel level) { boolean hasStung = this.hasStung(); @@ -27,7 +35,7 @@ this.underWaterTicks++; } else { this.underWaterTicks = 0; -@@ -398,6 +_,7 @@ +@@ -398,6 +398,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.hurtServer(level, this.damageSources().drown(), 1.0F); } @@ -35,7 +43,7 @@ if (hasStung) { this.timeSinceSting++; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { -@@ -1135,6 +_,7 @@ +@@ -1135,6 +1136,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { Bee.this.savedFlowerPos = optional.get(); Bee.this.navigation .moveTo(Bee.this.savedFlowerPos.getX() + 0.5, Bee.this.savedFlowerPos.getY() + 0.5, Bee.this.savedFlowerPos.getZ() + 0.5, 1.2F); @@ -43,7 +51,7 @@ return true; } else { Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60); -@@ -1181,6 +_,7 @@ +@@ -1181,6 +1183,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.pollinating = false; Bee.this.navigation.stop(); Bee.this.remainingCooldownBeforeLocatingNewFlower = 200; @@ -51,7 +59,7 @@ } @Override -@@ -1227,6 +_,7 @@ +@@ -1227,6 +1230,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.setWantedPos(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch index 5bbb90ab9..da9463a34 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java +index 9c60140ef1ae9973ce39643c5253ddb0eac1c97b..7894db23663c4647742f543195b610bd7e1f3360 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java -@@ -353,6 +_,14 @@ +@@ -353,6 +353,14 @@ public class Cat extends TamableAnimal { return this.isTame() && otherAnimal instanceof Cat cat && cat.isTame() && super.canMate(otherAnimal); } @@ -15,7 +23,7 @@ @Nullable @Override public SpawnGroupData finalizeSpawn( -@@ -451,7 +_,7 @@ +@@ -451,7 +459,7 @@ public class Cat extends TamableAnimal { } private void tryToTame(Player player) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch index f5d03cb8f..8883d198f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java +index 8f2af65c58da50be2776a21b10db5eb9cb5f3076..bca2e4659f4afdd7106f77e32af1943e4d276f5e 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java -@@ -73,6 +_,7 @@ +@@ -73,6 +73,7 @@ public class Dolphin extends AgeableWaterCreature { private static final boolean DEFAULT_GOT_FISH = false; @Nullable public BlockPos treasurePos; @@ -8,7 +16,7 @@ public Dolphin(EntityType entityType, Level level) { super(entityType, level); -@@ -89,6 +_,7 @@ +@@ -89,6 +90,7 @@ public class Dolphin extends AgeableWaterCreature { this.setAirSupply(this.getMaxAirSupply()); this.setXRot(0.0F); SpawnGroupData spawnGroupData1 = Objects.requireNonNullElseGet(spawnGroupData, () -> new AgeableMob.AgeableMobGroupData(0.1F)); @@ -16,7 +24,7 @@ return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData1); } -@@ -155,17 +_,19 @@ +@@ -155,17 +157,19 @@ public class Dolphin extends AgeableWaterCreature { protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); @@ -37,7 +45,7 @@ } public static AttributeSupplier.Builder createAttributes() { -@@ -398,6 +_,7 @@ +@@ -398,6 +402,7 @@ public class Dolphin extends AgeableWaterCreature { @Override public boolean canUse() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch index 283e94dc0..097b3cbc0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java +index 5c7572b75afcfa9965fcda5965f6ae2e59babb46..4aae42396bd3abb131efe336d7b774384897671d 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -345,6 +_,11 @@ +@@ -345,6 +345,11 @@ public class Fox extends Animal { } private void setTargetGoals() { @@ -12,7 +20,7 @@ if (this.getVariant() == Fox.Variant.RED) { this.targetSelector.addGoal(4, this.landTargetGoal); this.targetSelector.addGoal(4, this.turtleEggTargetGoal); -@@ -372,6 +_,7 @@ +@@ -372,6 +377,7 @@ public class Fox extends Animal { public void setVariant(Fox.Variant variant) { this.entityData.set(DATA_TYPE_ID, variant.getId()); @@ -20,11 +28,10 @@ } @Nullable -@@ -705,6 +_,29 @@ - return slot == EquipmentSlot.MAINHAND; +@@ -706,6 +712,29 @@ public class Fox extends Animal { } // Paper end -+ + + // Purpur start - Tulips change fox type + @Override + public net.minecraft.world.InteractionResult mobInteract(Player player, net.minecraft.world.InteractionHand hand) { @@ -47,6 +54,7 @@ + return super.mobInteract(player, hand); + } + // Purpur end - Tulips change fox type - ++ @Override // Paper start - Cancellable death event + protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(ServerLevel level, DamageSource damageSource) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch index bf5dd4962..58c04a8cf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java +index 33245f28c02c5cd42f2daec8748d615b7f5e21ec..91897447d7ef35af3300443e8eb96340081fed48 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java -@@ -57,13 +_,26 @@ +@@ -57,13 +57,26 @@ public class IronGolem extends AbstractGolem implements NeutralMob { private int remainingPersistentAngerTime; @Nullable private UUID persistentAngerTarget; @@ -27,7 +35,7 @@ this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9, 32.0F)); this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6, false)); -@@ -141,6 +_,7 @@ +@@ -141,6 +154,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); compound.putBoolean("PlayerCreated", this.isPlayerCreated()); @@ -35,7 +43,7 @@ this.addPersistentAngerSaveData(compound); } -@@ -148,6 +_,7 @@ +@@ -148,6 +162,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { public void readAdditionalSaveData(CompoundTag compound) { super.readAdditionalSaveData(compound); this.setPlayerCreated(compound.getBooleanOr("PlayerCreated", false)); @@ -43,7 +51,7 @@ this.readPersistentAngerSaveData(this.level(), compound); } -@@ -267,6 +_,7 @@ +@@ -267,6 +282,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { float f = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; this.playSound(SoundEvents.IRON_GOLEM_REPAIR, 1.0F, f); itemInHand.consume(1, player); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch index 48673480a..4d479f9f3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java +index cc2fd681d2383e62191e7b380322f2e176d79f1e..0931bab3f52ccc4e405be22559323df90bcc065e 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -198,6 +_,13 @@ +@@ -198,6 +198,13 @@ public class MushroomCow extends AbstractCow implements Shearable { level.playSound(null, this, SoundEvents.MOOSHROOM_SHEAR, soundSource, 1.0F, 1.0F); this.convertTo(EntityType.COW, ConversionParams.single(this, false, false), cow -> { level.sendParticles(ParticleTypes.EXPLOSION, this.getX(), this.getY(0.5), this.getZ(), 1, 0.0, 0.0, 0.0, 0.0); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch index c54cc0da1..79d558b0d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java +index 9e86a42f04d06c3dcd241f16ab876b0c8422fd81..48c8fdfea8687f37187b6092c285275c12963ea0 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java -@@ -233,7 +_,7 @@ +@@ -233,7 +233,7 @@ public class Ocelot extends Animal { public boolean checkSpawnObstruction(LevelReader level) { if (level.isUnobstructed(this) && !level.containsAnyLiquid(this.getBoundingBox())) { BlockPos blockPos = this.blockPosition(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch index 4425b62cb..9bed65478 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java +index cff10bb74a216238288280399910ab1fa85cb1a5..ca661c215d2eb719392a30c7b917bd622524c4dc 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java -@@ -157,6 +_,7 @@ +@@ -157,6 +157,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { protected void registerGoals() { this.goalSelector.addGoal(0, new TamableAnimal.TamableAnimalPanicGoal(1.25)); this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -8,7 +16,7 @@ this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0, 5.0F, 1.0F)); -@@ -262,7 +_,7 @@ +@@ -262,7 +263,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { } if (!this.level().isClientSide) { @@ -17,7 +25,7 @@ this.tame(player); this.level().broadcastEntityEvent(this, (byte)7); } else { -@@ -270,6 +_,7 @@ +@@ -270,6 +271,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { } } @@ -25,7 +33,7 @@ return InteractionResult.SUCCESS; } else if (!itemInHand.is(ItemTags.PARROT_POISONOUS_FOOD)) { if (!this.isFlying() && this.isTame() && this.isOwnedBy(player)) { -@@ -294,7 +_,7 @@ +@@ -294,7 +296,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @Override public boolean isFood(ItemStack stack) { @@ -34,7 +42,7 @@ } public static boolean checkParrotSpawnRules( -@@ -309,13 +_,13 @@ +@@ -309,13 +311,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @Override public boolean canMate(Animal otherAnimal) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch index c1deac0d5..21f677d5b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java +index ec2074741b52cf8f1ac3c0276bcfc9b8806b71bf..027d47b89d306bf6bc3d5457a163041f6aa7ab49 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java -@@ -141,6 +_,19 @@ +@@ -141,6 +141,19 @@ public class Pig extends Animal implements ItemSteerable { @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { boolean isFood = this.isFood(player.getItemInHand(hand)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch index 775a03fbe..66d2543dc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java +index fcdaaed31c38acb55e66599cd3314606d223cd67..d018b1a967557cfae0d3227d8f43d281a78a22bc 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java -@@ -64,6 +_,29 @@ +@@ -64,6 +64,29 @@ public class PolarBear extends Animal implements NeutralMob { super(entityType, level); } @@ -30,7 +38,7 @@ @Nullable @Override public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { -@@ -72,7 +_,7 @@ +@@ -72,7 +95,7 @@ public class PolarBear extends Animal implements NeutralMob { @Override public boolean isFood(ItemStack stack) { @@ -39,7 +47,7 @@ } @Override -@@ -81,6 +_,12 @@ +@@ -81,6 +104,12 @@ public class PolarBear extends Animal implements NeutralMob { this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(1, new PolarBear.PolarBearMeleeAttackGoal()); this.goalSelector.addGoal(1, new PanicGoal(this, 2.0, mob -> mob.isBaby() ? DamageTypeTags.PANIC_CAUSES : DamageTypeTags.PANIC_ENVIRONMENTAL_CAUSES)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch index 930cde3c7..ff258a8c6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java +index cc7d990f271af1371aa62e8a2ee2ee1bfffb621a..e9445749c5264bd0ce7c426845cb342d34dea713 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java -@@ -403,10 +_,23 @@ +@@ -403,10 +403,23 @@ public class Rabbit extends Animal { } this.setVariant(randomRabbitVariant); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch index b73653343..e68bbcdb2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java +index 7d73f02efb37aeafe41c23325a02d641d57bdaf4..67c8f1e82c775818f906eeaa639e55d7c02834c6 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java -@@ -45,15 +_,27 @@ +@@ -45,15 +45,27 @@ 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 boolean DEFAULT_PUMPKIN = true; @@ -30,7 +38,7 @@ this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Mob.class, 10, true, false, (entity, level) -> entity instanceof Enemy)); -@@ -73,12 +_,14 @@ +@@ -73,12 +85,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); compound.putBoolean("Pumpkin", this.hasPumpkin()); @@ -45,7 +53,7 @@ } @Override -@@ -152,6 +_,14 @@ +@@ -152,6 +166,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM } return InteractionResult.SUCCESS; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch index 83c0aed86..976811185 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java +index 58e1bc90cbc32669fa6c66d214119f0c459ff38c..2e51e64991d326fc055520b6fefc76e80f7c2d97 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java -@@ -46,10 +_,29 @@ +@@ -46,10 +46,29 @@ public class Squid extends AgeableWaterCreature { public Squid(EntityType entityType, Level level) { super(entityType, level); @@ -31,7 +39,7 @@ @Override protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); -@@ -127,6 +_,7 @@ +@@ -127,6 +146,7 @@ public class Squid extends AgeableWaterCreature { } if (this.isInWater()) { @@ -39,7 +47,7 @@ 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; -@@ -308,7 +_,7 @@ +@@ -308,7 +328,7 @@ public class Squid extends AgeableWaterCreature { int noActionTime = this.squid.getNoActionTime(); if (noActionTime > 100) { this.squid.movementVector = Vec3.ZERO; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch index 3552d2bfc..fd45109aa 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/WaterAnimal.java b/net/minecraft/world/entity/animal/WaterAnimal.java +index 2b5e091b6ebe17e30d8d0e73999e19eed49e9a9f..6ff9ca735eba1c3376f3bc4916d5ab76af782de1 100644 --- a/net/minecraft/world/entity/animal/WaterAnimal.java +++ b/net/minecraft/world/entity/animal/WaterAnimal.java -@@ -76,8 +_,7 @@ +@@ -76,8 +76,7 @@ public abstract class WaterAnimal extends PathfinderMob { seaLevel = level.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(seaLevel); i = level.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(i); // Paper end - Make water animal spawn height configurable diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch index 4cd0aeca3..80b14be45 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java +index b22321ead9d66cb089b67276743624b3cca52fc1..c399192687e01bd4a05e4a85d71493d4c3c3e9a8 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -395,6 +_,7 @@ +@@ -395,6 +395,7 @@ public class Goat extends Animal { // Paper start - Goat ram API public void ram(net.minecraft.world.entity.LivingEntity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch index ccbc13a99..795e98415 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java +index 6916adb865ff8fea498d3a61c2b5560472a223f4..d4467235e8dc9d10c61dfb6fd9dc32386903dd09 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -77,6 +_,7 @@ +@@ -77,6 +77,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { private Llama caravanHead; @Nullable public Llama caravanTail; // Paper @@ -8,7 +16,7 @@ public Llama(EntityType entityType, Level level) { super(entityType, level); -@@ -111,6 +_,7 @@ +@@ -111,6 +112,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { super.addAdditionalSaveData(compound); compound.store("Variant", Llama.Variant.LEGACY_CODEC, this.getVariant()); compound.putInt("Strength", this.getStrength()); @@ -16,7 +24,7 @@ } @Override -@@ -118,6 +_,7 @@ +@@ -118,6 +120,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { this.setStrength(compound.getIntOr("Strength", 0)); super.readAdditionalSaveData(compound); this.setVariant(compound.read("Variant", Llama.Variant.LEGACY_CODEC).orElse(Llama.Variant.DEFAULT)); @@ -24,7 +32,7 @@ } @Override -@@ -399,6 +_,7 @@ +@@ -399,6 +402,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { public void leaveCaravan() { if (this.caravanHead != null) { @@ -32,7 +40,7 @@ this.caravanHead.caravanTail = null; } -@@ -406,6 +_,7 @@ +@@ -406,6 +410,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { } public void joinCaravan(Llama caravanHead) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch index 004641e75..de4d32c26 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java +index d926ecd041ca2a421057bc22efe66a8b811ee649..0487c463806509b1dd93dcfee3b518c95b0bdb19 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java -@@ -100,6 +_,37 @@ +@@ -100,6 +100,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { EntityType type = entity.getType(); return type == EntityType.SHEEP || type == EntityType.RABBIT || type == EntityType.FOX; }; @@ -38,7 +46,7 @@ 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; -@@ -122,12 +_,47 @@ +@@ -122,12 +153,47 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.setPathfindingMalus(PathType.DANGER_POWDER_SNOW, -1.0F); } @@ -86,7 +94,7 @@ this.goalSelector.addGoal(4, new LeapAtTargetGoal(this, 0.4F)); this.goalSelector.addGoal(5, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(6, new FollowOwnerGoal(this, 1.0, 10.0F, 2.0F)); -@@ -140,7 +_,7 @@ +@@ -140,7 +206,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, new HurtByTargetGoal(this).setAlertOthers()); this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); @@ -95,7 +103,7 @@ 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)); -@@ -231,6 +_,7 @@ +@@ -231,6 +297,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); compound.store("CollarColor", DyeColor.LEGACY_ID_CODEC, this.getCollarColor()); @@ -103,7 +111,7 @@ VariantUtils.writeVariant(compound, this.getVariant()); this.addPersistentAngerSaveData(compound); this.getSoundVariant() -@@ -245,6 +_,10 @@ +@@ -245,6 +312,10 @@ public class Wolf extends TamableAnimal implements NeutralMob { super.readAdditionalSaveData(compound); VariantUtils.readVariant(compound, this.registryAccess(), Registries.WOLF_VARIANT).ifPresent(this::setVariant); this.setCollarColor(compound.read("CollarColor", DyeColor.LEGACY_ID_CODEC).orElse(DEFAULT_COLLAR_COLOR)); @@ -114,7 +122,7 @@ this.readPersistentAngerSaveData(this.level(), compound); compound.read("sound_variant", ResourceKey.codec(Registries.WOLF_SOUND_VARIANT)) .flatMap(resourceKey -> this.registryAccess().lookupOrThrow(Registries.WOLF_SOUND_VARIANT).get((ResourceKey)resourceKey)) -@@ -269,6 +_,10 @@ +@@ -269,6 +340,10 @@ public class Wolf extends TamableAnimal implements NeutralMob { } this.setSoundVariant(WolfSoundVariants.pickRandomSoundVariant(this.registryAccess(), this.random)); @@ -125,7 +133,7 @@ return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData); } -@@ -319,6 +_,11 @@ +@@ -319,6 +394,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { public void tick() { super.tick(); if (this.isAlive()) { @@ -137,7 +145,7 @@ this.interestedAngleO = this.interestedAngle; if (this.isInterested()) { this.interestedAngle = this.interestedAngle + (1.0F - this.interestedAngle) * 0.4F; -@@ -532,13 +_,27 @@ +@@ -532,13 +612,27 @@ public class Wolf extends TamableAnimal implements NeutralMob { itemInHand.consume(1, player); this.tryToTame(player); return InteractionResult.SUCCESS_SERVER; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch index 607381a02..76ebb6724 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +index d813427cf20117014bc42af0eb7cdee037fbcd9c..57f9f705c62706902efe9a7873f0e3866820f7d9 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -@@ -38,6 +_,24 @@ +@@ -38,6 +38,24 @@ public class EndCrystal extends Entity { this.setPos(x, y, z); } @@ -25,7 +33,7 @@ @Override protected Entity.MovementEmission getMovementEmission() { return Entity.MovementEmission.NONE; -@@ -74,6 +_,8 @@ +@@ -74,6 +92,8 @@ public class EndCrystal extends Entity { } } // Paper end - Fix invulnerable end crystals @@ -34,7 +42,7 @@ } @Override -@@ -114,15 +_,17 @@ +@@ -114,15 +134,17 @@ public class EndCrystal extends Entity { } // CraftBukkit end if (!damageSource.is(DamageTypeTags.IS_EXPLOSION)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch index 6a075e024..416ca4306 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +index 0f3c88601357399d3b8efd2f0e3a531482bc1f3d..ea9d27a3205b3699b9577f42bb04254bd76e700e 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -960,6 +_,7 @@ +@@ -960,6 +960,7 @@ public class EnderDragon extends Mob implements Enemy { @Override protected boolean canRide(Entity entity) { @@ -8,7 +16,7 @@ return false; } -@@ -995,7 +_,7 @@ +@@ -995,7 +996,7 @@ public class EnderDragon extends Mob implements Enemy { boolean flag = level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT); int i = 500; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch index a38519604..81de8a88e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java +index 09924cccf9208abda22cc7e1635b567ed166e95a..2f7da367b58fd9c06c4e012e8eb7f59e5a7f9b6d 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -78,6 +_,7 @@ +@@ -78,6 +78,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { private static final TargetingConditions.Selector LIVING_ENTITY_SELECTOR = (entity, level) -> !entity.getType().is(EntityTypeTags.WITHER_FRIENDS) && entity.attackable(); private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0).selector(LIVING_ENTITY_SELECTOR); @@ -8,7 +16,7 @@ public WitherBoss(EntityType entityType, Level level) { super(entityType, level); -@@ -86,6 +_,17 @@ +@@ -86,6 +87,17 @@ public class WitherBoss extends Monster implements RangedAttackMob { this.xpReward = 50; } @@ -26,7 +34,7 @@ @Override protected PathNavigation createNavigation(Level level) { FlyingPathNavigation flyingPathNavigation = new FlyingPathNavigation(this, level); -@@ -118,6 +_,7 @@ +@@ -118,6 +130,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); compound.putInt("Invul", this.getInvulnerableTicks()); @@ -34,7 +42,7 @@ } @Override -@@ -127,6 +_,7 @@ +@@ -127,6 +140,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { if (this.hasCustomName()) { this.bossEvent.setName(this.getDisplayName()); } @@ -42,7 +50,7 @@ } @Override -@@ -270,7 +_,7 @@ +@@ -270,7 +284,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { level.explode(this, this.getX(), this.getEyeY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); } // CraftBukkit end @@ -51,7 +59,7 @@ // CraftBukkit start - Use relative location for far away sounds // level.globalLevelEvent(1023, this.blockPosition(), 0); int viewDistance = level.getCraftServer().getViewDistance() * 16; -@@ -377,8 +_,10 @@ +@@ -377,8 +391,10 @@ public class WitherBoss extends Monster implements RangedAttackMob { } } @@ -64,7 +72,7 @@ } this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); -@@ -575,6 +_,7 @@ +@@ -575,6 +591,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { @Override protected boolean canRide(Entity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch index 1974dd8b7..6adeae079 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java +index 5248f3c22abb608d7d7b338f169f13bfbf4cd2d6..fa20c642c05fa4ed3739cd0b3964e31fd4dba1d3 100644 --- a/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -95,10 +_,13 @@ +@@ -95,10 +95,13 @@ public class ArmorStand extends LivingEntity { private boolean noTickPoseDirty = false; private boolean noTickEquipmentDirty = false; // Paper end - Allow ArmorStands not to tick @@ -14,7 +22,7 @@ } public ArmorStand(Level level, double x, double y, double z) { -@@ -546,6 +_,7 @@ +@@ -546,6 +549,7 @@ public class ArmorStand extends LivingEntity { @Override public void tick() { @@ -22,7 +30,7 @@ // Paper start - Allow ArmorStands not to tick if (!this.canTick) { if (this.noTickPoseDirty) { -@@ -875,4 +_,18 @@ +@@ -875,4 +879,18 @@ public class ArmorStand extends LivingEntity { } } // Paper end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch index 5f326c938..da28ecc18 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java +index 6c0ebfb2be4e8b884456a2aa3d5fdc87e45a0e3c..4ddf1cdf7a47bf06f95c5bfce8f3c4d035e87cfc 100644 --- a/net/minecraft/world/entity/item/ItemEntity.java +++ b/net/minecraft/world/entity/item/ItemEntity.java -@@ -59,6 +_,12 @@ +@@ -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 @@ -13,7 +21,7 @@ public ItemEntity(EntityType entityType, Level level) { super(entityType, level); -@@ -344,7 +_,16 @@ +@@ -344,7 +350,16 @@ public class ItemEntity extends Entity implements TraceableEntity { @Override public final boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) { @@ -31,7 +39,7 @@ return false; } else if (!level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && damageSource.getEntity() instanceof Mob) { return false; -@@ -528,6 +_,12 @@ +@@ -528,6 +543,12 @@ public class ItemEntity extends Entity implements TraceableEntity { public void setItem(ItemStack stack) { this.getEntityData().set(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/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch index 052ef78b6..074711b8c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java +index 5d23d8754b304d5e2fd54400cc81c7fe5c14a804..9a00aead39e194de076ee651d2f75b29673cad1e 100644 --- a/net/minecraft/world/entity/item/PrimedTnt.java +++ b/net/minecraft/world/entity/item/PrimedTnt.java -@@ -253,4 +_,32 @@ +@@ -253,4 +253,32 @@ public class PrimedTnt extends Entity implements TraceableEntity { return !this.level().paperConfig().fixes.preventTntFromMovingInWater && super.isPushedByFluid(); } // Paper end - Option to prevent TNT from moving in water diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch index af806331a..91ff004c1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java +index 22d5ccb271fc19255e99afa5d1ff10549a20dc31..025b74f7fe2094110a9fd293911588f361785d0a 100644 --- a/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java -@@ -158,10 +_,7 @@ +@@ -158,10 +158,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo this.reassessWeaponGoal(); this.setCanPickUpLoot(this.level().paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.skeletons || random.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper - Add world settings for mobs picking up loot if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { @@ -12,7 +20,7 @@ this.setItemSlot(EquipmentSlot.HEAD, new ItemStack(random.nextFloat() < 0.1F ? Blocks.JACK_O_LANTERN : Blocks.CARVED_PUMPKIN)); this.setDropChance(EquipmentSlot.HEAD, 0.0F); } -@@ -217,7 +_,7 @@ +@@ -217,7 +214,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo if (event.getProjectile() == arrow.getBukkitEntity()) { // CraftBukkit end Projectile.spawnProjectileUsingShoot( diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch index 803176349..e9112d5b3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java +index 3f5e1e98802e5dd1cfc9075559e1102046605a04..c2327306f093c834da9574f9466236fbec572aec 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java -@@ -54,6 +_,7 @@ +@@ -54,6 +54,7 @@ public class Creeper extends Monster { public int explosionRadius = 3; private int droppedSkulls; public @Nullable Entity entityIgniter; // CraftBukkit @@ -8,7 +16,7 @@ public Creeper(EntityType entityType, Level level) { super(entityType, level); -@@ -157,6 +_,27 @@ +@@ -157,6 +158,27 @@ public class Creeper extends Monster { return false; // CraftBukkit } @@ -36,7 +44,7 @@ @Override public SoundEvent getHurtSound(DamageSource damageSource) { return SoundEvents.CREEPER_HURT; -@@ -239,14 +_,16 @@ +@@ -239,14 +261,16 @@ public class Creeper extends Monster { } public void explodeCreeper() { @@ -55,7 +63,7 @@ this.spawnLingeringCloud(); this.triggerOnDeathMobEffects(serverLevel, Entity.RemovalReason.KILLED); this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.EXPLODE); // CraftBukkit - add Bukkit remove cause -@@ -257,6 +_,7 @@ +@@ -257,6 +281,7 @@ public class Creeper extends Monster { } // CraftBukkit end } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch index 3d8569ee4..28131613d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java +index 4978cd2a7a84130fc0de1cc481b39d61f388c812..c0afb6f85cecf26bb1a08669ac3fcec8fea6cbfc 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java -@@ -82,10 +_,23 @@ +@@ -82,10 +82,23 @@ public class Drowned extends Zombie implements RangedAttackMob { this.goalSelector.addGoal(2, new Drowned.DrownedAttackGoal(this, 1.0, false)); this.goalSelector.addGoal(5, new Drowned.DrownedGoToBeachGoal(this, 1.0)); this.goalSelector.addGoal(6, new Drowned.DrownedSwimUpGoal(this, 1.0, this.level().getSeaLevel())); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch index 0d9f0fc51..2d3bc3cbf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java +index 5ae08be75ca01924fc78bdd8d6bb6747ddc21aea..ed322ed572cac147acf26ba18a7803685557e0d7 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -103,7 +_,7 @@ +@@ -103,7 +103,7 @@ public class EnderMan extends Monster implements NeutralMob { this.goalSelector.addGoal(11, new EnderMan.EndermanTakeBlockGoal(this)); this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); @@ -9,7 +17,7 @@ this.targetSelector.addGoal(4, new ResetUniversalAngerTargetGoal<>(this, false)); } -@@ -220,7 +_,7 @@ +@@ -220,7 +220,7 @@ public class EnderMan extends Monster implements NeutralMob { boolean isBeingStaredBy(Player player) { // Paper start - EndermanAttackPlayerEvent @@ -18,7 +26,7 @@ final com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent event = new com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent((org.bukkit.entity.Enderman) getBukkitEntity(), (org.bukkit.entity.Player) player.getBukkitEntity()); event.setCancelled(!shouldAttack); return event.callEvent(); -@@ -376,6 +_,7 @@ +@@ -376,6 +376,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) { if (this.isInvulnerableTo(level, damageSource)) { return false; @@ -26,7 +34,7 @@ } else { AbstractThrownPotion abstractThrownPotion1 = damageSource.getDirectEntity() instanceof AbstractThrownPotion abstractThrownPotion ? abstractThrownPotion -@@ -392,6 +_,7 @@ +@@ -392,6 +393,7 @@ public class EnderMan extends Monster implements NeutralMob { } else { boolean flag = abstractThrownPotion1 != null && this.hurtWithCleanWater(level, damageSource, abstractThrownPotion1, amount); @@ -34,7 +42,7 @@ if (this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.INDIRECT)) { // Paper - EndermanEscapeEvent for (int i = 0; i < 64; i++) { if (this.teleport()) { -@@ -435,7 +_,7 @@ +@@ -435,7 +437,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean requiresCustomPersistence() { @@ -43,7 +51,7 @@ } static class EndermanFreezeWhenLookedAt extends Goal { -@@ -479,6 +_,7 @@ +@@ -479,6 +481,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { @@ -51,7 +59,7 @@ return this.enderman.getCarriedBlock() != null && getServerLevel(this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0; -@@ -628,6 +_,7 @@ +@@ -628,6 +631,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch index 60b09997d..34811f4db 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java +index 7fad96756972308e71fd38033f06148467a7aecd..37eaed1455f34011c24170ca0b05f606bd03fac0 100644 --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java -@@ -29,12 +_,23 @@ +@@ -29,12 +29,23 @@ public class Endermite extends Monster { private static final int MAX_LIFE = 2400; private static final int DEFAULT_LIFE = 0; public int life = 0; @@ -24,7 +32,7 @@ @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); -@@ -80,12 +_,14 @@ +@@ -80,12 +91,14 @@ public class Endermite extends Monster { public void readAdditionalSaveData(CompoundTag compound) { super.readAdditionalSaveData(compound); this.life = compound.getIntOr("Lifetime", 0); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch index c833d4fc6..b2a938b4b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Monster.java b/net/minecraft/world/entity/monster/Monster.java +index 5ef9566b16a4d0300ee45a993c46e734db156416..04d5910d736dee2a88a2602f4a98495459277157 100644 --- a/net/minecraft/world/entity/monster/Monster.java +++ b/net/minecraft/world/entity/monster/Monster.java -@@ -88,6 +_,14 @@ +@@ -88,6 +88,14 @@ public abstract class Monster extends PathfinderMob implements Enemy { } public static boolean isDarkEnoughToSpawn(ServerLevelAccessor level, BlockPos pos, RandomSource random) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch index 0374fac35..d3674aef0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java +index 483b0499f1f70b3aa8862e6cd8e512748492bee0..73edb1a4e5daee16fa518c05de24e413847ab65d 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -159,7 +_,11 @@ +@@ -159,7 +159,11 @@ public class Phantom extends FlyingMob implements Enemy { ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData ) { this.anchorPoint = this.blockPosition().above(5); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch index f593040b8..ac777878d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java +index ca1856b18878b94ebfb566395e5eee13cf3c1cd5..85018a01b5d803a91228e2fa02717c2c518a3004 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java -@@ -73,6 +_,7 @@ +@@ -73,6 +73,7 @@ public class Ravager extends Raider { protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -8,7 +16,7 @@ this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); -@@ -153,7 +_,7 @@ +@@ -153,7 +154,7 @@ public class Ravager extends Raider { )) { BlockState blockState = serverLevel.getBlockState(blockPos); Block block = blockState.getBlock(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch index 5b9b6f4ed..20b9ec193 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java +index 1b8a4c548c1376d9cdd16a10d434da070c85f41d..a8c5c2ad80afd03b3fc53127b519b5c2b73bff85 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -53,6 +_,7 @@ +@@ -53,6 +53,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; @@ -8,7 +16,7 @@ import net.minecraft.world.level.gameevent.GameEvent; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -@@ -93,6 +_,21 @@ +@@ -93,6 +94,21 @@ public class Shulker extends AbstractGolem implements Enemy { this.lookControl = new Shulker.ShulkerLookControl(this); } @@ -30,7 +38,7 @@ @Override protected void registerGoals() { this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F, 0.02F, true)); -@@ -460,11 +_,21 @@ +@@ -460,11 +476,21 @@ public class Shulker extends AbstractGolem implements Enemy { private void hitByShulkerBullet() { Vec3 vec3 = this.position(); AABB boundingBox = this.getBoundingBox(); @@ -56,7 +64,7 @@ if (shulker != null) { shulker.setVariant(this.getVariant()); shulker.snapTo(vec3); -@@ -572,7 +_,7 @@ +@@ -572,7 +598,7 @@ public class Shulker extends AbstractGolem implements Enemy { } public Optional getVariant() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch index 5530c24e5..f08858dd4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java +index 48f26ed693b43e3f65f1559ba69b3d7249664f71..1f35105f6ddd33fc9558d19590a5696479d2de83 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -139,4 +_,64 @@ +@@ -139,4 +139,64 @@ public class Skeleton extends AbstractSkeleton { this.spawnAtLocation(level, Items.SKELETON_SKULL); } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch index 9d99390b1..e3be46643 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java +index afa584e2aba6bebfb2dd343215b043c983281853..4b9e60d930bc3a4bfe9aad2e81391e57cfc45d40 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java -@@ -392,6 +_,19 @@ +@@ -392,6 +392,19 @@ public class Strider extends Animal implements ItemSteerable { @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { boolean isFood = this.isFood(player.getItemInHand(hand)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch index 26ace8b3e..bde4df7bc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java +index d02b4bfc3834cdfae37983ec616ee3cbcd9f0988..79c2248b0dce457fed6d61d4b38eeb92bbc3927e 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -131,6 +_,11 @@ +@@ -131,6 +131,11 @@ public class Vindicator extends AbstractIllager { RandomSource random = level.getRandom(); this.populateDefaultEquipmentSlots(random, difficulty); this.populateDefaultEquipmentEnchantments(level, random, difficulty); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch index ade69a8e9..54d51726c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java +index 39b65970a48568c95ff482b9636e7391f300ffa8..e15df574282e0f5ba5791435020bc6ac96860d15 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -118,7 +_,19 @@ +@@ -118,7 +118,19 @@ public class Zombie extends Monster { this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0)); this.targetSelector.addGoal(1, new HurtByTargetGoal(this).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); @@ -21,7 +29,7 @@ this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } -@@ -552,10 +_,7 @@ +@@ -552,10 +564,7 @@ public class Zombie extends Monster { } if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch index 0fd354794..23f4645ae 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java +index a8cd7103e636b57be1270d0f3549c709330b5536..6b0bbcf99941d768d235b9f96c3e112a4dfea2fc 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -130,10 +_,10 @@ +@@ -130,10 +130,10 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { public InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); if (itemInHand.is(Items.GOLDEN_APPLE)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch index 7dbc3be98..a59f5630b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java +index 05de183ce7b0be9b41f005b2ca36807a109fc634..eff0dec6efe043ad0cb0126061583bc5b67ba0e2 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -112,6 +_,12 @@ +@@ -112,6 +112,12 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { this.maybeAlertOthers(); } @@ -13,16 +21,16 @@ super.customServerAiStep(level); } -@@ -158,6 +_,12 @@ - this.playFirstAngerSoundIn = FIRST_ANGER_SOUND_DELAY.sample(this.random); +@@ -159,6 +165,12 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { this.ticksUntilNextAlert = ALERT_INTERVAL.sample(this.random); } -+ + + // Purpur start - Toggle for Zombified Piglin death always counting as player kill when angry + if (livingEntity instanceof Player player && this.level().purpurConfig.zombifiedPiglinCountAsPlayerKillWhenAngry) { + this.setLastHurtByPlayer(player, this.tickCount); + } + // Purpur end - Toggle for Zombified Piglin death always counting as player kill when angry - ++ return super.setTarget(livingEntity, reason); // CraftBukkit } + diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch index 1c6e7e4c3..329f7ff86 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/piglin/PiglinAi.java b/net/minecraft/world/entity/monster/piglin/PiglinAi.java +index 4b1a3772f9e6b9e4efcf11e14b0fb882512ec86d..df1ef03f584fcaa31bd8cfd2c7301c784e4270d8 100644 --- a/net/minecraft/world/entity/monster/piglin/PiglinAi.java +++ b/net/minecraft/world/entity/monster/piglin/PiglinAi.java -@@ -661,13 +_,23 @@ +@@ -661,7 +661,10 @@ public class PiglinAi { public static boolean isWearingSafeArmor(LivingEntity entity) { for (EquipmentSlot equipmentSlot : EquipmentSlotGroup.ARMOR) { @@ -12,16 +20,17 @@ return true; } } - +@@ -669,6 +672,13 @@ public class PiglinAi { return false; } -+ + + // Purpur start - piglins ignore gold-trimmed armor + private static boolean isWearingGoldTrim(Item itemstack) { + net.minecraft.world.item.equipment.trim.ArmorTrim armorTrim = itemstack.components().get(net.minecraft.core.component.DataComponents.TRIM); + return armorTrim != null && armorTrim.material().is(net.minecraft.world.item.equipment.trim.TrimMaterials.GOLD); + } + // Purpur end - piglins ignore gold-trimmed armor - ++ private static void stopWalking(Piglin piglin) { piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); + piglin.getNavigation().stop(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch index 9df36fcd7..7a062ad58 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/npc/CatSpawner.java b/net/minecraft/world/entity/npc/CatSpawner.java +index e282b6ab6d0d1c11ee40f5f436bd50fa90ddc88b..d6ae13c19481ce33bfa0b6c9db63283009339d8c 100644 --- a/net/minecraft/world/entity/npc/CatSpawner.java +++ b/net/minecraft/world/entity/npc/CatSpawner.java -@@ -25,7 +_,7 @@ +@@ -25,7 +25,7 @@ public class CatSpawner implements CustomSpawner { if (spawnFriendlies && level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) { this.nextTick--; if (this.nextTick <= 0) { @@ -9,7 +17,7 @@ Player randomPlayer = level.getRandomPlayer(); if (randomPlayer != null) { RandomSource randomSource = level.random; -@@ -48,9 +_,12 @@ +@@ -48,9 +48,12 @@ public class CatSpawner implements CustomSpawner { } private void spawnInVillage(ServerLevel level, BlockPos pos) { @@ -25,7 +33,7 @@ if (entitiesOfClass.size() < 5) { this.spawnCat(pos, level, false); } -@@ -58,8 +_,11 @@ +@@ -58,8 +61,11 @@ public class CatSpawner implements CustomSpawner { } private void spawnInHut(ServerLevel level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch index 71cb36d56..88f1962f9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java +index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a297fe20ed8 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -178,6 +_,8 @@ +@@ -178,6 +178,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler MemoryModuleType.MEETING_POINT, (villager, poiType) -> poiType.is(PoiTypes.MEETING) ); @@ -9,7 +17,7 @@ public Villager(EntityType entityType, Level level) { this(entityType, level, VillagerType.PLAINS); -@@ -196,6 +_,57 @@ +@@ -196,6 +198,57 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.setVillagerData(this.getVillagerData().withType(villagerType).withProfession(level.registryAccess(), VillagerProfession.NONE)); } @@ -67,7 +75,7 @@ @Override public Brain getBrain() { return (Brain)super.getBrain(); -@@ -292,11 +_,24 @@ +@@ -292,11 +345,24 @@ public class Villager extends AbstractVillager implements ReputationEventHandler // Paper start - EAR 2 this.customServerAiStep(level, false); } @@ -94,7 +102,7 @@ profilerFiller.pop(); if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; -@@ -368,6 +_,7 @@ +@@ -368,6 +434,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return InteractionResult.CONSUME; } @@ -102,7 +110,7 @@ this.startTrading(player); } -@@ -504,7 +_,7 @@ +@@ -504,7 +571,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler private void updateDemand() { for (MerchantOffer merchantOffer : this.getOffers()) { @@ -111,7 +119,7 @@ } } -@@ -697,7 +_,7 @@ +@@ -697,7 +764,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public boolean canBreed() { @@ -120,7 +128,7 @@ } private boolean hungry() { -@@ -919,6 +_,7 @@ +@@ -919,6 +986,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public void spawnGolemIfNeeded(ServerLevel serverLevel, long gameTime, int minVillagerAmount) { @@ -128,7 +136,7 @@ if (this.wantsToSpawnGolem(gameTime)) { AABB aabb = this.getBoundingBox().inflate(10.0, 10.0, 10.0); List entitiesOfClass = serverLevel.getEntitiesOfClass(Villager.class, aabb); -@@ -992,6 +_,12 @@ +@@ -992,6 +1060,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public void startSleeping(BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch index 29f09b163..a1b19d097 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java +index 70cc20483905d3877e2ffb51afb4902bd59f0cd0..b0eec451b68a6a2697b1620410f07b25c4d2fda7 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -59,6 +_,13 @@ +@@ -59,6 +59,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill super(entityType, level); } @@ -14,7 +22,7 @@ @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -@@ -79,7 +_,7 @@ +@@ -79,7 +86,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill this, new ItemStack(Items.MILK_BUCKET), SoundEvents.WANDERING_TRADER_REAPPEARED, @@ -23,7 +31,7 @@ ) ); this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); -@@ -123,8 +_,10 @@ +@@ -123,8 +130,10 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill return InteractionResult.CONSUME; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch index efaa61512..3ce260889 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/npc/WanderingTraderSpawner.java b/net/minecraft/world/entity/npc/WanderingTraderSpawner.java +index 9d9ec2bf16027b479bbc4339ad4e9dcfc2077d40..d4527765262818099dfb695d6a84b56d33888e34 100644 --- a/net/minecraft/world/entity/npc/WanderingTraderSpawner.java +++ b/net/minecraft/world/entity/npc/WanderingTraderSpawner.java -@@ -137,7 +_,17 @@ +@@ -137,7 +137,17 @@ public class WanderingTraderSpawner implements CustomSpawner { int i1 = pos.getX() + this.random.nextInt(maxDistance * 2) - maxDistance; int i2 = pos.getZ() + this.random.nextInt(maxDistance * 2) - maxDistance; int height = level.getHeight(Heightmap.Types.WORLD_SURFACE, i1, i2); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch index fc57c7949..bf51097f7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java +index 248ee263a853d1d3148746a63ba422115853f6a1..bd4d3a920e015db49436336cc180bc0b937750a0 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java -@@ -210,11 +_,20 @@ +@@ -210,11 +210,20 @@ public abstract class Player extends LivingEntity { private int currentImpulseContextResetGraceTime = 0; 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 @@ -21,7 +29,7 @@ @Override public org.bukkit.craftbukkit.entity.CraftHumanEntity getBukkitEntity() { return (org.bukkit.craftbukkit.entity.CraftHumanEntity) super.getBukkitEntity(); -@@ -277,6 +_,12 @@ +@@ -277,6 +286,12 @@ public abstract class Player extends LivingEntity { @Override public void tick() { @@ -34,7 +42,7 @@ this.noPhysics = this.isSpectator(); if (this.isSpectator() || this.isPassenger()) { this.setOnGround(false); -@@ -355,6 +_,17 @@ +@@ -355,6 +370,17 @@ public abstract class Player extends LivingEntity { this.turtleHelmetTick(); } @@ -52,7 +60,7 @@ this.cooldowns.tick(); this.updatePlayerPose(); if (this.currentImpulseContextResetGraceTime > 0) { -@@ -620,7 +_,7 @@ +@@ -620,7 +646,7 @@ public abstract class Player extends LivingEntity { List list = Lists.newArrayList(); for (Entity entity : entities) { @@ -61,7 +69,7 @@ list.add(entity); } else if (!entity.isRemoved()) { this.touch(entity); -@@ -1214,7 +_,7 @@ +@@ -1214,7 +1240,7 @@ public abstract class Player extends LivingEntity { flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - Toggleable player crits if (flag2) { damageSource = damageSource.critical(); // Paper - critical damage API @@ -70,7 +78,7 @@ } float f2 = f + f1; -@@ -1811,7 +_,23 @@ +@@ -1811,7 +1837,23 @@ public abstract class Player extends LivingEntity { @Override protected int getBaseExperienceReward(ServerLevel level) { @@ -95,17 +103,17 @@ } @Override -@@ -1849,6 +_,13 @@ - public boolean addItem(ItemStack stack) { +@@ -1850,6 +1892,13 @@ public abstract class Player extends LivingEntity { return this.inventory.add(stack); } -+ + + // Purpur start - Player ridable in water option + @Override + public boolean dismountsUnderwater() { + return !level().purpurConfig.playerRidableInWater; + } + // Purpur end - Player ridable in water option - ++ public boolean setEntityOnShoulder(CompoundTag entityCompound) { if (this.isPassenger() || !this.onGround() || this.isInWater() || this.isInPowderSnow) { + return false; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch index 48ac13449..18699c96a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/projectile/AbstractArrow.java b/net/minecraft/world/entity/projectile/AbstractArrow.java +index 595cdb7d013eb0b9282b133a22f51ee865d18623..b00e5b523a07bd3f65c6d7eee96430266e5661c9 100644 --- a/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -79,6 +_,7 @@ +@@ -79,6 +79,7 @@ public abstract class AbstractArrow extends Projectile { public ItemStack pickupItemStack = this.getDefaultPickupItem(); @Nullable public ItemStack firedFromWeapon = null; @@ -8,7 +16,7 @@ protected AbstractArrow(EntityType entityType, Level level) { super(entityType, level); -@@ -352,7 +_,7 @@ +@@ -352,7 +353,7 @@ public abstract class AbstractArrow extends Projectile { this.setInGround(false); Vec3 deltaMovement = this.getDeltaMovement(); this.setDeltaMovement(deltaMovement.multiply(this.random.nextFloat() * 0.2F, this.random.nextFloat() * 0.2F, this.random.nextFloat() * 0.2F)); @@ -17,16 +25,16 @@ } public boolean isInGround() { -@@ -575,6 +_,12 @@ - public ItemStack getWeaponItem() { +@@ -576,6 +577,12 @@ public abstract class AbstractArrow extends Projectile { return this.firedFromWeapon; } -+ + + // Purpur start - Add an option to fix MC-3304 projectile looting + public void setActualEnchantments(net.minecraft.world.item.enchantment.ItemEnchantments actualEnchantments) { + this.actualEnchantments = actualEnchantments; + } + // Purpur end - Add an option to fix MC-3304 projectile looting - ++ protected SoundEvent getDefaultHitGroundSoundEvent() { return SoundEvents.ARROW_HIT; + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch index 7215ffe71..4c14fc29c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/projectile/Snowball.java b/net/minecraft/world/entity/projectile/Snowball.java +index 677b4b681f9c2c09a8ae3cfdec72102265547a7b..d8f9fb603fd2e3e5c1dfc05face7f42b4844daf4 100644 --- a/net/minecraft/world/entity/projectile/Snowball.java +++ b/net/minecraft/world/entity/projectile/Snowball.java -@@ -52,9 +_,39 @@ +@@ -52,10 +52,40 @@ public class Snowball extends ThrowableItemProjectile { protected void onHitEntity(EntityHitResult result) { super.onHitEntity(result); Entity entity = result.getEntity(); @@ -8,7 +16,7 @@ + int i = entity.level().purpurConfig.snowballDamage >= 0 ? entity.level().purpurConfig.snowballDamage : entity instanceof Blaze ? 3 : 0; // Purpur - Add configurable snowball damage entity.hurt(this.damageSources().thrown(this, this.getOwner()), i); } -+ + + // Purpur start - options to extinguish fire blocks with snowballs - borrowed and modified code from ThrownPotion#onHitBlock and ThrownPotion#dowseFire + @Override + protected void onHitBlock(net.minecraft.world.phys.BlockHitResult blockHitResult) { @@ -38,6 +46,7 @@ + } + } + // Purpur end - options to extinguish fire blocks with snowballs - ++ @Override protected void onHit(HitResult result) { + super.onHit(result); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch index 8efc70f2a..9b40f2cb6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +index bda858b1e1c6b28cd9d5a664758b3e445eaf4f22..6575e8ef16f6011f7a799ba31531a2ebefee0c4d 100644 --- a/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -@@ -129,9 +_,10 @@ +@@ -129,9 +129,10 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { return; } // CraftBukkit end @@ -12,7 +20,7 @@ endermite.snapTo(owner.getX(), owner.getY(), owner.getZ(), owner.getYRot(), owner.getXRot()); serverLevel.addFreshEntity(endermite, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.ENDER_PEARL); } -@@ -151,7 +_,7 @@ +@@ -151,7 +152,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { if (serverPlayer1 != null) { serverPlayer1.resetFallDistance(); serverPlayer1.resetCurrentImpulseContext(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch index b959fcd53..f43907991 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/projectile/ThrownTrident.java b/net/minecraft/world/entity/projectile/ThrownTrident.java +index 00f805667ea48fd8699f3cea05781739e376cedd..e814daaa10c138b1497dffbdf9224d34cd9c9926 100644 --- a/net/minecraft/world/entity/projectile/ThrownTrident.java +++ b/net/minecraft/world/entity/projectile/ThrownTrident.java -@@ -65,7 +_,7 @@ +@@ -65,7 +65,7 @@ public class ThrownTrident extends AbstractArrow { Entity owner = this.getOwner(); int i = this.entityData.get(ID_LOYALTY); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch index 87908eb1e..82d298a81 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/projectile/WitherSkull.java b/net/minecraft/world/entity/projectile/WitherSkull.java +index a2fdc87bedd1a63064cb8c7a7615978483268fdc..c96dc62b9f890335892a8075ed9b1285f98c9e8a 100644 --- a/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/net/minecraft/world/entity/projectile/WitherSkull.java -@@ -93,7 +_,7 @@ +@@ -93,7 +93,7 @@ public class WitherSkull extends AbstractHurtingProjectile { super.onHit(result); if (!this.level().isClientSide) { // CraftBukkit start @@ -9,17 +17,17 @@ if (event.callEvent()) { this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); } -@@ -101,6 +_,13 @@ - this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.HIT); // CraftBukkit - add Bukkit remove cause +@@ -102,6 +102,13 @@ public class WitherSkull extends AbstractHurtingProjectile { } } -+ + + // Purpur start - Add canSaveToDisk to Entity + @Override + public boolean canSaveToDisk() { + return false; + } + // Purpur end - Add canSaveToDisk to Entity - ++ @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { + builder.define(DATA_DANGEROUS, false); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch index c0e2ddf74..b2d52d1ae 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/raid/Raids.java b/net/minecraft/world/entity/raid/Raids.java +index 693eef486f1a3b4ea7e5fd5ecf2d25d85f424d97..5837d976abf663bd46a64f46348613db9284254d 100644 --- a/net/minecraft/world/entity/raid/Raids.java +++ b/net/minecraft/world/entity/raid/Raids.java -@@ -29,6 +_,7 @@ +@@ -29,6 +29,7 @@ import net.minecraft.world.phys.Vec3; public class Raids extends SavedData { private static final String RAID_FILE_ID = "raids"; @@ -8,7 +16,7 @@ public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group( Raids.RaidWithId.CODEC -@@ -81,6 +_,17 @@ +@@ -81,6 +82,17 @@ public class Raids extends SavedData { public void tick(ServerLevel level) { this.tick++; @@ -26,7 +34,7 @@ Iterator iterator = this.raidMap.values().iterator(); while (iterator.hasNext()) { -@@ -148,11 +_,13 @@ +@@ -148,11 +160,13 @@ public class Raids extends SavedData { // } 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 diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch index 5b64f6835..be34547ba 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/vehicle/AbstractBoat.java b/net/minecraft/world/entity/vehicle/AbstractBoat.java +index 4541bb5233e986d9993d8593afef9b12c935d00a..abfe3370382c39aeab2cc7832c0ff6ee5b95fa5b 100644 --- a/net/minecraft/world/entity/vehicle/AbstractBoat.java +++ b/net/minecraft/world/entity/vehicle/AbstractBoat.java -@@ -433,6 +_,7 @@ +@@ -433,6 +433,7 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable { float groundFriction = this.getGroundFriction(); if (groundFriction > 0.0F) { this.landFriction = groundFriction; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch index dfb044e11..2d16df145 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java b/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java +index 090b19752fbfc856d9fbf118510afc6cda2b9989..325ec57df2885f5e81b8a6b61e3a9fed9484b30f 100644 --- a/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java +++ b/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java -@@ -391,7 +_,7 @@ +@@ -391,7 +391,7 @@ public class NewMinecartBehavior extends MinecartBehavior { private Vec3 calculateBoostTrackSpeed(Vec3 speed, BlockPos pos, BlockState state) { if (state.is(Blocks.POWERED_RAIL) && state.getValue(PoweredRailBlock.POWERED)) { if (speed.length() > 0.01) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch index c8d066068..6dc5e984a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java b/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java +index 0d09b0809e7b224538cf5cfac9e36ec5ba10b709..4d224dc127d245556892e761fa4927a76e4b8e9a 100644 --- a/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java +++ b/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java -@@ -243,8 +_,8 @@ +@@ -243,8 +243,8 @@ public class OldMinecartBehavior extends MinecartBehavior { Vec3 deltaMovement1 = this.getDeltaMovement(); double d13 = deltaMovement1.horizontalDistance(); if (d13 > 0.01) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch index f8e3d23f5..e4065dad2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/food/FoodData.java b/net/minecraft/world/food/FoodData.java +index 89d783315dab8ca469a1fa724cd59a329d4c2b55..7fa061718989365725ff49abd2d19d1ba3f935f9 100644 --- a/net/minecraft/world/food/FoodData.java +++ b/net/minecraft/world/food/FoodData.java -@@ -38,6 +_,7 @@ +@@ -38,6 +38,7 @@ public class FoodData { int oldFoodLevel = this.foodLevel; org.bukkit.event.entity.FoodLevelChangeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(serverPlayer, foodProperties.nutrition() + oldFoodLevel, stack); if (!event.isCancelled()) { @@ -8,7 +16,7 @@ this.add(event.getFoodLevel() - oldFoodLevel, foodProperties.saturation()); } serverPlayer.getBukkitEntity().sendHealthUpdate(); -@@ -86,7 +_,7 @@ +@@ -86,7 +87,7 @@ public class FoodData { this.tickTimer++; if (this.tickTimer >= this.starvationRate) { // CraftBukkit - add regen rate manipulation if (player.getHealth() > 10.0F || difficulty == Difficulty.HARD || player.getHealth() > 1.0F && difficulty == Difficulty.NORMAL) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch index 87515c815..c0136ca1e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/food/FoodProperties.java b/net/minecraft/world/food/FoodProperties.java +index 793e4528755fa5688efbad75418188e693ad0157..20f702c8266eb54a8835861188eb937f4732e078 100644 --- a/net/minecraft/world/food/FoodProperties.java +++ b/net/minecraft/world/food/FoodProperties.java -@@ -42,9 +_,11 @@ +@@ -42,9 +42,11 @@ public record FoodProperties(int nutrition, float saturation, boolean canAlwaysE level.playSound(null, entity.getX(), entity.getY(), entity.getZ(), consumable.sound().value(), SoundSource.NEUTRAL, 1.0F, random.triangle(1.0F, 0.4F)); if (entity instanceof Player player) { player.getFoodData().eat(this, stack, (net.minecraft.server.level.ServerPlayer) player); // CraftBukkit diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch index bca7321cd..cb2da3372 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java +index 813417a09b4acc7d57e80a53d970767e230d75b1..c4721eb0efe34f5e313bc890b4e960144eca4fe1 100644 --- a/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/net/minecraft/world/inventory/AbstractContainerMenu.java -@@ -65,6 +_,7 @@ +@@ -65,6 +65,7 @@ public abstract class AbstractContainerMenu { @Nullable private ContainerSynchronizer synchronizer; private boolean suppressRemoteUpdates; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch index 1626289f6..3e768e1ac 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/inventory/AbstractFurnaceMenu.java b/net/minecraft/world/inventory/AbstractFurnaceMenu.java +index b42d55c1c0c405ce3ce073138343e74fa036fa65..b86e49b09a036532e7dbd56bc52b13cefe77f75b 100644 --- a/net/minecraft/world/inventory/AbstractFurnaceMenu.java +++ b/net/minecraft/world/inventory/AbstractFurnaceMenu.java -@@ -121,7 +_,13 @@ +@@ -121,7 +121,13 @@ public abstract class AbstractFurnaceMenu extends RecipeBookMenu { } else if (index != 1 && index != 0) { if (this.canSmelt(item)) { if (!this.moveItemStackTo(item, 0, 1, false)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch index 910986692..ffc0ca957 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/inventory/AnvilMenu.java b/net/minecraft/world/inventory/AnvilMenu.java +index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae2392590f 100644 --- a/net/minecraft/world/inventory/AnvilMenu.java +++ b/net/minecraft/world/inventory/AnvilMenu.java -@@ -20,6 +_,12 @@ +@@ -20,6 +20,12 @@ import net.minecraft.world.level.block.AnvilBlock; import net.minecraft.world.level.block.state.BlockState; import org.slf4j.Logger; @@ -13,7 +21,7 @@ public class AnvilMenu extends ItemCombinerMenu { public static final int INPUT_SLOT = 0; public static final int ADDITIONAL_SLOT = 1; -@@ -49,6 +_,10 @@ +@@ -49,6 +55,10 @@ public class AnvilMenu extends ItemCombinerMenu { private org.bukkit.craftbukkit.inventory.view.CraftAnvilView bukkitEntity; // CraftBukkit end public boolean bypassEnchantmentLevelRestriction = false; // Paper - bypass anvil level restrictions @@ -24,7 +32,7 @@ public AnvilMenu(int containerId, Inventory playerInventory) { this(containerId, playerInventory, ContainerLevelAccess.NULL); -@@ -74,12 +_,17 @@ +@@ -74,12 +84,17 @@ public class AnvilMenu extends ItemCombinerMenu { @Override protected boolean mayPickup(Player player, boolean hasStack) { @@ -43,7 +51,7 @@ player.giveExperienceLevels(-this.cost.get()); } -@@ -126,13 +_,19 @@ +@@ -126,13 +141,19 @@ public class AnvilMenu extends ItemCombinerMenu { @Override public void createResult() { @@ -64,7 +72,7 @@ ItemStack itemStack = item.copy(); ItemStack item1 = this.inputSlots.getItem(1); ItemEnchantments.Mutable mutable = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(itemStack)); -@@ -190,23 +_,34 @@ +@@ -190,23 +211,34 @@ public class AnvilMenu extends ItemCombinerMenu { int intValue = entry.getIntValue(); intValue = level == intValue ? intValue + 1 : Math.max(intValue, level); Enchantment enchantment = holder.value(); @@ -103,7 +111,7 @@ intValue = enchantment.getMaxLevel(); } -@@ -235,6 +_,54 @@ +@@ -235,6 +267,54 @@ public class AnvilMenu extends ItemCombinerMenu { if (!this.itemName.equals(item.getHoverName().getString())) { i1 = 1; i += i1; @@ -158,7 +166,7 @@ itemStack.set(DataComponents.CUSTOM_NAME, Component.literal(this.itemName)); } } else if (item.has(DataComponents.CUSTOM_NAME)) { -@@ -259,6 +_,12 @@ +@@ -259,6 +339,12 @@ public class AnvilMenu extends ItemCombinerMenu { this.onlyRenaming = true; } @@ -171,7 +179,7 @@ if (this.cost.get() >= this.maximumRepairCost && !this.player.hasInfiniteMaterials()) { // CraftBukkit itemStack = ItemStack.EMPTY; } -@@ -279,6 +_,13 @@ +@@ -279,6 +365,13 @@ public class AnvilMenu extends ItemCombinerMenu { org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), itemStack); // CraftBukkit this.broadcastChanges(); @@ -185,7 +193,7 @@ } 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 -@@ -287,7 +_,7 @@ +@@ -287,7 +380,7 @@ public class AnvilMenu extends ItemCombinerMenu { } public static int calculateIncreasedRepairCost(int oldRepairCost) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch index 2b2579163..74c747850 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/inventory/ArmorSlot.java b/net/minecraft/world/inventory/ArmorSlot.java +index 0a440ea37d14cd840cf87a99264ace5ccde7c073..dec920727401de7f5bcc6c7e50f9dd325367ee90 100644 --- a/net/minecraft/world/inventory/ArmorSlot.java +++ b/net/minecraft/world/inventory/ArmorSlot.java -@@ -47,7 +_,7 @@ +@@ -47,7 +47,7 @@ class ArmorSlot extends Slot { @Override public boolean mayPickup(Player player) { ItemStack item = this.getItem(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch index b6a6515d1..031c5f5c2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/inventory/EnchantmentMenu.java b/net/minecraft/world/inventory/EnchantmentMenu.java +index cf9ab4c9fba11f5a0b293978853e205de81d6fc7..d0d6ae9c9c432f8bd5d9c91113fc5491e321afad 100644 --- a/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/net/minecraft/world/inventory/EnchantmentMenu.java -@@ -63,6 +_,22 @@ +@@ -63,6 +63,22 @@ public class EnchantmentMenu extends AbstractContainerMenu { return access.getLocation(); } // CraftBukkit end @@ -23,7 +31,7 @@ }; // Paper end - Add missing InventoryHolders this.access = access; -@@ -83,6 +_,16 @@ +@@ -83,6 +99,16 @@ public class EnchantmentMenu extends AbstractContainerMenu { return EnchantmentMenu.EMPTY_SLOT_LAPIS_LAZULI; } }); @@ -40,7 +48,7 @@ this.addStandardInventorySlots(playerInventory, 8, 84); this.addDataSlot(DataSlot.shared(this.costs, 0)); this.addDataSlot(DataSlot.shared(this.costs, 1)); -@@ -299,7 +_,7 @@ +@@ -299,7 +325,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { @Override public void removed(Player player) { super.removed(player); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch index 1af1db846..98de3f0c3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/inventory/GrindstoneMenu.java b/net/minecraft/world/inventory/GrindstoneMenu.java +index 6eaa468c90a826f9fdecf2cf672c4893122d2504..5cb69b7ffc82905e5ba8c99c76ce14348f89e21c 100644 --- a/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/net/minecraft/world/inventory/GrindstoneMenu.java -@@ -91,11 +_,13 @@ +@@ -91,11 +91,13 @@ public class GrindstoneMenu extends AbstractContainerMenu { @Override public void onTake(Player player, ItemStack stack) { access.execute((level, blockPos) -> { @@ -15,7 +23,7 @@ // Paper end - Fire BlockExpEvent on grindstone use } -@@ -124,7 +_,7 @@ +@@ -124,7 +126,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { for (Entry> entry : enchantmentsForCrafting.entrySet()) { Holder holder = entry.getKey(); int intValue = entry.getIntValue(); @@ -24,7 +32,7 @@ i += holder.value().getMinCost(intValue); } } -@@ -202,15 +_,75 @@ +@@ -202,15 +204,75 @@ public class GrindstoneMenu extends AbstractContainerMenu { for (Entry> entry : enchantmentsForCrafting.entrySet()) { Holder holder = entry.getKey(); @@ -102,7 +110,7 @@ if (item.is(Items.ENCHANTED_BOOK) && itemEnchantments.isEmpty()) { item = item.transmuteCopy(Items.BOOK); } -@@ -222,6 +_,23 @@ +@@ -222,6 +284,23 @@ public class GrindstoneMenu extends AbstractContainerMenu { } item.set(DataComponents.REPAIR_COST, i); @@ -126,7 +134,7 @@ return item; } -@@ -278,7 +_,9 @@ +@@ -278,7 +357,9 @@ public class GrindstoneMenu extends AbstractContainerMenu { return ItemStack.EMPTY; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch index 9899e30a5..f5a97d8d6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/inventory/ItemCombinerMenu.java b/net/minecraft/world/inventory/ItemCombinerMenu.java +index 34d52c941395645e77de810855b14012c259cf02..c605bd700fd9f5a6596a2bf9648492786306b025 100644 --- a/net/minecraft/world/inventory/ItemCombinerMenu.java +++ b/net/minecraft/world/inventory/ItemCombinerMenu.java -@@ -156,7 +_,9 @@ +@@ -156,7 +156,9 @@ public abstract class ItemCombinerMenu extends AbstractContainerMenu { return ItemStack.EMPTY; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch index c87b129e2..8e1d944db 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/AxeItem.java b/net/minecraft/world/item/AxeItem.java +index bd919b9a83f9736f02783b1ba3863fd1b77c7e89..eb8d2d6f9c65185f5fe16a13ab0cdbba78a25a40 100644 --- a/net/minecraft/world/item/AxeItem.java +++ b/net/minecraft/world/item/AxeItem.java -@@ -62,13 +_,15 @@ +@@ -62,13 +62,15 @@ public class AxeItem extends Item { if (playerHasBlockingItemUseIntent(context)) { return InteractionResult.PASS; } else { @@ -18,7 +26,7 @@ return InteractionResult.PASS; } // Paper end -@@ -76,8 +_,15 @@ +@@ -76,8 +78,15 @@ public class AxeItem extends Item { CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger((ServerPlayer)player, clickedPos, itemInHand); } @@ -36,7 +44,7 @@ if (player != null) { itemInHand.hurtAndBreak(1, player, LivingEntity.getSlotForHand(context.getHand())); } -@@ -94,22 +_,24 @@ +@@ -94,22 +103,24 @@ public class AxeItem extends Item { && !player.isSecondaryUseActive(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch index 76068462e..6814ca776 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/BlockItem.java b/net/minecraft/world/item/BlockItem.java +index cc363ba3bc719d8b93992141d779b4c1d1bbd2fb..571a0f27a86ab24a9f8750ce1ab802bfd64d9ccf 100644 --- a/net/minecraft/world/item/BlockItem.java +++ b/net/minecraft/world/item/BlockItem.java -@@ -145,7 +_,16 @@ +@@ -145,7 +145,16 @@ public class BlockItem extends Item { } protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, @Nullable Player player, ItemStack stack, BlockState state) { @@ -18,7 +26,7 @@ } @Nullable -@@ -212,6 +_,7 @@ +@@ -212,6 +221,7 @@ public class BlockItem extends Item { } if (!type.onlyOpCanSetNbt() || player != null && (player.canUseGameMasterBlocks() || (player.getAbilities().instabuild && player.getBukkitEntity().hasPermission("minecraft.nbt.place")))) { // Spigot - add permission @@ -26,7 +34,7 @@ return customData.loadInto(blockEntity, level.registryAccess()); } -@@ -253,6 +_,7 @@ +@@ -253,6 +263,7 @@ public class BlockItem extends Item { public void onDestroyed(ItemEntity itemEntity) { ItemContainerContents itemContainerContents = itemEntity.getItem().set(DataComponents.CONTAINER, ItemContainerContents.EMPTY); if (itemContainerContents != null) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch index bb43e3ee4..e8fc5c7c2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/BowItem.java b/net/minecraft/world/item/BowItem.java +index c4c8775de328d40bb8218d993872be5249e8174d..ce1ce18410fc1d47d999c918a8f880b43bf9797c 100644 --- a/net/minecraft/world/item/BowItem.java +++ b/net/minecraft/world/item/BowItem.java -@@ -28,6 +_,11 @@ +@@ -28,6 +28,11 @@ public class BowItem extends ProjectileWeaponItem { return false; } else { ItemStack projectile = player.getProjectile(stack); @@ -12,7 +20,7 @@ if (projectile.isEmpty()) { return false; } else { -@@ -38,7 +_,7 @@ +@@ -38,7 +43,7 @@ public class BowItem extends ProjectileWeaponItem { } else { List list = draw(stack, projectile, player); if (level instanceof ServerLevel serverLevel && !list.isEmpty()) { @@ -21,7 +29,7 @@ } level.playSound( -@@ -89,7 +_,7 @@ +@@ -89,7 +94,7 @@ public class BowItem extends ProjectileWeaponItem { public InteractionResult use(Level level, Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); boolean flag = !player.getProjectile(itemInHand).isEmpty(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch index a0e1bb7ac..6b5ccc48e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/BucketItem.java b/net/minecraft/world/item/BucketItem.java +index de287715568f358dd83383d68f845df9a7b5a117..8c7be8a71348a3e66c8bf6b6cb39fe002c20bdb0 100644 --- a/net/minecraft/world/item/BucketItem.java +++ b/net/minecraft/world/item/BucketItem.java -@@ -147,7 +_,7 @@ +@@ -147,7 +147,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { // CraftBukkit end if (!flag) { return hitResult != null && this.emptyContents(entity, level, hitResult.getBlockPos().relative(hitResult.getDirection()), null, direction, clicked, itemstack, hand); // CraftBukkit @@ -9,7 +17,7 @@ int x = pos.getX(); int y = pos.getY(); int z = pos.getZ(); -@@ -156,7 +_,7 @@ +@@ -156,7 +156,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { ); for (int i = 0; i < 8; i++) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch index c2e3f0e41..b593a1770 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/CrossbowItem.java b/net/minecraft/world/item/CrossbowItem.java +index 4c5a751bc5618a19ac6355564189cb283a01eb98..9275ba72415beaa4e495cae81674fd14ec671156 100644 --- a/net/minecraft/world/item/CrossbowItem.java +++ b/net/minecraft/world/item/CrossbowItem.java -@@ -66,7 +_,7 @@ +@@ -66,7 +66,7 @@ public class CrossbowItem extends ProjectileWeaponItem { ItemStack itemInHand = player.getItemInHand(hand); ChargedProjectiles chargedProjectiles = itemInHand.get(DataComponents.CHARGED_PROJECTILES); if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch index e53cc098b..580f60a58 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/DyeColor.java b/net/minecraft/world/item/DyeColor.java +index 63751ad67d44bb20912870df5d0d2b2fee4d8cec..6bac07817d2916c64f703586599a2cab226872e6 100644 --- a/net/minecraft/world/item/DyeColor.java +++ b/net/minecraft/world/item/DyeColor.java -@@ -126,4 +_,10 @@ +@@ -126,4 +126,10 @@ public enum DyeColor implements StringRepresentable { private static CraftingInput makeCraftColorInput(DyeColor first, DyeColor second) { return CraftingInput.of(2, 1, List.of(new ItemStack(DyeItem.byColor(first)), new ItemStack(DyeItem.byColor(second)))); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch index 7bd1d11bf..c9f359af2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/EggItem.java b/net/minecraft/world/item/EggItem.java +index ccae6089cdc4fffca7d759252006a13c2c14691a..c4097bd6acf671ddf857350154e6e1a04e76d64b 100644 --- a/net/minecraft/world/item/EggItem.java +++ b/net/minecraft/world/item/EggItem.java -@@ -24,7 +_,7 @@ +@@ -24,7 +24,7 @@ public class EggItem extends Item implements ProjectileItem { public InteractionResult use(Level level, Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); // Paper start diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch index baee5e0ab..167e505fa 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/EndCrystalItem.java b/net/minecraft/world/item/EndCrystalItem.java +index 05ec512839898f96d9769bb0d00f6ba11dda0c4b..6e4a3c9c090a68bf5785a01d815c275411859c7b 100644 --- a/net/minecraft/world/item/EndCrystalItem.java +++ b/net/minecraft/world/item/EndCrystalItem.java -@@ -24,7 +_,7 @@ +@@ -24,7 +24,7 @@ public class EndCrystalItem extends Item { Level level = context.getLevel(); BlockPos clickedPos = context.getClickedPos(); BlockState blockState = level.getBlockState(clickedPos); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch index de340dafe..2e279be82 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/EnderpearlItem.java b/net/minecraft/world/item/EnderpearlItem.java +index 3becd19d3264fa631497e967656cc7ca39252586..f824f155549857d5205ba67eb5916e0b0b65efb4 100644 --- a/net/minecraft/world/item/EnderpearlItem.java +++ b/net/minecraft/world/item/EnderpearlItem.java -@@ -24,7 +_,7 @@ +@@ -24,7 +24,7 @@ public class EnderpearlItem extends Item { if (level instanceof ServerLevel serverLevel) { // CraftBukkit start // Paper start - PlayerLaunchProjectileEvent @@ -9,7 +17,7 @@ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemInHand), (org.bukkit.entity.Projectile) thrownEnderpearl.projectile().getBukkitEntity()); if (event.callEvent() && thrownEnderpearl.attemptSpawn()) { if (event.shouldConsume()) { -@@ -44,6 +_,7 @@ +@@ -44,6 +44,7 @@ public class EnderpearlItem extends Item { 0.4F / (level.getRandom().nextFloat() * 0.4F + 0.8F) ); player.awardStat(Stats.ITEM_USED.get(this)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch index cebe3180e..793ea8ce7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/HoeItem.java b/net/minecraft/world/item/HoeItem.java +index 3bf3d4030c4da65fa386a8b8083d259a6046d15e..77a8d5d334cd93d23149afa8e58f4114412632df 100644 --- a/net/minecraft/world/item/HoeItem.java +++ b/net/minecraft/world/item/HoeItem.java -@@ -45,15 +_,25 @@ +@@ -45,15 +45,25 @@ public class HoeItem extends Item { public InteractionResult useOn(UseOnContext context) { Level level = context.getLevel(); BlockPos clickedPos = context.getClickedPos(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch index 32bd1ea7c..042194dc7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java +index 24ecca78dc1140b6fc47d59f2acefca6bc2b0220..6de42886ed681b5e00903f0d213e4d2fcaea1482 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java -@@ -458,6 +_,7 @@ +@@ -458,6 +458,7 @@ public final class ItemStack implements DataComponentHolder { // revert back all captured blocks for (org.bukkit.block.BlockState blockstate : blocks) { ((org.bukkit.craftbukkit.block.CraftBlockState) blockstate).revertPlace(); @@ -8,7 +16,7 @@ } SignItem.openSign = null; // SPIGOT-6758 - Reset on early return -@@ -481,6 +_,7 @@ +@@ -481,6 +482,7 @@ public final class ItemStack implements DataComponentHolder { if (!(block.getBlock() instanceof net.minecraft.world.level.block.BaseEntityBlock)) { // Containers get placed automatically block.onPlace(serverLevel, newPos, oldBlock, true, context); } @@ -16,7 +24,7 @@ serverLevel.notifyAndUpdatePhysics(newPos, null, oldBlock, block, serverLevel.getBlockState(newPos), updateFlags, net.minecraft.world.level.block.Block.UPDATE_LIMIT); // send null chunk as chunk.k() returns false by this point } -@@ -617,6 +_,26 @@ +@@ -617,6 +619,26 @@ public final class ItemStack implements DataComponentHolder { return this.isDamageableItem() && this.getDamageValue() > 0; } @@ -43,16 +51,16 @@ public int getDamageValue() { return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage()); } -@@ -1279,6 +_,12 @@ - public boolean isEnchanted() { +@@ -1280,6 +1302,12 @@ public final class ItemStack implements DataComponentHolder { return !this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).isEmpty(); } -+ + + // Purpur start - Config to allow unsafe enchants + public boolean hasEnchantment(Holder enchantment) { + return this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).getLevel(enchantment) > 0; + } + // Purpur end - Config to allow unsafe enchants - ++ public ItemEnchantments getEnchantments() { return this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY); + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch index a5dd1c128..7bd60664e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/Items.java b/net/minecraft/world/item/Items.java +index ae228cd15342ac159dd61bf4d09c2d80b7f44fee..4afa2d9f5825ccc70492b9c3d82ac5616d6f7faa 100644 --- a/net/minecraft/world/item/Items.java +++ b/net/minecraft/world/item/Items.java -@@ -382,7 +_,7 @@ +@@ -382,7 +382,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); @@ -9,7 +17,7 @@ public static final Item CREAKING_HEART = registerBlock(Blocks.CREAKING_HEART); public static final Item CHEST = registerBlock(Blocks.CHEST, properties -> properties.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE); -@@ -2034,7 +_,7 @@ +@@ -2034,7 +2034,7 @@ public class Items { "sweet_berries", createBlockItemWithCustomItemName(Blocks.SWEET_BERRY_BUSH), new Item.Properties().food(Foods.SWEET_BERRIES) ); public static final Item GLOW_BERRIES = registerItem( diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch index e4abe0ae9..6ac81faf2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/MapItem.java b/net/minecraft/world/item/MapItem.java +index ba0b254d43651bca1f29b5272af05d068fc37ba8..780793750c99185e8139a1cd0ad52bc7b80899a9 100644 --- a/net/minecraft/world/item/MapItem.java +++ b/net/minecraft/world/item/MapItem.java -@@ -194,6 +_,7 @@ +@@ -194,6 +194,7 @@ public class MapItem extends Item { public static void renderBiomePreviewMap(ServerLevel serverLevel, ItemStack stack) { MapItemSavedData savedData = getSavedData(stack, serverLevel); if (savedData != null) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch index 2a8639361..e3f683a3a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/NameTagItem.java b/net/minecraft/world/item/NameTagItem.java +index a928124ee46a10e9033f771970198e36712917a6..65ff8078474d5039238e9398d8cfc12e79cc6524 100644 --- a/net/minecraft/world/item/NameTagItem.java +++ b/net/minecraft/world/item/NameTagItem.java -@@ -24,6 +_,7 @@ +@@ -24,6 +24,7 @@ public class NameTagItem extends Item { LivingEntity newEntity = ((org.bukkit.craftbukkit.entity.CraftLivingEntity) event.getEntity()).getHandle(); newEntity.setCustomName(event.getName() != null ? io.papermc.paper.adventure.PaperAdventure.asVanilla(event.getName()) : null); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch index 76145281c..325dcb796 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/ProjectileWeaponItem.java b/net/minecraft/world/item/ProjectileWeaponItem.java +index 1a9f91f3ee9c4d3902106eebd2639cc85a0dc34c..fb5077450aa9f7b7a03dd20c27a68dfdaab5ef06 100644 --- a/net/minecraft/world/item/ProjectileWeaponItem.java +++ b/net/minecraft/world/item/ProjectileWeaponItem.java -@@ -109,6 +_,8 @@ +@@ -109,6 +109,8 @@ public abstract class ProjectileWeaponItem extends Item { abstractArrow.setCritArrow(true); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch index c583f3853..ff77bd88c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/ShovelItem.java b/net/minecraft/world/item/ShovelItem.java +index 887ac9f547ceaf76fd533ae47239a64c29a64b18..a290ad578498da07093ea31080cc3fbc87aa3778 100644 --- a/net/minecraft/world/item/ShovelItem.java +++ b/net/minecraft/world/item/ShovelItem.java -@@ -46,9 +_,12 @@ +@@ -46,9 +46,12 @@ public class ShovelItem extends Item { BlockState blockState1 = FLATTENABLES.get(blockState.getBlock()); BlockState blockState2 = null; Runnable afterAction = null; // Paper diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch index 9c09ecb72..be4c390e9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/SnowballItem.java b/net/minecraft/world/item/SnowballItem.java +index 8eec16040fb9ae6bcccbd71bbe93521cdce5ccce..38b82537209449407922491506a7ca6224229ca9 100644 --- a/net/minecraft/world/item/SnowballItem.java +++ b/net/minecraft/world/item/SnowballItem.java -@@ -26,7 +_,7 @@ +@@ -26,7 +26,7 @@ public class SnowballItem extends Item implements ProjectileItem { // CraftBukkit start - moved down if (level instanceof ServerLevel serverLevel) { // Paper start - PlayerLaunchProjectileEvent diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch index 7a0553a75..0356fec46 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/SpawnEggItem.java b/net/minecraft/world/item/SpawnEggItem.java +index 7a961e5ebbdac061f6e73e4ed07fe957ba759066..d48c1dedbd39770ccf3c9c3ff3351b391601cd77 100644 --- a/net/minecraft/world/item/SpawnEggItem.java +++ b/net/minecraft/world/item/SpawnEggItem.java -@@ -57,6 +_,23 @@ +@@ -57,6 +57,23 @@ public class SpawnEggItem extends Item { if (level.getBlockEntity(clickedPos) instanceof Spawner spawner) { if (level.paperConfig().entities.spawning.disableMobSpawnerSpawnEggTransformation) return InteractionResult.FAIL; // Paper - Allow disabling mob spawner spawn egg transformation EntityType type = this.getType(level.registryAccess(), itemInHand); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch index 5cf5ead6e..d6c7d3447 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/ThrowablePotionItem.java b/net/minecraft/world/item/ThrowablePotionItem.java +index 86198fb3150409b4b3e123982d8d3ba40b774621..6495c82fb88062875024c59a7c29d6d18b7a2f41 100644 --- a/net/minecraft/world/item/ThrowablePotionItem.java +++ b/net/minecraft/world/item/ThrowablePotionItem.java -@@ -24,7 +_,7 @@ +@@ -24,7 +24,7 @@ public abstract class ThrowablePotionItem extends PotionItem implements Projecti ItemStack itemInHand = player.getItemInHand(hand); if (level instanceof ServerLevel serverLevel) { // Paper start - PlayerLaunchProjectileEvent diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch index dccf0bfa8..dc1841027 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/TridentItem.java b/net/minecraft/world/item/TridentItem.java +index df629e3f2defce5e65aaf874d7c5ddff71f39c28..122e24ed6fb319c951841ac8ef328c5eb70514d4 100644 --- a/net/minecraft/world/item/TridentItem.java +++ b/net/minecraft/world/item/TridentItem.java -@@ -83,7 +_,7 @@ +@@ -83,7 +83,7 @@ public class TridentItem extends Item implements ProjectileItem { if (tridentSpinAttackStrength == 0.0F) { ItemStack itemStack = stack.copyWithCount(1); // Paper Projectile.Delayed tridentDelayed = Projectile.spawnProjectileFromRotationDelayed( // Paper - PlayerLaunchProjectileEvent( @@ -9,7 +17,7 @@ ); // Paper start - PlayerLaunchProjectileEvent com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) tridentDelayed.projectile().getBukkitEntity()); -@@ -94,6 +_,7 @@ +@@ -94,6 +94,7 @@ public class TridentItem extends Item implements ProjectileItem { return false; } ThrownTrident thrownTrident = tridentDelayed.projectile(); // Paper - PlayerLaunchProjectileEvent diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch index 65243f097..e7ef153a0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java b/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java +index 41e1e076a4567d3d3202cf8e426a1ebb391d85e8..2d710dd3f20cbea06c16f14a558b575b369c6ca2 100644 --- a/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java +++ b/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java -@@ -20,6 +_,12 @@ +@@ -20,6 +20,12 @@ public record ClearAllStatusEffectsConsumeEffect() implements ConsumeEffect { @Override // CraftBukkit start public boolean apply(Level level, ItemStack stack, LivingEntity entity, org.bukkit.event.entity.EntityPotionEffectEvent.Cause cause) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch index fcee0a726..222efb182 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/crafting/Ingredient.java b/net/minecraft/world/item/crafting/Ingredient.java +index 879c8fe1f20decc793cfa39e686b61d521bd76ba..9c383a1028988cdd3de8b29ba72a4d7bd2a37c7e 100644 --- a/net/minecraft/world/item/crafting/Ingredient.java +++ b/net/minecraft/world/item/crafting/Ingredient.java -@@ -36,6 +_,7 @@ +@@ -36,6 +36,7 @@ public final class Ingredient implements StackedContents.IngredientInfo itemStacks; // Paper - Improve exact choice recipe ingredients @@ -8,7 +16,7 @@ public boolean isExact() { return this.itemStacks != null; -@@ -88,6 +_,11 @@ +@@ -88,6 +89,11 @@ public final class Ingredient implements StackedContents.IngredientInfo +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/net/minecraft/world/item/enchantment/EnchantmentHelper.java +index b86bc2e0aca5a7ef5b01be6a21c3a8bcd1ebcca0..7afb0ee8f92f4241ce3ebcd8e5fd9f50033e3a42 100644 --- a/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/net/minecraft/world/item/enchantment/EnchantmentHelper.java -@@ -608,4 +_,58 @@ +@@ -608,4 +608,58 @@ public class EnchantmentHelper { interface EnchantmentVisitor { void accept(Holder enchantment, int level); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch index 9671562b1..73ae134ab 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/enchantment/ItemEnchantments.java b/net/minecraft/world/item/enchantment/ItemEnchantments.java +index 6040b73a5351c3eb166250566b5c2385cee39ee0..29619b87fe19c66934fe5aaee8a9641960091bf5 100644 --- a/net/minecraft/world/item/enchantment/ItemEnchantments.java +++ b/net/minecraft/world/item/enchantment/ItemEnchantments.java -@@ -32,7 +_,7 @@ +@@ -32,7 +32,7 @@ public class ItemEnchantments implements TooltipProvider { private static final java.util.Comparator> ENCHANTMENT_ORDER = java.util.Comparator.comparing(Holder::getRegisteredName); public static final ItemEnchantments EMPTY = new ItemEnchantments(new it.unimi.dsi.fastutil.objects.Object2IntAVLTreeMap<>(ENCHANTMENT_ORDER)); // Paper end - sort enchantments @@ -9,7 +17,7 @@ public static final Codec CODEC = Codec.unboundedMap(Enchantment.CODEC, LEVEL_CODEC) .xmap( map -> new net.minecraft.world.item.enchantment.ItemEnchantments(net.minecraft.Util.make(new it.unimi.dsi.fastutil.objects.Object2IntAVLTreeMap<>(ENCHANTMENT_ORDER), m -> m.putAll(map))), // Paper - sort enchantments -@@ -50,7 +_,7 @@ +@@ -50,7 +50,7 @@ public class ItemEnchantments implements TooltipProvider { for (Entry> entry : enchantments.object2IntEntrySet()) { int intValue = entry.getIntValue(); @@ -18,7 +26,7 @@ throw new IllegalArgumentException("Enchantment " + entry.getKey() + " has invalid level " + intValue); } } -@@ -133,13 +_,13 @@ +@@ -133,13 +133,13 @@ public class ItemEnchantments implements TooltipProvider { if (level <= 0) { this.enchantments.removeInt(enchantment); } else { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch index 6a3b114a8..fbbc45aec 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/trading/MerchantOffer.java b/net/minecraft/world/item/trading/MerchantOffer.java +index 9333c63f217e1207eced37c5be150e192f2fcc3e..156cee58134ada34d249aab948c02adac4f6745a 100644 --- a/net/minecraft/world/item/trading/MerchantOffer.java +++ b/net/minecraft/world/item/trading/MerchantOffer.java -@@ -143,7 +_,12 @@ +@@ -143,7 +143,12 @@ public class MerchantOffer { } public void updateDemand() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch index ad89287e0..e6fd66768 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/BaseSpawner.java b/net/minecraft/world/level/BaseSpawner.java +index 650ebce14d618076cec2066d134d2ae51a87076a..0babc951d9fed6d32d3dba549cc5ced4dc6b0588 100644 --- a/net/minecraft/world/level/BaseSpawner.java +++ b/net/minecraft/world/level/BaseSpawner.java -@@ -54,6 +_,7 @@ +@@ -54,6 +54,7 @@ public abstract class BaseSpawner { } public boolean isNearPlayer(Level level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch index 73e6f74b1..397967bd8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/EntityGetter.java b/net/minecraft/world/level/EntityGetter.java +index 892a7c1eb1b321ca6d5ca709142e7feae1220815..7719bc8ff1fbbc67cdf15e1fec28dc9233cea207 100644 --- a/net/minecraft/world/level/EntityGetter.java +++ b/net/minecraft/world/level/EntityGetter.java -@@ -185,7 +_,7 @@ +@@ -185,7 +185,7 @@ public interface EntityGetter extends ca.spottedleaf.moonrise.patches.chunk_syst default boolean hasNearbyAlivePlayer(double x, double y, double z, double distance) { for (Player player : this.players()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch index 56101522d..0efa2b695 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java +index 418d3958b7510d469142178f9427c829b6387d83..801c4e8e01590beeb3633275f58d436d87ad746e 100644 --- a/net/minecraft/world/level/Level.java +++ b/net/minecraft/world/level/Level.java -@@ -160,11 +_,55 @@ +@@ -160,11 +160,55 @@ public abstract class Level implements LevelAccessor, UUIDLookup, AutoCl } // Paper end - add paper world config @@ -56,7 +64,7 @@ public CraftWorld getWorld() { return this.world; } -@@ -840,6 +_,8 @@ +@@ -840,6 +884,8 @@ public abstract class Level implements LevelAccessor, UUIDLookup, AutoCl // Paper end - getblock optimisations - cache world height/sections this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config @@ -65,7 +73,7 @@ this.generator = generator; this.world = new CraftWorld((ServerLevel) this, generator, biomeProvider, environment); -@@ -2127,4 +_,14 @@ +@@ -2127,4 +2173,14 @@ public abstract class Level implements LevelAccessor, UUIDLookup, AutoCl return this.id; } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch index 6ce413c7d..8cf028224 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/NaturalSpawner.java b/net/minecraft/world/level/NaturalSpawner.java +index 14a2514a408a66a83f7b5fb43b4c4dc8f23fd5f4..fa06ecacc27f619853c8db76d909ab4ba75dc529 100644 --- a/net/minecraft/world/level/NaturalSpawner.java +++ b/net/minecraft/world/level/NaturalSpawner.java -@@ -261,7 +_,7 @@ +@@ -261,7 +261,7 @@ public final class NaturalSpawner { mutableBlockPos.set(x, y, z); double d = x + 0.5; double d1 = z + 0.5; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch index 4bfdc6d8f..b911ff6a5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java +index ec4b63a574e7ff2c807c283c9f4b402229864e51..1953b2e59f4f6e6f78079ade6faa93bff6bf1a27 100644 --- a/net/minecraft/world/level/ServerExplosion.java +++ b/net/minecraft/world/level/ServerExplosion.java -@@ -316,7 +_,7 @@ +@@ -316,7 +316,7 @@ public class ServerExplosion implements Explosion { ) { this.level = level; this.source = source; @@ -9,7 +17,7 @@ this.center = center; this.fire = fire; this.blockInteraction = blockInteraction; -@@ -638,10 +_,27 @@ +@@ -638,10 +638,27 @@ public class ServerExplosion implements Explosion { public void explode() { // CraftBukkit start diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch index a21b8a6a3..10a201515 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/AnvilBlock.java b/net/minecraft/world/level/block/AnvilBlock.java +index e8bac6deb63e0f94fb5f8b38602b2e3333e5fa8d..b14736c25cfdd94c6e3f159e53865150b06edef6 100644 --- a/net/minecraft/world/level/block/AnvilBlock.java +++ b/net/minecraft/world/level/block/AnvilBlock.java -@@ -54,6 +_,53 @@ +@@ -54,6 +54,53 @@ public class AnvilBlock extends FallingBlock { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getClockWise()); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch index 066e2cfd6..efd21fc9b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/AzaleaBlock.java b/net/minecraft/world/level/block/AzaleaBlock.java +index 435a455ad2ec3dfb142d570a51a720bc6c49dac3..32a1dc20202bad7a15794e98cdc1bf2fb2ad5308 100644 --- a/net/minecraft/world/level/block/AzaleaBlock.java +++ b/net/minecraft/world/level/block/AzaleaBlock.java -@@ -50,6 +_,20 @@ +@@ -50,6 +50,20 @@ public class AzaleaBlock extends VegetationBlock implements BonemealableBlock { @Override public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch index fd6497469..592a0cdb1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java b/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java +index fb6e9194440b85487660f91aea7e34fdf086187b..2653ae5bf66f2b117f86e4df04d9cc307ba09011 100644 --- a/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java +++ b/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java -@@ -39,6 +_,7 @@ +@@ -39,6 +39,7 @@ public abstract class BaseCoralPlantTypeBlock extends Block implements SimpleWat } protected static boolean scanForWater(BlockState state, BlockGetter level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch index e0980cdaf..87006b24f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/BedBlock.java b/net/minecraft/world/level/block/BedBlock.java +index e72ead9ff6541f821a61ad3c50fe068a8c8bb69d..a6f4db5c99d332ac26a52d5174f75e7dc9f51fe5 100644 --- a/net/minecraft/world/level/block/BedBlock.java +++ b/net/minecraft/world/level/block/BedBlock.java -@@ -98,7 +_,7 @@ +@@ -98,7 +98,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock } Vec3 center = pos.getCenter(); @@ -9,7 +17,7 @@ return InteractionResult.SUCCESS_SERVER; } else if (state.getValue(OCCUPIED)) { if (!BedBlock.canSetSpawn(level)) return this.explodeBed(state, level, pos); // Paper - check explode first -@@ -146,7 +_,7 @@ +@@ -146,7 +146,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock } Vec3 center = pos.getCenter(); @@ -18,7 +26,7 @@ return InteractionResult.SUCCESS_SERVER; } // CraftBukkit end -@@ -167,7 +_,7 @@ +@@ -167,7 +167,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock @Override public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch index 20fb7e9e1..eeb7a8921 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/BigDripleafBlock.java b/net/minecraft/world/level/block/BigDripleafBlock.java +index e1193bcb666b7d38c511df7c1ebddb5897cefa8f..29248afa290b3143375f0538b4dfc80a63f8945f 100644 --- a/net/minecraft/world/level/block/BigDripleafBlock.java +++ b/net/minecraft/world/level/block/BigDripleafBlock.java -@@ -254,7 +_,7 @@ +@@ -254,7 +254,7 @@ public class BigDripleafBlock extends HorizontalDirectionalBlock implements Bone playTiltSound(level, pos, sound); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch index aee7753ae..5cd89fa0f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/Block.java b/net/minecraft/world/level/block/Block.java +index ae3e6e31171b1bcfba1ae51a0941b52dda270acd..5613b7366bdb1d444309967bd522eac4edc1feef 100644 --- a/net/minecraft/world/level/block/Block.java +++ b/net/minecraft/world/level/block/Block.java -@@ -99,6 +_,10 @@ +@@ -99,6 +99,10 @@ public class Block extends BlockBehaviour implements ItemLike { public static final int UPDATE_LIMIT = 512; protected final StateDefinition stateDefinition; private BlockState defaultBlockState; @@ -11,7 +19,7 @@ // Paper start - Protect Bedrock and End Portal/Frames from being destroyed public final boolean isDestroyable() { return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits || -@@ -345,7 +_,7 @@ +@@ -345,7 +349,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()) { @@ -20,7 +28,7 @@ } state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, false); // Paper - Properly handle xp dropping block.popExperience(serverLevel, pos, event.getExpToDrop()); // Paper - Properly handle xp dropping -@@ -363,7 +_,7 @@ +@@ -363,7 +367,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, LevelAccessor level, BlockPos pos, @Nullable BlockEntity blockEntity) { if (level instanceof ServerLevel) { @@ -29,7 +37,7 @@ state.spawnAfterBreak((ServerLevel)level, pos, ItemStack.EMPTY, true); } } -@@ -375,11 +_,30 @@ +@@ -375,11 +379,30 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, Level level, BlockPos pos, @Nullable BlockEntity blockEntity, @Nullable Entity entity, ItemStack tool, boolean dropExperience) { // Paper end - Properly handle xp dropping if (level instanceof ServerLevel) { @@ -61,11 +69,10 @@ public static void popResource(Level level, BlockPos pos, ItemStack stack) { double d = EntityType.ITEM.getHeight() / 2.0; double d1 = pos.getX() + 0.5 + Mth.nextDouble(level.random, -0.25, 0.25); -@@ -460,7 +_,15 @@ +@@ -460,7 +483,15 @@ public class Block extends BlockBehaviour implements ItemLike { } public void setPlacedBy(Level level, BlockPos pos, BlockState state, @Nullable LivingEntity placer, ItemStack stack) { -- } + this.placer = placer; // Purpur - Store placer on Block when placed + } + @@ -73,12 +80,12 @@ + @Nullable protected LivingEntity placer = null; + public void forgetPlacer() { + this.placer = null; -+ } + } + // Purpur end - Store placer on Block when placed public boolean isPossibleToRespawnInThis(BlockState state) { return !state.isSolid() && !state.liquid(); -@@ -471,7 +_,7 @@ +@@ -471,7 +502,7 @@ public class Block extends BlockBehaviour implements ItemLike { } public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch index 56ad25eb5..9bedeb7ba 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/Blocks.java b/net/minecraft/world/level/block/Blocks.java +index cea1e405c940cd51cf830f28bfc6ce72c0c36a12..4941bf9df0c8ed6316572920323f7c5f6791b002 100644 --- a/net/minecraft/world/level/block/Blocks.java +++ b/net/minecraft/world/level/block/Blocks.java -@@ -6583,6 +_,7 @@ +@@ -6583,6 +6583,7 @@ public class Blocks { BlockBehaviour.Properties.of() .mapColor(MapColor.PLANT) .forceSolidOff() @@ -8,7 +16,7 @@ .instabreak() .sound(SoundType.AZALEA) .noOcclusion() -@@ -6594,6 +_,7 @@ +@@ -6594,6 +6595,7 @@ public class Blocks { BlockBehaviour.Properties.of() .mapColor(MapColor.PLANT) .forceSolidOff() diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch index 86ef53933..e93e4521d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/BubbleColumnBlock.java b/net/minecraft/world/level/block/BubbleColumnBlock.java +index ab93da06d9e9858668aa796db497f282afa7020a..23a9c30baf8d33855703d45c2739fd5072d81adc 100644 --- a/net/minecraft/world/level/block/BubbleColumnBlock.java +++ b/net/minecraft/world/level/block/BubbleColumnBlock.java -@@ -98,9 +_,9 @@ +@@ -98,9 +98,9 @@ public class BubbleColumnBlock extends Block implements BucketPickup { if (blockState.is(Blocks.BUBBLE_COLUMN)) { return blockState; } else if (blockState.is(Blocks.SOUL_SAND)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch index 4fec7e3b9..e2478a57c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/CactusBlock.java b/net/minecraft/world/level/block/CactusBlock.java +index 8f6878cc8e72513446895bfc79886075bfcd5565..0f8cfa5423cd1813c655237aa544dad2dc56ba4d 100644 --- a/net/minecraft/world/level/block/CactusBlock.java +++ b/net/minecraft/world/level/block/CactusBlock.java -@@ -22,7 +_,7 @@ +@@ -22,7 +22,7 @@ import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -9,7 +17,7 @@ public static final MapCodec CODEC = simpleCodec(CactusBlock::new); public static final IntegerProperty AGE = BlockStateProperties.AGE_15; public static final int MAX_AGE = 15; -@@ -117,7 +_,7 @@ +@@ -117,7 +117,7 @@ public class CactusBlock extends Block { protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { for (Direction direction : Direction.Plane.HORIZONTAL) { BlockState blockState = level.getBlockState(pos.relative(direction)); @@ -18,7 +26,7 @@ return false; } } -@@ -141,4 +_,34 @@ +@@ -141,4 +141,34 @@ public class CactusBlock extends Block { protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return false; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch index c78b443f8..40bf97d83 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/CakeBlock.java b/net/minecraft/world/level/block/CakeBlock.java +index 72236993ebc4fbfc8b6316577caaa9c780bd447b..7c3b5170690af3bbdc856af96c3e01b0e55d6412 100644 --- a/net/minecraft/world/level/block/CakeBlock.java +++ b/net/minecraft/world/level/block/CakeBlock.java -@@ -109,6 +_,7 @@ +@@ -109,6 +109,7 @@ public class CakeBlock extends Block { org.bukkit.event.entity.FoodLevelChangeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(player, 2 + oldFoodLevel); if (!event.isCancelled()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch index 6557f2a69..335819edf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/CampfireBlock.java b/net/minecraft/world/level/block/CampfireBlock.java +index 028e2ad8bcb23b3f9f80a5ec551204bb2d7db1ae..642550d59e17330437028a84830520f394a41728 100644 --- a/net/minecraft/world/level/block/CampfireBlock.java +++ b/net/minecraft/world/level/block/CampfireBlock.java -@@ -124,7 +_,7 @@ +@@ -124,7 +124,7 @@ public class CampfireBlock extends BaseEntityBlock implements SimpleWaterloggedB return this.defaultBlockState() .setValue(WATERLOGGED, flag) .setValue(SIGNAL_FIRE, this.isSmokeSource(level.getBlockState(clickedPos.below()))) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch index 3ab8cbc0e..efd17f560 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/CarvedPumpkinBlock.java b/net/minecraft/world/level/block/CarvedPumpkinBlock.java +index 7cdf16c7216878350537b5331081cb30f44d6dbb..a4854370dfdcbc7ec4c27975e4feb69d4cb48a11 100644 --- a/net/minecraft/world/level/block/CarvedPumpkinBlock.java +++ b/net/minecraft/world/level/block/CarvedPumpkinBlock.java -@@ -64,7 +_,7 @@ +@@ -64,7 +64,7 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { if (blockPatternMatch != null) { SnowGolem snowGolem = EntityType.SNOW_GOLEM.create(level, EntitySpawnReason.TRIGGERED); if (snowGolem != null) { @@ -9,7 +17,7 @@ } } else { BlockPattern.BlockPatternMatch blockPatternMatch1 = this.getOrCreateIronGolemFull().find(level, pos); -@@ -72,13 +_,23 @@ +@@ -72,13 +72,23 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { IronGolem ironGolem = EntityType.IRON_GOLEM.create(level, EntitySpawnReason.TRIGGERED); if (ironGolem != null) { ironGolem.setPlayerCreated(true); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch index 6ead2196b..8d906bdba 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/CauldronBlock.java b/net/minecraft/world/level/block/CauldronBlock.java +index d58b49e550cfa683f753db2a913fddf307a1bba2..62ee64b97dfb2f1426d43cf1f8b0b0b6ec63b5b1 100644 --- a/net/minecraft/world/level/block/CauldronBlock.java +++ b/net/minecraft/world/level/block/CauldronBlock.java -@@ -32,8 +_,8 @@ +@@ -32,8 +32,8 @@ public class CauldronBlock extends AbstractCauldronBlock { protected static boolean shouldHandlePrecipitation(Level level, Biome.Precipitation precipitation) { return precipitation == Biome.Precipitation.RAIN diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch index 631c2fafe..5ea4fd0b7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/CaveVinesBlock.java b/net/minecraft/world/level/block/CaveVinesBlock.java +index 4e1a81c01a5c51a977e4fe9d2465e4ef20aab6d4..d67f278e8cb630b680cad22f4117a9545576bf0f 100644 --- a/net/minecraft/world/level/block/CaveVinesBlock.java +++ b/net/minecraft/world/level/block/CaveVinesBlock.java -@@ -92,4 +_,11 @@ +@@ -92,4 +92,11 @@ public class CaveVinesBlock extends GrowingPlantHeadBlock implements CaveVines { public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { level.setBlock(pos, state.setValue(BERRIES, true), 2); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch index 54d2fa463..8dbb7fd3c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/ChangeOverTimeBlock.java b/net/minecraft/world/level/block/ChangeOverTimeBlock.java +index ba7dbfa3f95bf93f3e50b17aa48b772a3047b74d..d42062a86c1278b71bc085cc3fb29a69039873de 100644 --- a/net/minecraft/world/level/block/ChangeOverTimeBlock.java +++ b/net/minecraft/world/level/block/ChangeOverTimeBlock.java -@@ -51,7 +_,7 @@ +@@ -51,7 +51,7 @@ public interface ChangeOverTimeBlock> { } float f = (float)(i1 + 1) / (i1 + i + 1); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch index 92f2abf28..981c5fd5a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/ChestBlock.java b/net/minecraft/world/level/block/ChestBlock.java +index c4937d1b482e2ec60961bda62ad6cc155f0ce8f7..43f9d4b8a7ab4cd0a1a5dee9d0c0c7790894a2ae 100644 --- a/net/minecraft/world/level/block/ChestBlock.java +++ b/net/minecraft/world/level/block/ChestBlock.java -@@ -337,6 +_,7 @@ +@@ -337,6 +337,7 @@ public class ChestBlock extends AbstractChestBlock implements } public static boolean isBlockedChestByBlock(BlockGetter level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch index 8ee18624a..cd3e2d96f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/ComposterBlock.java b/net/minecraft/world/level/block/ComposterBlock.java +index a647d76d365a60b95a3eb7927ac426bf70d417f3..3eb11df5d14ec63911be630ca99d8d9903723f9b 100644 --- a/net/minecraft/world/level/block/ComposterBlock.java +++ b/net/minecraft/world/level/block/ComposterBlock.java -@@ -250,23 +_,52 @@ +@@ -250,17 +250,27 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { ) { int levelValue = state.getValue(LEVEL); if (levelValue < 8 && COMPOSTABLES.containsKey(stack.getItem())) { @@ -14,7 +22,6 @@ - level.levelEvent(1500, pos, state != blockState ? 1 : 0); - player.awardStat(Stats.ITEM_USED.get(stack.getItem())); - stack.consume(1, player); -- } + // Purpur start - sneak to bulk process composter + BlockState newState = process(levelValue, player, state, level, pos, stack); + if (newState == null) { @@ -34,15 +41,15 @@ + newCount = stack.getCount(); + newLevel = newState.getValue(ComposterBlock.LEVEL); + } while (newCount > 0 && (newCount != oldCount || newLevel != oldLevel || newState != oldState)); -+ } + } + // Purpur end - Sneak to bulk process composter return InteractionResult.SUCCESS; } else { - return super.useItemOn(stack, state, level, pos, player, hand, hitResult); +@@ -268,6 +278,25 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { } } -+ + + // Purpur start - sneak to bulk process composter + private static @Nullable BlockState process(int levelValue, Player player, BlockState state, Level level, BlockPos pos, ItemStack stack) { + if (levelValue < 7 && !level.isClientSide) { @@ -61,6 +68,7 @@ + return state; + } + // Purpur end - Sneak to bulk process composter - ++ @Override protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { + int levelValue = state.getValue(LEVEL); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch index 690cfe031..cf2a8750a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/CoralBlock.java b/net/minecraft/world/level/block/CoralBlock.java +index e0be02eaa07d40d0738931383426517d20fe3b0b..b747af5f3c65f4b79a304b0e903f7b824fb03d8d 100644 --- a/net/minecraft/world/level/block/CoralBlock.java +++ b/net/minecraft/world/level/block/CoralBlock.java -@@ -65,6 +_,7 @@ +@@ -65,6 +65,7 @@ public class CoralBlock extends Block { } protected boolean scanForWater(BlockGetter level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch index 667d7f96f..33e4c3e6d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/CropBlock.java b/net/minecraft/world/level/block/CropBlock.java +index a38ce03a4dab6c83a0b54f47fd3c36d6da46fa24..b370b955ac8636275dfada4f38a7ca10297f7dac 100644 --- a/net/minecraft/world/level/block/CropBlock.java +++ b/net/minecraft/world/level/block/CropBlock.java -@@ -169,7 +_,7 @@ +@@ -169,7 +169,7 @@ public class CropBlock extends VegetationBlock implements BonemealableBlock { @Override protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent @@ -9,7 +17,7 @@ serverLevel.destroyBlock(pos, true, entity); } -@@ -204,4 +_,15 @@ +@@ -204,4 +204,15 @@ public class CropBlock extends VegetationBlock implements BonemealableBlock { protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch index 235a738f9..e425ca7a7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/DoorBlock.java b/net/minecraft/world/level/block/DoorBlock.java +index 7f40ccfe379ab284424d730213b343e17239dc0c..2fa6a85b0f1694d0989905a421198c6495271beb 100644 --- a/net/minecraft/world/level/block/DoorBlock.java +++ b/net/minecraft/world/level/block/DoorBlock.java -@@ -199,6 +_,7 @@ +@@ -199,6 +199,7 @@ public class DoorBlock extends Block { protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { if (!this.type.canOpenByHand()) { return InteractionResult.PASS; @@ -8,7 +16,7 @@ } else { state = state.cycle(OPEN); level.setBlock(pos, state, 10); -@@ -287,4 +_,18 @@ +@@ -287,4 +288,18 @@ public class DoorBlock extends Block { public static boolean isWoodenDoor(BlockState state) { return state.getBlock() instanceof DoorBlock doorBlock && doorBlock.type().canOpenByHand(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch index d08f61da6..cf6af618a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/DragonEggBlock.java b/net/minecraft/world/level/block/DragonEggBlock.java +index 5c2f10486e3aed090c6545a86276e6927e424cb2..9ed7ffb10e0a172fe5f3dd4613922428af82e5db 100644 --- a/net/minecraft/world/level/block/DragonEggBlock.java +++ b/net/minecraft/world/level/block/DragonEggBlock.java -@@ -46,6 +_,7 @@ +@@ -46,6 +46,7 @@ public class DragonEggBlock extends FallingBlock { } private void teleport(BlockState state, Level level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch index 30d849778..7108b7ee4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/EnchantingTableBlock.java b/net/minecraft/world/level/block/EnchantingTableBlock.java +index 523082c69aad8269cd058ad6864184c3ab51dbeb..4f4e81a845c4d3dc0e7d82ba323a8595581535e2 100644 --- a/net/minecraft/world/level/block/EnchantingTableBlock.java +++ b/net/minecraft/world/level/block/EnchantingTableBlock.java -@@ -119,4 +_,16 @@ +@@ -119,4 +119,16 @@ public class EnchantingTableBlock extends BaseEntityBlock { protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return false; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch index c04018815..5fa666020 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/FarmBlock.java b/net/minecraft/world/level/block/FarmBlock.java +index a31ac95237515b874f59941ec24c74e2c357b3d8..9883e6d1a1b76155c8ba1817fda6615b4742e18e 100644 --- a/net/minecraft/world/level/block/FarmBlock.java +++ b/net/minecraft/world/level/block/FarmBlock.java -@@ -112,7 +_,7 @@ +@@ -112,7 +112,7 @@ public class FarmBlock extends Block { public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { super.fallOn(level, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. if (level instanceof ServerLevel serverLevel @@ -9,7 +17,7 @@ && entity instanceof LivingEntity && (entity instanceof Player || serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) { -@@ -129,6 +_,28 @@ +@@ -129,6 +129,28 @@ public class FarmBlock extends Block { return; } @@ -38,7 +46,7 @@ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; } -@@ -177,7 +_,7 @@ +@@ -177,7 +199,7 @@ public class FarmBlock extends Block { } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch index 7dd50302a..6a39da4c0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/GrowingPlantHeadBlock.java b/net/minecraft/world/level/block/GrowingPlantHeadBlock.java +index fe11f3ec82ebdbdf3d024d7273fb16b6823b1ece..daaf0ddee9192fa24a70954ce52b381560fcbc1f 100644 --- a/net/minecraft/world/level/block/GrowingPlantHeadBlock.java +++ b/net/minecraft/world/level/block/GrowingPlantHeadBlock.java -@@ -34,12 +_,12 @@ +@@ -34,12 +34,12 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements @Override public BlockState getStateForPlacement(RandomSource random) { @@ -15,7 +23,7 @@ } @Override -@@ -55,7 +_,7 @@ +@@ -55,7 +55,7 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements } else if (this == Blocks.CAVE_VINES) { modifier = level.spigotConfig.caveVinesModifier; } @@ -24,7 +32,7 @@ // Spigot end BlockPos blockPos = pos.relative(this.growthDirection); if (this.canGrowInto(level.getBlockState(blockPos))) { -@@ -75,11 +_,11 @@ +@@ -75,11 +75,11 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements } public BlockState getMaxAgeState(BlockState state) { @@ -38,7 +46,7 @@ } protected BlockState updateBodyAfterConvertedFromHead(BlockState head, BlockState body) { -@@ -137,13 +_,13 @@ +@@ -137,13 +137,13 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements @Override public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { BlockPos blockPos = pos.relative(this.growthDirection); @@ -54,7 +62,7 @@ } } -@@ -155,4 +_,6 @@ +@@ -155,4 +155,6 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements protected GrowingPlantHeadBlock getHeadBlock() { return this; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch index 1b21c6e0a..69beead50 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/HayBlock.java b/net/minecraft/world/level/block/HayBlock.java +index cdde0a25e0a499d7575c00796143a033feb1f22f..999ecf16180b0a862cf8527ce532acf725ba869a 100644 --- a/net/minecraft/world/level/block/HayBlock.java +++ b/net/minecraft/world/level/block/HayBlock.java -@@ -23,6 +_,6 @@ +@@ -23,6 +23,6 @@ public class HayBlock extends RotatedPillarBlock { @Override public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch index 0f5251d57..0769e8a2b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/IceBlock.java b/net/minecraft/world/level/block/IceBlock.java +index be7141a4009036bcf3f92bba5d0ad74459e99bfa..a4d735a4365fdaf9e602315aa1176dfd5db77ff5 100644 --- a/net/minecraft/world/level/block/IceBlock.java +++ b/net/minecraft/world/level/block/IceBlock.java -@@ -40,7 +_,7 @@ +@@ -40,7 +40,7 @@ public class IceBlock extends HalfTransparentBlock { public void afterDestroy(Level level, BlockPos pos, ItemStack stack) { // Paper end - Improve Block#breakNaturally API if (!EnchantmentHelper.hasTag(stack, EnchantmentTags.PREVENTS_ICE_MELTING)) { @@ -9,7 +17,7 @@ level.removeBlock(pos, false); return; } -@@ -65,7 +_,7 @@ +@@ -65,7 +65,7 @@ public class IceBlock extends HalfTransparentBlock { return; } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch index b0ce9ac1a..083e1a29f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/KelpBlock.java b/net/minecraft/world/level/block/KelpBlock.java +index 8e3f2518e705a4b8988a1c9da730f0c89f21bdce..6e6212fd891dcaea0d0a398a73416f31d2cb2406 100644 --- a/net/minecraft/world/level/block/KelpBlock.java +++ b/net/minecraft/world/level/block/KelpBlock.java -@@ -72,4 +_,11 @@ +@@ -72,4 +72,11 @@ public class KelpBlock extends GrowingPlantHeadBlock implements LiquidBlockConta protected FluidState getFluidState(BlockState state) { return Fluids.WATER.getSource(false); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch index ef0559942..d0b3b3b22 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/LiquidBlock.java b/net/minecraft/world/level/block/LiquidBlock.java +index 7320b416e8d660419018b0699f49ab6f45a3373b..ae609e0603a78423c4c89b7efb9c41ab8fe7aa52 100644 --- a/net/minecraft/world/level/block/LiquidBlock.java +++ b/net/minecraft/world/level/block/LiquidBlock.java -@@ -134,7 +_,7 @@ +@@ -134,7 +134,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean isMoving) { @@ -9,7 +17,7 @@ level.scheduleTick(pos, state.getFluidState().getType(), this.getFlowSpeed(level, pos)); // Paper - Configurable speed for water flowing over lava } } -@@ -169,7 +_,7 @@ +@@ -169,7 +169,7 @@ public class LiquidBlock extends Block implements BucketPickup { BlockState neighborState, RandomSource random ) { @@ -18,7 +26,7 @@ scheduledTickAccess.scheduleTick(pos, state.getFluidState().getType(), this.fluid.getTickDelay(level)); } -@@ -178,7 +_,7 @@ +@@ -178,7 +178,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override protected void neighborChanged(BlockState state, Level level, BlockPos pos, Block neighborBlock, @Nullable Orientation orientation, boolean movedByPiston) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch index f9d8ca928..9ccd412f1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/MagmaBlock.java b/net/minecraft/world/level/block/MagmaBlock.java +index db83c3630064a6875b477021a1f78bdf59c4ddc3..bbf8447cf986015f8a2e55f39d7b4f0dd9abcb23 100644 --- a/net/minecraft/world/level/block/MagmaBlock.java +++ b/net/minecraft/world/level/block/MagmaBlock.java -@@ -28,7 +_,7 @@ +@@ -28,7 +28,7 @@ public class MagmaBlock extends Block { @Override public void stepOn(Level level, BlockPos pos, BlockState state, Entity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch index b4259d9d3..35c15d57f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/NetherPortalBlock.java b/net/minecraft/world/level/block/NetherPortalBlock.java +index 2f08780430fc643991ffb4aeba1f1ae8e78944d2..fa0d6baa40c6052c993d870d124af911e8621f0a 100644 --- a/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/net/minecraft/world/level/block/NetherPortalBlock.java -@@ -72,7 +_,7 @@ +@@ -72,7 +72,7 @@ public class NetherPortalBlock extends Block implements Portal { protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { if (level.spigotConfig.enableZombiePigmenPortalSpawns && level.dimensionType().natural() // Spigot && level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) @@ -9,7 +17,7 @@ && level.anyPlayerCloseEnoughForSpawning(pos)) { while (level.getBlockState(pos).is(this)) { pos = pos.below(); -@@ -130,7 +_,7 @@ +@@ -130,7 +130,7 @@ public class NetherPortalBlock extends Block implements Portal { @Override public int getPortalTransitionTime(ServerLevel level, Entity entity) { return entity instanceof Player player diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch index 362dae20a..ba5fa07fd 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/NetherWartBlock.java b/net/minecraft/world/level/block/NetherWartBlock.java +index a8cb58de6223006150bc49b95e5964b8fc42cecc..d25e2a37abb5e4c98116048fe2e96194149763ca 100644 --- a/net/minecraft/world/level/block/NetherWartBlock.java +++ b/net/minecraft/world/level/block/NetherWartBlock.java -@@ -16,7 +_,7 @@ +@@ -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; @@ -9,7 +17,7 @@ public static final MapCodec CODEC = simpleCodec(NetherWartBlock::new); public static final int MAX_AGE = 3; public static final IntegerProperty AGE = BlockStateProperties.AGE_3; -@@ -65,4 +_,34 @@ +@@ -65,4 +65,34 @@ public class NetherWartBlock extends VegetationBlock { protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch index 42c3d0b22..3593406fe 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/NoteBlock.java b/net/minecraft/world/level/block/NoteBlock.java +index 9467d5226797f67565edf8a46fd5b48135337410..7560d49b1952dba22e88758b15a24540ca576bbb 100644 --- a/net/minecraft/world/level/block/NoteBlock.java +++ b/net/minecraft/world/level/block/NoteBlock.java -@@ -101,7 +_,7 @@ +@@ -101,7 +101,7 @@ public class NoteBlock extends Block { } private void playNote(@Nullable Entity entity, BlockState state, Level level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch index 3202a8cee..60fd570e0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/ObserverBlock.java b/net/minecraft/world/level/block/ObserverBlock.java +index bd2aa00ce8b78c16f6107064dd00bfbb072df0df..9fa1ed439ef9adba44f3d4738688a95fb4625b68 100644 --- a/net/minecraft/world/level/block/ObserverBlock.java +++ b/net/minecraft/world/level/block/ObserverBlock.java -@@ -81,6 +_,7 @@ +@@ -81,6 +81,7 @@ public class ObserverBlock extends DirectionalBlock { RandomSource random ) { if (state.getValue(FACING) == direction && !state.getValue(POWERED)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch index cad7d9a3c..1541f5d80 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/PointedDripstoneBlock.java b/net/minecraft/world/level/block/PointedDripstoneBlock.java +index ef164fb4f24412e506b8abce74d509e8be6c4676..85e9aecc2045e1599488d6a137f5f9713fb1a245 100644 --- a/net/minecraft/world/level/block/PointedDripstoneBlock.java +++ b/net/minecraft/world/level/block/PointedDripstoneBlock.java -@@ -193,20 +_,20 @@ +@@ -193,20 +193,20 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate @VisibleForTesting public static void maybeTransferFluid(BlockState state, ServerLevel level, BlockPos pos, float randChance) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch index f6c12cc4c..c3a89dac5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/PoweredRailBlock.java b/net/minecraft/world/level/block/PoweredRailBlock.java +index 5ec12356e9f044d99762bf64a6d3bf74856d97a6..e80069d27ff60e0967d9333e2a0d6c8bf2f20a16 100644 --- a/net/minecraft/world/level/block/PoweredRailBlock.java +++ b/net/minecraft/world/level/block/PoweredRailBlock.java -@@ -28,7 +_,7 @@ +@@ -28,7 +28,7 @@ public class PoweredRailBlock extends BaseRailBlock { } protected boolean findPoweredRailSignal(Level level, BlockPos pos, BlockState state, boolean searchForward, int recursionCount) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch index c5ac40711..3a08de050 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/RespawnAnchorBlock.java b/net/minecraft/world/level/block/RespawnAnchorBlock.java +index 5b9d67d671ea70d4a8920a7f190d240c920971ac..f0b4ea2065f98f5430bba89f1a86ea5e8791aa1f 100644 --- a/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/net/minecraft/world/level/block/RespawnAnchorBlock.java -@@ -160,7 +_,7 @@ +@@ -160,7 +160,7 @@ public class RespawnAnchorBlock extends Block { }; Vec3 center = pos2.getCenter(); level.explode( diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch index aa23616be..ca6ae5c67 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/SculkShriekerBlock.java b/net/minecraft/world/level/block/SculkShriekerBlock.java +index 757f8453e147875ab9f14d9726bb734ef27447c9..f8c9a6d7c9f1a9d2afd820244017a709db79e080 100644 --- a/net/minecraft/world/level/block/SculkShriekerBlock.java +++ b/net/minecraft/world/level/block/SculkShriekerBlock.java -@@ -118,7 +_,7 @@ +@@ -118,7 +118,7 @@ public class SculkShriekerBlock extends BaseEntityBlock implements SimpleWaterlo @Nullable @Override public BlockState getStateForPlacement(BlockPlaceContext context) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch index 9e9c9b817..c7b485152 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/SlabBlock.java b/net/minecraft/world/level/block/SlabBlock.java +index a71d72147db9766fa16bdb6254d8eb6f2f7dba7b..66b9862563932faf0044810bde7bd3fb522c109b 100644 --- a/net/minecraft/world/level/block/SlabBlock.java +++ b/net/minecraft/world/level/block/SlabBlock.java -@@ -144,4 +_,25 @@ +@@ -144,4 +144,25 @@ public class SlabBlock extends Block implements SimpleWaterloggedBlock { return false; } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch index ca87324a4..488baec79 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/SnowLayerBlock.java b/net/minecraft/world/level/block/SnowLayerBlock.java +index 9131098e3ae4e6ffdf1491eb62537e385f75b6b2..ddedc08a96e500a390421d39be36590f37f49d24 100644 --- a/net/minecraft/world/level/block/SnowLayerBlock.java +++ b/net/minecraft/world/level/block/SnowLayerBlock.java -@@ -76,6 +_,7 @@ +@@ -76,6 +76,7 @@ public class SnowLayerBlock extends Block { @Override protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { BlockState blockState = level.getBlockState(pos.below()); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch index 9c1015ed7..118c01899 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/SpawnerBlock.java b/net/minecraft/world/level/block/SpawnerBlock.java +index e8d7b6adbcb84e8d89067b54318e0feb3c3276a6..2076474168410f376beebc072af4959e5d08c101 100644 --- a/net/minecraft/world/level/block/SpawnerBlock.java +++ b/net/minecraft/world/level/block/SpawnerBlock.java -@@ -38,6 +_,59 @@ +@@ -38,6 +38,59 @@ public class SpawnerBlock extends BaseEntityBlock { ); } @@ -60,7 +68,7 @@ @Override protected void spawnAfterBreak(BlockState state, ServerLevel level, BlockPos pos, ItemStack stack, boolean dropExperience) { super.spawnAfterBreak(state, level, pos, stack, dropExperience); -@@ -46,6 +_,7 @@ +@@ -46,6 +99,7 @@ public class SpawnerBlock extends BaseEntityBlock { @Override public int getExpDrop(BlockState state, ServerLevel level, BlockPos pos, ItemStack stack, boolean dropExperience) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch index ab343ffb3..942f9280a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/SpongeBlock.java b/net/minecraft/world/level/block/SpongeBlock.java +index 5d1b8c55bffc42924c4a95b1b4bd2e1e0b064af3..69822d21d0e71f4b29349af0bee2d80fa0802a3b 100644 --- a/net/minecraft/world/level/block/SpongeBlock.java +++ b/net/minecraft/world/level/block/SpongeBlock.java -@@ -53,8 +_,8 @@ +@@ -53,8 +53,8 @@ public class SpongeBlock extends Block { org.bukkit.craftbukkit.util.BlockStateListPopulator blockList = new org.bukkit.craftbukkit.util.BlockStateListPopulator(level); // CraftBukkit - Use BlockStateListPopulator BlockPos.breadthFirstTraversal( pos, @@ -11,7 +19,7 @@ (validPos, queueAdder) -> { for (Direction direction : ALL_DIRECTIONS) { queueAdder.accept(validPos.relative(direction)); -@@ -68,7 +_,7 @@ +@@ -68,7 +68,7 @@ public class SpongeBlock extends Block { BlockState blockState = blockList.getBlockState(blockPos); FluidState fluidState = blockList.getFluidState(blockPos); // CraftBukkit end @@ -20,7 +28,7 @@ return BlockPos.TraversalNodeStatus.SKIP; } else if (blockState.getBlock() instanceof BucketPickup bucketPickup && !bucketPickup.pickupBlock(null, blockList, blockPos, blockState).isEmpty()) { // CraftBukkit -@@ -76,6 +_,10 @@ +@@ -76,6 +76,10 @@ public class SpongeBlock extends Block { } else { if (blockState.getBlock() instanceof LiquidBlock) { blockList.setBlock(blockPos, Blocks.AIR.defaultBlockState(), 3); // CraftBukkit diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch index 8cfd145db..4d34c5757 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/StonecutterBlock.java b/net/minecraft/world/level/block/StonecutterBlock.java +index 6d1ab251e7d09ada7edcde7f52ca49ae5efe16b6..a58c94a40bad1d60b970b06decde9851692a8b63 100644 --- a/net/minecraft/world/level/block/StonecutterBlock.java +++ b/net/minecraft/world/level/block/StonecutterBlock.java -@@ -93,4 +_,14 @@ +@@ -93,4 +93,14 @@ public class StonecutterBlock extends Block { protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return false; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch index f388f13ce..5a7b2b373 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/SugarCaneBlock.java b/net/minecraft/world/level/block/SugarCaneBlock.java +index a8de37e173e244d7a16c19ac8805e0e4327c837a..baa56c6422c0924bb8b7c5a78db17acf784f28d6 100644 --- a/net/minecraft/world/level/block/SugarCaneBlock.java +++ b/net/minecraft/world/level/block/SugarCaneBlock.java -@@ -19,7 +_,7 @@ +@@ -19,7 +19,7 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -9,7 +17,7 @@ public static final MapCodec CODEC = simpleCodec(SugarCaneBlock::new); public static final IntegerProperty AGE = BlockStateProperties.AGE_15; private static final VoxelShape SHAPE = Block.column(12.0, 0.0, 16.0); -@@ -112,4 +_,34 @@ +@@ -112,4 +112,34 @@ public class SugarCaneBlock extends Block { protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch index 165f005db..f2062adca 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/TurtleEggBlock.java b/net/minecraft/world/level/block/TurtleEggBlock.java +index 8ee103e2752290db4cb4b22bb3552bf80e2ceb92..a23626dbfacf98ef1bc7918ca35406fa71307bed 100644 --- a/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -156,7 +_,7 @@ +@@ -156,7 +156,7 @@ public class TurtleEggBlock extends Block { private boolean shouldUpdateHatchLevel(Level level) { float timeOfDay = level.getTimeOfDay(1.0F); @@ -9,7 +17,7 @@ } @Override -@@ -189,9 +_,32 @@ +@@ -189,9 +189,32 @@ public class TurtleEggBlock extends Block { } private boolean canDestroyEgg(ServerLevel level, Entity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch index 89633d8f7..386e0cae4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/TwistingVinesBlock.java b/net/minecraft/world/level/block/TwistingVinesBlock.java +index afb77747ea6966c435aca4b667bfbbc909f52232..361aaca76ae0375782310af0e03241625f08f7bd 100644 --- a/net/minecraft/world/level/block/TwistingVinesBlock.java +++ b/net/minecraft/world/level/block/TwistingVinesBlock.java -@@ -34,4 +_,11 @@ +@@ -34,4 +34,11 @@ public class TwistingVinesBlock extends GrowingPlantHeadBlock { protected boolean canGrowInto(BlockState state) { return NetherVines.isValidGrowthState(state); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch index af22ad6c3..659724a69 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/VegetationBlock.java b/net/minecraft/world/level/block/VegetationBlock.java +index 0aa7c1084fd6ed35260469572cdd914d87f3922a..a1b5e815425fccbc601c8062fcc24598512e47dd 100644 --- a/net/minecraft/world/level/block/VegetationBlock.java +++ b/net/minecraft/world/level/block/VegetationBlock.java -@@ -61,4 +_,24 @@ +@@ -61,4 +61,24 @@ public abstract class VegetationBlock extends Block { protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return pathComputationType == PathComputationType.AIR && !this.hasCollision || super.isPathfindable(state, pathComputationType); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch index be28707f2..a3f4f6440 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/WeepingVinesBlock.java b/net/minecraft/world/level/block/WeepingVinesBlock.java +index f4ff810cdd4206711312a4fffba18f4b30a5701f..96fb69aaf9ed020a328ff609d49f88ab29a69952 100644 --- a/net/minecraft/world/level/block/WeepingVinesBlock.java +++ b/net/minecraft/world/level/block/WeepingVinesBlock.java -@@ -34,4 +_,11 @@ +@@ -34,4 +34,11 @@ public class WeepingVinesBlock extends GrowingPlantHeadBlock { protected boolean canGrowInto(BlockState state) { return NetherVines.isValidGrowthState(state); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch index d92c3e43b..dcca700b9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/WitherSkullBlock.java b/net/minecraft/world/level/block/WitherSkullBlock.java +index 0b6debe0e55e404e6f34b3bc437fe7c7a30cec7c..a70f552fddc58efdce770c36abb548ef8359d939 100644 --- a/net/minecraft/world/level/block/WitherSkullBlock.java +++ b/net/minecraft/world/level/block/WitherSkullBlock.java -@@ -71,6 +_,7 @@ +@@ -71,6 +71,7 @@ public class WitherSkullBlock extends SkullBlock { ); witherBoss.yBodyRot = blockPatternMatch.getForwards().getAxis() == Direction.Axis.X ? 0.0F : 90.0F; witherBoss.makeInvulnerable(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch index 4cb4b65da..67bd2f988 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +index c5b3b5e5f621f8db152aa190374ae0fe567d6828..4e0fa0a7c639f2c0ded1bfbc8dd01da142043505 100644 --- a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -@@ -186,6 +_,21 @@ +@@ -186,6 +186,21 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit } ItemStack itemStack = furnace.items.get(1); @@ -22,7 +30,7 @@ ItemStack itemStack1 = furnace.items.get(0); boolean flag1 = !itemStack1.isEmpty(); boolean flag2 = !itemStack.isEmpty(); -@@ -269,6 +_,8 @@ +@@ -269,6 +284,8 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit if (flag) { setChanged(level, pos, state); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch index 8de0db582..0d938086a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +index b77cdbf3e8cf0e9d66c9e5288ebae38c79dae1fe..bc7b9d6faded66e95c38cfc5571b09c05af30deb 100644 --- a/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -@@ -142,6 +_,16 @@ +@@ -142,6 +142,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name public double getEffectRange() { if (this.effectRange < 0) { @@ -17,7 +25,7 @@ return this.levels * 10 + 10; } else { return effectRange; -@@ -171,6 +_,7 @@ +@@ -171,6 +181,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name int y = pos.getY(); int z = pos.getZ(); BlockPos blockPos; @@ -25,7 +33,7 @@ if (blockEntity.lastCheckY < y) { blockPos = pos; blockEntity.checkingBeamSections = Lists.newArrayList(); -@@ -200,6 +_,7 @@ +@@ -200,6 +211,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name } } } else { @@ -33,7 +41,7 @@ if (section == null || blockState.getLightBlock() >= 15 && !blockState.is(Blocks.BEDROCK)) { blockEntity.checkingBeamSections.clear(); blockEntity.lastCheckY = height; -@@ -219,7 +_,7 @@ +@@ -219,7 +231,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name blockEntity.levels = updateBase(level, x, y, z); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch index c78bf7ee8..7f8a49909 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +index 331eb5416307378162e39e20192ba06a047b70ea..129e63c18e8c641ad2413111632c8a54b1385d1d 100644 --- a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -@@ -72,7 +_,7 @@ +@@ -72,7 +72,7 @@ public class BeehiveBlockEntity extends BlockEntity { "leash", "UUID" ); @@ -9,7 +17,7 @@ private static final int MIN_TICKS_BEFORE_REENTERING_HIVE = 400; private static final int MIN_OCCUPATION_TICKS_NECTAR = 2400; public static final int MIN_OCCUPATION_TICKS_NECTARLESS = 600; -@@ -147,11 +_,33 @@ +@@ -147,11 +147,33 @@ public class BeehiveBlockEntity extends BlockEntity { return list; } @@ -43,7 +51,7 @@ // Paper start - Add EntityBlockStorage clearEntities public void clearBees() { this.stored.clear(); -@@ -389,8 +_,8 @@ +@@ -389,8 +411,8 @@ public class BeehiveBlockEntity extends BlockEntity { return this.stored.stream().map(BeehiveBlockEntity.BeeData::toOccupant).toList(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch index 33ed39fc8..4cf7475eb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/entity/BlockEntity.java b/net/minecraft/world/level/block/entity/BlockEntity.java +index a1075c26d55cc01219acd94d0138f81aa9d34c48..d7a08a4ecac2bb4f5626fb53e27f8d50b6936f1c 100644 --- a/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -105,6 +_,10 @@ +@@ -105,6 +105,10 @@ public abstract class BlockEntity { this.persistentDataContainer.putAll((CompoundTag) persistentDataTag); } // Paper end - read persistent data container @@ -11,7 +19,7 @@ } public final void loadWithComponents(CompoundTag tag, HolderLookup.Provider registries) { -@@ -118,6 +_,12 @@ +@@ -118,6 +122,12 @@ public abstract class BlockEntity { } protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { @@ -24,7 +32,7 @@ } public final CompoundTag saveWithFullMetadata(HolderLookup.Provider registries) { -@@ -379,4 +_,17 @@ +@@ -379,4 +389,17 @@ public abstract class BlockEntity { private ComponentHelper() { } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch index 2b9fe8924..71e78230a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/entity/ConduitBlockEntity.java b/net/minecraft/world/level/block/entity/ConduitBlockEntity.java +index 2f07a23a6151a4dfb28ddc0ab38ec2abefcdd27c..aeb10f21cd9dab3b134d1d8478083453dc37e3f2 100644 --- a/net/minecraft/world/level/block/entity/ConduitBlockEntity.java +++ b/net/minecraft/world/level/block/entity/ConduitBlockEntity.java -@@ -151,7 +_,7 @@ +@@ -151,7 +151,7 @@ public class ConduitBlockEntity extends BlockEntity { BlockPos blockPos1 = pos.offset(i, i1, i2x); BlockState blockState = level.getBlockState(blockPos1); @@ -9,7 +17,7 @@ if (blockState.is(block)) { positions.add(blockPos1); } -@@ -166,13 +_,13 @@ +@@ -166,13 +166,13 @@ public class ConduitBlockEntity extends BlockEntity { private static void applyEffects(Level level, BlockPos pos, List positions) { // CraftBukkit start @@ -26,7 +34,7 @@ // CraftBukkit start return i; } -@@ -209,17 +_,17 @@ +@@ -209,17 +209,17 @@ public class ConduitBlockEntity extends BlockEntity { blockEntity.destroyTargetUUID = null; } else if (blockEntity.destroyTarget == null) { List entitiesOfClass = level.getEntitiesOfClass( @@ -47,7 +55,7 @@ level.playSound( null, blockEntity.destroyTarget.getX(), -@@ -249,16 +_,22 @@ +@@ -249,16 +249,22 @@ public class ConduitBlockEntity extends BlockEntity { } public static AABB getDestroyRangeAABB(BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch index 1f4ddb733..d95ad5bf0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java b/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java +index 4b2462ece4eb5abb76ea9259b3e6a77f8a8e4e07..d35d04823e5d0de4487310caadd013f7dab1f419 100644 --- a/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java +++ b/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java -@@ -31,6 +_,7 @@ +@@ -31,6 +31,7 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable private static final RandomSource RANDOM = RandomSource.create(); @Nullable private Component name; @@ -8,7 +16,7 @@ public EnchantingTableBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.ENCHANTING_TABLE, pos, state); -@@ -42,12 +_,14 @@ +@@ -42,12 +43,14 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable if (this.hasCustomName()) { tag.store("CustomName", ComponentSerialization.CODEC, registries.createSerializationContext(NbtOps.INSTANCE), this.name); } @@ -23,7 +31,7 @@ } public static void bookAnimationTick(Level level, BlockPos pos, BlockState state, EnchantingTableBlockEntity enchantingTable) { -@@ -139,4 +_,14 @@ +@@ -139,4 +142,14 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable public void removeComponentsFromTag(CompoundTag tag) { tag.remove("CustomName"); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch index 97ca4ad9b..1d9fb2255 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/entity/SignBlockEntity.java b/net/minecraft/world/level/block/entity/SignBlockEntity.java +index 8f87248a77c2083541105cfd1da1bc87bd122ba4..4c5de8783b2fc87a442e194e0069ce9cd5b5fd6c 100644 --- a/net/minecraft/world/level/block/entity/SignBlockEntity.java +++ b/net/minecraft/world/level/block/entity/SignBlockEntity.java -@@ -151,16 +_,32 @@ +@@ -151,16 +151,32 @@ public class SignBlockEntity extends BlockEntity { return this.setText(updater.apply(text), isFrontText); } @@ -35,11 +43,10 @@ ); } } -@@ -297,6 +_,24 @@ - // CraftBukkit - this +@@ -298,6 +314,24 @@ public class SignBlockEntity extends BlockEntity { return new CommandSourceStack(commandSource, Vec3.atCenterOf(pos), Vec2.ZERO, (ServerLevel)level, 2, string, component, level.getServer(), player); // Paper - Fix commands from signs not firing command events } -+ + + // Purpur start - Signs allow color codes + public ClientboundBlockEntityDataPacket getTranslatedUpdatePacket(boolean filtered, boolean front) { + final CompoundTag nbt = new CompoundTag(); @@ -57,6 +64,7 @@ + return ClientboundBlockEntityDataPacket.create(this, (blockEntity, registryAccess) -> nbt); + } + // Purpur end - Signs allow color codes - ++ @Override public ClientboundBlockEntityDataPacket getUpdatePacket() { + return ClientboundBlockEntityDataPacket.create(this); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch index bc6293606..14e1d2ad5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/piston/PistonStructureResolver.java b/net/minecraft/world/level/block/piston/PistonStructureResolver.java +index ad143a92569f5b420ccaa2089758b2fb3b4ab7c5..5a3660e02bc805e9a35a81b8a61f07b3f20b5ba9 100644 --- a/net/minecraft/world/level/block/piston/PistonStructureResolver.java +++ b/net/minecraft/world/level/block/piston/PistonStructureResolver.java -@@ -81,7 +_,7 @@ +@@ -81,7 +81,7 @@ public class PistonStructureResolver { return true; } else { int i = 1; @@ -9,7 +17,7 @@ return false; } else { while (isSticky(blockState)) { -@@ -95,7 +_,7 @@ +@@ -95,7 +95,7 @@ public class PistonStructureResolver { break; } @@ -18,7 +26,7 @@ return false; } } -@@ -140,7 +_,7 @@ +@@ -140,7 +140,7 @@ public class PistonStructureResolver { return true; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch index 7aa782b7e..3e6261b3d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/chunk/storage/EntityStorage.java b/net/minecraft/world/level/chunk/storage/EntityStorage.java +index f9fb1380be9cbe960127c208c65c19f770e50b6d..17315201b8d3546058e2440b8fb8a5bb465f1259 100644 --- a/net/minecraft/world/level/chunk/storage/EntityStorage.java +++ b/net/minecraft/world/level/chunk/storage/EntityStorage.java -@@ -100,6 +_,7 @@ +@@ -100,6 +100,7 @@ public class EntityStorage implements EntityPersistentStorage { } // Paper end - Entity load/save limit per chunk CompoundTag compoundTag1 = new CompoundTag(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch index 8f5ddb2d7..b9005a08b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..77db68349aa73d33b86a867099c9395c96d5a02d 100644 --- a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +++ b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -@@ -308,7 +_,7 @@ +@@ -308,7 +308,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise // Paper start private static void printOversizedLog(String msg, Path file, int x, int z) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch index 51e0ad919..3eee25292 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/levelgen/DensityFunctions.java b/net/minecraft/world/level/levelgen/DensityFunctions.java +index 04527a5c65ad630f794fed9071d485aedd02257a..77731406cb3dc417aa2fe1cb4352f3d2d7d498aa 100644 --- a/net/minecraft/world/level/levelgen/DensityFunctions.java +++ b/net/minecraft/world/level/levelgen/DensityFunctions.java -@@ -528,7 +_,7 @@ +@@ -528,7 +528,7 @@ public final class DensityFunctions { int i1 = z / 2; int i2 = x % 2; int i3 = z % 2; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch index 5652d79c6..e7540fa93 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/levelgen/PhantomSpawner.java b/net/minecraft/world/level/levelgen/PhantomSpawner.java +index d2e674b046bcf82a239b4706c3b89197ec6749c8..73c038c026b20af3d8719b42470ee006d8ec5896 100644 --- a/net/minecraft/world/level/levelgen/PhantomSpawner.java +++ b/net/minecraft/world/level/levelgen/PhantomSpawner.java -@@ -38,13 +_,13 @@ +@@ -38,13 +38,13 @@ public class PhantomSpawner implements CustomSpawner { int spawnAttemptMaxSeconds = level.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 +25,7 @@ ServerStatsCounter stats = serverPlayer.getStats(); int i = Mth.clamp(stats.getValue(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE); int i1 = 24000; -@@ -56,7 +_,7 @@ +@@ -56,7 +56,7 @@ public class PhantomSpawner implements CustomSpawner { FluidState fluidState = level.getFluidState(blockPos1); if (NaturalSpawner.isValidEmptySpawnBlock(level, blockPos1, blockState, fluidState, EntityType.PHANTOM)) { SpawnGroupData spawnGroupData = null; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch index 78e131bae..713701fc1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/material/FlowingFluid.java b/net/minecraft/world/level/material/FlowingFluid.java +index ace1099a12c762b2e73b71dd3551cf351fedf067..1b06e44a267d2d4af844997ac0c557f30aaf9b15 100644 --- a/net/minecraft/world/level/material/FlowingFluid.java +++ b/net/minecraft/world/level/material/FlowingFluid.java -@@ -232,7 +_,7 @@ +@@ -232,7 +232,7 @@ public abstract class FlowingFluid extends Fluid { } } @@ -9,16 +17,16 @@ BlockState blockState1 = level.getBlockState(mutableBlockPos.setWithOffset(pos, Direction.DOWN)); FluidState fluidState1 = blockState1.getFluidState(); if (blockState1.isSolid() || this.isSourceBlockOfThisType(fluidState1)) { -@@ -319,6 +_,12 @@ - } +@@ -320,6 +320,12 @@ public abstract class FlowingFluid extends Fluid { protected abstract boolean canConvertToSource(ServerLevel level); -+ + + // Purpur start - Implement infinite liquids + protected int getRequiredSources(Level level) { + return 2; + } + // Purpur end - Implement infinite liquids - ++ protected void spreadTo(LevelAccessor level, BlockPos pos, BlockState blockState, Direction direction, FluidState fluidState) { if (blockState.getBlock() instanceof LiquidBlockContainer liquidBlockContainer) { + liquidBlockContainer.placeLiquid(level, pos, blockState, fluidState); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch index 502b87bdc..a52e8b32b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/material/LavaFluid.java b/net/minecraft/world/level/material/LavaFluid.java +index 033f252248b671e35135269dd2df6e7ca4585604..43cdc2f8fdfdeb1426e386e0084087779ef62754 100644 --- a/net/minecraft/world/level/material/LavaFluid.java +++ b/net/minecraft/world/level/material/LavaFluid.java -@@ -189,7 +_,7 @@ +@@ -189,7 +189,7 @@ public abstract class LavaFluid extends FlowingFluid { @Override public int getTickDelay(LevelReader level) { @@ -9,17 +17,17 @@ } @Override -@@ -210,6 +_,13 @@ - private void fizz(LevelAccessor level, BlockPos pos) { +@@ -211,6 +211,13 @@ public abstract class LavaFluid extends FlowingFluid { level.levelEvent(1501, pos, 0); } -+ + + // Purpur start - Implement infinite liquids + @Override + protected int getRequiredSources(Level level) { + return level.purpurConfig.lavaInfiniteRequiredSources; + } + // Purpur end - Implement infinite liquids - ++ @Override protected boolean canConvertToSource(ServerLevel level) { + return level.getGameRules().getBoolean(GameRules.RULE_LAVA_SOURCE_CONVERSION); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch index 3bc14791b..65da285fe 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/material/WaterFluid.java b/net/minecraft/world/level/material/WaterFluid.java +index 10e3c644e31650b0e1aad6349a83a763cf744ec8..b248fe1d66940c05d56fc322df61c52ece72e77f 100644 --- a/net/minecraft/world/level/material/WaterFluid.java +++ b/net/minecraft/world/level/material/WaterFluid.java -@@ -78,6 +_,13 @@ +@@ -78,6 +78,13 @@ public abstract class WaterFluid extends FlowingFluid { return level.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch index ef04724ea..88f8cb69f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +index 9e6b2bbc1f83d32d0332f036be4f1a0e18b826bf..db6baaa698fe93aba3fbd595158b568badd6cb8a 100644 --- a/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -@@ -240,7 +_,7 @@ +@@ -240,7 +240,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { if ((node == null || node.costMalus < 0.0F) && verticalDeltaLimit > 0 && (cachedPathType != PathType.FENCE || this.canWalkOverFences()) @@ -9,7 +17,7 @@ && cachedPathType != PathType.TRAPDOOR && cachedPathType != PathType.POWDER_SNOW) { node = this.tryJumpOn(x, y, z, verticalDeltaLimit, nodeFloorLevel, direction, pathType, mutableBlockPos); -@@ -493,7 +_,7 @@ +@@ -493,7 +493,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { return PathType.TRAPDOOR; } else if (blockState.is(Blocks.POWDER_SNOW)) { return PathType.POWDER_SNOW; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch index 925647acc..0bdcf618d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/portal/PortalShape.java b/net/minecraft/world/level/portal/PortalShape.java +index 21e3d5702fae0b1d94739744228c4cab608adb6b..07140dddebca268c25a243f6c6e082c3adf919e2 100644 --- a/net/minecraft/world/level/portal/PortalShape.java +++ b/net/minecraft/world/level/portal/PortalShape.java -@@ -28,7 +_,7 @@ +@@ -28,7 +28,7 @@ public class PortalShape { public static final int MAX_WIDTH = 21; private static final int MIN_HEIGHT = 3; public static final int MAX_HEIGHT = 21; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch index 138758dfe..c32a782c0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java +index c8f23011a8942a5be970c606f67142cbd202b97e..7bbeed6c998c91e68376d3f17a510d68e3cd0b27 100644 --- a/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java +++ b/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -@@ -81,6 +_,7 @@ +@@ -81,6 +81,7 @@ public class MapItemSavedData extends SavedData { public final Map decorations = Maps.newLinkedHashMap(); private final Map frameMarkers = Maps.newHashMap(); private int trackedDecorationCount; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch index bc7b09181..c2e5d779e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java b/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java +index c4f29da30d63deb3f9eabafcf62a946ff148b6b7..f3083702286dfb7932f08e0b811eded7988cbab4 100644 --- a/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java +++ b/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java -@@ -66,6 +_,11 @@ +@@ -66,6 +66,11 @@ public class EnchantedCountIncreaseFunction extends LootItemConditionalFunction Entity entity = context.getOptionalParameter(LootContextParams.ATTACKING_ENTITY); if (entity instanceof LivingEntity livingEntity) { int enchantmentLevel = EnchantmentHelper.getEnchantmentLevel(this.enchantment, livingEntity); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch index df49f561e..3217dcfc3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch @@ -1,6 +1,14 @@ +From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/phys/AABB.java b/net/minecraft/world/phys/AABB.java +index c22acc8889fbb3c9ee698624189c195ee4b5eefb..5767fbfd7f33c5276fb4335ce473b2e1baca411c 100644 --- a/net/minecraft/world/phys/AABB.java +++ b/net/minecraft/world/phys/AABB.java -@@ -465,4 +_,10 @@ +@@ -465,4 +465,10 @@ public class AABB { return new AABB(this.minX, this.minY, this.minZ, this.maxX, this.maxY, this.maxZ); } } From 2c139d3b7a424645f08a7d87f7af6041d7c4012f Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 28 May 2025 19:24:35 -0700 Subject: [PATCH 104/289] move patches to unapplied directories --- .../{features => unapplied-features}/0001-Rebrand.patch | 0 .../0002-Purpur-config-files.patch | 0 .../java/com/destroystokyo/paper/entity/ai/VanillaGoal.java.patch | 0 .../src/main/java/co/aikar/timings/TimedEventExecutor.java.patch | 0 .../src/main/java/co/aikar/timings/Timing.java.patch | 0 .../src/main/java/co/aikar/timings/Timings.java.patch | 0 .../src/main/java/co/aikar/timings/TimingsCommand.java.patch | 0 .../java/com/destroystokyo/paper/util/VersionFetcher.java.patch | 0 .../src/main/java/org/bukkit/Bukkit.java.patch | 0 .../src/main/java/org/bukkit/ChatColor.java.patch | 0 .../src/main/java/org/bukkit/Material.java.patch | 0 .../src/main/java/org/bukkit/OfflinePlayer.java.patch | 0 .../src/main/java/org/bukkit/Server.java.patch | 0 .../src/main/java/org/bukkit/World.java.patch | 0 .../src/main/java/org/bukkit/block/EntityBlockStorage.java.patch | 0 .../src/main/java/org/bukkit/command/SimpleCommandMap.java.patch | 0 .../java/org/bukkit/command/defaults/VersionCommand.java.patch | 0 .../java/org/bukkit/enchantments/EnchantmentTarget.java.patch | 0 .../src/main/java/org/bukkit/entity/Endermite.java.patch | 0 .../src/main/java/org/bukkit/entity/Entity.java.patch | 0 .../src/main/java/org/bukkit/entity/IronGolem.java.patch | 0 .../src/main/java/org/bukkit/entity/Item.java.patch | 0 .../src/main/java/org/bukkit/entity/LivingEntity.java.patch | 0 .../src/main/java/org/bukkit/entity/Llama.java.patch | 0 .../src/main/java/org/bukkit/entity/Player.java.patch | 0 .../src/main/java/org/bukkit/entity/Snowman.java.patch | 0 .../src/main/java/org/bukkit/entity/Villager.java.patch | 0 .../src/main/java/org/bukkit/entity/Wither.java.patch | 0 .../src/main/java/org/bukkit/entity/Wolf.java.patch | 0 .../java/org/bukkit/event/entity/EntityDamageEvent.java.patch | 0 .../org/bukkit/event/entity/EntityPotionEffectEvent.java.patch | 0 .../main/java/org/bukkit/event/inventory/InventoryType.java.patch | 0 .../src/main/java/org/bukkit/inventory/AnvilInventory.java.patch | 0 .../src/main/java/org/bukkit/inventory/ItemStack.java.patch | 0 .../src/main/java/org/bukkit/inventory/RecipeChoice.java.patch | 0 .../src/main/java/org/bukkit/inventory/view/AnvilView.java.patch | 0 .../src/main/java/org/bukkit/map/MapRenderer.java.patch | 0 .../main/java/org/bukkit/permissions/PermissibleBase.java.patch | 0 .../main/java/org/bukkit/plugin/java/JavaPluginLoader.java.patch | 0 .../src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch | 0 .../org/bukkit/util/permissions/CommandPermissions.java.patch | 0 .../org/bukkit/util/permissions/DefaultPermissions.java.patch | 0 .../src/main/java/org/spigotmc/CustomTimingsHandler.java.patch | 0 .../{features => unapplied-features}/0001-Ridables.patch | 0 .../0002-Configurable-entity-base-attributes.patch | 0 .../0003-Barrels-and-enderchests-6-rows.patch | 0 .../0004-Giants-AI-settings.patch | 0 .../0005-Chickens-can-retaliate.patch | 0 .../0006-Minecart-settings-and-WASD-controls.patch | 0 .../0007-Villagers-follow-emerald-blocks.patch | 0 .../0008-Implement-elytra-settings.patch | 0 .../0009-Configurable-jockey-options.patch | 0 ...010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch | 0 .../0011-Phantoms-burn-in-light.patch | 0 .../0012-Make-entity-breeding-times-configurable.patch | 0 ...013-Apply-display-names-from-item-forms-of-entities-to-e.patch | 0 .../0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch | 0 .../0015-Add-mobGriefing-override-to-everything-affected.patch | 0 .../0016-Add-EntityTeleportHinderedEvent.patch | 0 .../0017-Toggle-for-water-sensitive-mob-damage.patch | 0 .../0018-API-for-any-mob-to-burn-daylight.patch | 0 .../0019-Cows-naturally-aggressive-to-players-chance.patch | 0 .../0020-Mobs-always-drop-experience.patch | 0 .../io/papermc/paper/entity/activation/ActivationRange.java.patch | 0 .../net/minecraft/CrashReport.java.patch | 0 .../net/minecraft/commands/CommandSourceStack.java.patch | 0 .../net/minecraft/commands/Commands.java.patch | 0 .../commands/arguments/selector/EntitySelector.java.patch | 0 .../net/minecraft/core/BlockPos.java.patch | 0 .../net/minecraft/core/dispenser/DispenseItemBehavior.java.patch | 0 .../core/dispenser/EquipmentDispenseItemBehavior.java.patch | 0 .../net/minecraft/gametest/framework/GameTestHelper.java.patch | 0 .../net/minecraft/network/Connection.java.patch | 0 .../net/minecraft/network/chat/SignedMessageChain.java.patch | 0 .../net/minecraft/server/Main.java.patch | 0 .../net/minecraft/server/MinecraftServer.java.patch | 0 .../net/minecraft/server/PlayerAdvancements.java.patch | 0 .../net/minecraft/server/commands/EnchantCommand.java.patch | 0 .../net/minecraft/server/commands/GameModeCommand.java.patch | 0 .../net/minecraft/server/commands/GiveCommand.java.patch | 0 .../net/minecraft/server/dedicated/DedicatedServer.java.patch | 0 .../server/dedicated/DedicatedServerProperties.java.patch | 0 .../net/minecraft/server/gui/MinecraftServerGui.java.patch | 0 .../net/minecraft/server/gui/StatsComponent.java.patch | 0 .../net/minecraft/server/level/ServerLevel.java.patch | 0 .../net/minecraft/server/level/ServerPlayer.java.patch | 0 .../net/minecraft/server/level/ServerPlayerGameMode.java.patch | 0 .../net/minecraft/server/level/WorldGenRegion.java.patch | 0 .../server/network/ServerCommonPacketListenerImpl.java.patch | 0 .../server/network/ServerGamePacketListenerImpl.java.patch | 0 .../server/network/ServerLoginPacketListenerImpl.java.patch | 0 .../server/network/ServerStatusPacketListenerImpl.java.patch | 0 .../net/minecraft/server/players/PlayerList.java.patch | 0 .../net/minecraft/server/players/SleepStatus.java.patch | 0 .../net/minecraft/stats/ServerRecipeBook.java.patch | 0 .../net/minecraft/util/StringUtil.java.patch | 0 .../net/minecraft/world/damagesource/CombatRules.java.patch | 0 .../net/minecraft/world/damagesource/CombatTracker.java.patch | 0 .../net/minecraft/world/damagesource/DamageSource.java.patch | 0 .../net/minecraft/world/damagesource/DamageSources.java.patch | 0 .../net/minecraft/world/effect/HungerMobEffect.java.patch | 0 .../net/minecraft/world/effect/PoisonMobEffect.java.patch | 0 .../net/minecraft/world/effect/RegenerationMobEffect.java.patch | 0 .../net/minecraft/world/effect/SaturationMobEffect.java.patch | 0 .../net/minecraft/world/effect/WitherMobEffect.java.patch | 0 .../net/minecraft/world/entity/Entity.java.patch | 0 .../net/minecraft/world/entity/EntitySelector.java.patch | 0 .../net/minecraft/world/entity/EntityType.java.patch | 0 .../net/minecraft/world/entity/ExperienceOrb.java.patch | 0 .../net/minecraft/world/entity/GlowSquid.java.patch | 0 .../net/minecraft/world/entity/LivingEntity.java.patch | 0 .../net/minecraft/world/entity/Mob.java.patch | 0 .../world/entity/ai/attributes/RangedAttribute.java.patch | 0 .../net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch | 0 .../world/entity/ai/behavior/InteractWithDoor.java.patch | 0 .../world/entity/ai/behavior/ShowTradesToPlayer.java.patch | 0 .../world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch | 0 .../minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch | 0 .../world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch | 0 .../net/minecraft/world/entity/ai/goal/SwellGoal.java.patch | 0 .../minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch | 0 .../world/entity/ai/targeting/TargetingConditions.java.patch | 0 .../net/minecraft/world/entity/ambient/Bat.java.patch | 0 .../net/minecraft/world/entity/animal/AbstractCow.java.patch | 0 .../net/minecraft/world/entity/animal/Animal.java.patch | 0 .../net/minecraft/world/entity/animal/Bee.java.patch | 0 .../net/minecraft/world/entity/animal/Cat.java.patch | 0 .../net/minecraft/world/entity/animal/Dolphin.java.patch | 0 .../net/minecraft/world/entity/animal/Fox.java.patch | 0 .../net/minecraft/world/entity/animal/IronGolem.java.patch | 0 .../net/minecraft/world/entity/animal/MushroomCow.java.patch | 0 .../net/minecraft/world/entity/animal/Ocelot.java.patch | 0 .../net/minecraft/world/entity/animal/Parrot.java.patch | 0 .../net/minecraft/world/entity/animal/Pig.java.patch | 0 .../net/minecraft/world/entity/animal/PolarBear.java.patch | 0 .../net/minecraft/world/entity/animal/Rabbit.java.patch | 0 .../net/minecraft/world/entity/animal/SnowGolem.java.patch | 0 .../net/minecraft/world/entity/animal/Squid.java.patch | 0 .../net/minecraft/world/entity/animal/WaterAnimal.java.patch | 0 .../net/minecraft/world/entity/animal/goat/Goat.java.patch | 0 .../net/minecraft/world/entity/animal/horse/Llama.java.patch | 0 .../net/minecraft/world/entity/animal/wolf/Wolf.java.patch | 0 .../minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch | 0 .../world/entity/boss/enderdragon/EnderDragon.java.patch | 0 .../net/minecraft/world/entity/boss/wither/WitherBoss.java.patch | 0 .../net/minecraft/world/entity/decoration/ArmorStand.java.patch | 0 .../net/minecraft/world/entity/item/ItemEntity.java.patch | 0 .../net/minecraft/world/entity/item/PrimedTnt.java.patch | 0 .../minecraft/world/entity/monster/AbstractSkeleton.java.patch | 0 .../net/minecraft/world/entity/monster/Creeper.java.patch | 0 .../net/minecraft/world/entity/monster/Drowned.java.patch | 0 .../net/minecraft/world/entity/monster/EnderMan.java.patch | 0 .../net/minecraft/world/entity/monster/Endermite.java.patch | 0 .../net/minecraft/world/entity/monster/Monster.java.patch | 0 .../net/minecraft/world/entity/monster/Phantom.java.patch | 0 .../net/minecraft/world/entity/monster/Ravager.java.patch | 0 .../net/minecraft/world/entity/monster/Shulker.java.patch | 0 .../net/minecraft/world/entity/monster/Skeleton.java.patch | 0 .../net/minecraft/world/entity/monster/Strider.java.patch | 0 .../net/minecraft/world/entity/monster/Vindicator.java.patch | 0 .../net/minecraft/world/entity/monster/Zombie.java.patch | 0 .../net/minecraft/world/entity/monster/ZombieVillager.java.patch | 0 .../net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch | 0 .../net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch | 0 .../net/minecraft/world/entity/npc/CatSpawner.java.patch | 0 .../net/minecraft/world/entity/npc/Villager.java.patch | 0 .../net/minecraft/world/entity/npc/WanderingTrader.java.patch | 0 .../minecraft/world/entity/npc/WanderingTraderSpawner.java.patch | 0 .../net/minecraft/world/entity/player/Player.java.patch | 0 .../minecraft/world/entity/projectile/AbstractArrow.java.patch | 0 .../net/minecraft/world/entity/projectile/Snowball.java.patch | 0 .../minecraft/world/entity/projectile/ThrownEnderpearl.java.patch | 0 .../minecraft/world/entity/projectile/ThrownTrident.java.patch | 0 .../net/minecraft/world/entity/projectile/WitherSkull.java.patch | 0 .../net/minecraft/world/entity/raid/Raids.java.patch | 0 .../net/minecraft/world/entity/vehicle/AbstractBoat.java.patch | 0 .../minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch | 0 .../minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch | 0 .../net/minecraft/world/food/FoodData.java.patch | 0 .../net/minecraft/world/food/FoodProperties.java.patch | 0 .../minecraft/world/inventory/AbstractContainerMenu.java.patch | 0 .../net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch | 0 .../net/minecraft/world/inventory/AnvilMenu.java.patch | 0 .../net/minecraft/world/inventory/ArmorSlot.java.patch | 0 .../net/minecraft/world/inventory/EnchantmentMenu.java.patch | 0 .../net/minecraft/world/inventory/GrindstoneMenu.java.patch | 0 .../net/minecraft/world/inventory/ItemCombinerMenu.java.patch | 0 .../net/minecraft/world/item/AxeItem.java.patch | 0 .../net/minecraft/world/item/BlockItem.java.patch | 0 .../net/minecraft/world/item/BowItem.java.patch | 0 .../net/minecraft/world/item/BucketItem.java.patch | 0 .../net/minecraft/world/item/CrossbowItem.java.patch | 0 .../net/minecraft/world/item/DyeColor.java.patch | 0 .../net/minecraft/world/item/EggItem.java.patch | 0 .../net/minecraft/world/item/EndCrystalItem.java.patch | 0 .../net/minecraft/world/item/EnderpearlItem.java.patch | 0 .../net/minecraft/world/item/HoeItem.java.patch | 0 .../net/minecraft/world/item/ItemStack.java.patch | 0 .../net/minecraft/world/item/Items.java.patch | 0 .../net/minecraft/world/item/MapItem.java.patch | 0 .../net/minecraft/world/item/NameTagItem.java.patch | 0 .../net/minecraft/world/item/ProjectileWeaponItem.java.patch | 0 .../net/minecraft/world/item/ShovelItem.java.patch | 0 .../net/minecraft/world/item/SnowballItem.java.patch | 0 .../net/minecraft/world/item/SpawnEggItem.java.patch | 0 .../net/minecraft/world/item/ThrowablePotionItem.java.patch | 0 .../net/minecraft/world/item/TridentItem.java.patch | 0 .../consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch | 0 .../net/minecraft/world/item/crafting/Ingredient.java.patch | 0 .../minecraft/world/item/enchantment/EnchantmentHelper.java.patch | 0 .../minecraft/world/item/enchantment/ItemEnchantments.java.patch | 0 .../net/minecraft/world/item/trading/MerchantOffer.java.patch | 0 .../net/minecraft/world/level/BaseSpawner.java.patch | 0 .../net/minecraft/world/level/EntityGetter.java.patch | 0 .../net/minecraft/world/level/Level.java.patch | 0 .../net/minecraft/world/level/NaturalSpawner.java.patch | 0 .../net/minecraft/world/level/ServerExplosion.java.patch | 0 .../net/minecraft/world/level/block/AnvilBlock.java.patch | 0 .../net/minecraft/world/level/block/AzaleaBlock.java.patch | 0 .../world/level/block/BaseCoralPlantTypeBlock.java.patch | 0 .../net/minecraft/world/level/block/BedBlock.java.patch | 0 .../net/minecraft/world/level/block/BigDripleafBlock.java.patch | 0 .../net/minecraft/world/level/block/Block.java.patch | 0 .../net/minecraft/world/level/block/Blocks.java.patch | 0 .../net/minecraft/world/level/block/BubbleColumnBlock.java.patch | 0 .../net/minecraft/world/level/block/CactusBlock.java.patch | 0 .../net/minecraft/world/level/block/CakeBlock.java.patch | 0 .../net/minecraft/world/level/block/CampfireBlock.java.patch | 0 .../net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch | 0 .../net/minecraft/world/level/block/CauldronBlock.java.patch | 0 .../net/minecraft/world/level/block/CaveVinesBlock.java.patch | 0 .../minecraft/world/level/block/ChangeOverTimeBlock.java.patch | 0 .../net/minecraft/world/level/block/ChestBlock.java.patch | 0 .../net/minecraft/world/level/block/ComposterBlock.java.patch | 0 .../net/minecraft/world/level/block/CoralBlock.java.patch | 0 .../net/minecraft/world/level/block/CropBlock.java.patch | 0 .../net/minecraft/world/level/block/DoorBlock.java.patch | 0 .../net/minecraft/world/level/block/DragonEggBlock.java.patch | 0 .../minecraft/world/level/block/EnchantingTableBlock.java.patch | 0 .../net/minecraft/world/level/block/FarmBlock.java.patch | 0 .../minecraft/world/level/block/GrowingPlantHeadBlock.java.patch | 0 .../net/minecraft/world/level/block/HayBlock.java.patch | 0 .../net/minecraft/world/level/block/IceBlock.java.patch | 0 .../net/minecraft/world/level/block/KelpBlock.java.patch | 0 .../net/minecraft/world/level/block/LiquidBlock.java.patch | 0 .../net/minecraft/world/level/block/MagmaBlock.java.patch | 0 .../net/minecraft/world/level/block/NetherPortalBlock.java.patch | 0 .../net/minecraft/world/level/block/NetherWartBlock.java.patch | 0 .../net/minecraft/world/level/block/NoteBlock.java.patch | 0 .../net/minecraft/world/level/block/ObserverBlock.java.patch | 0 .../minecraft/world/level/block/PointedDripstoneBlock.java.patch | 0 .../net/minecraft/world/level/block/PoweredRailBlock.java.patch | 0 .../net/minecraft/world/level/block/RespawnAnchorBlock.java.patch | 0 .../net/minecraft/world/level/block/SculkShriekerBlock.java.patch | 0 .../net/minecraft/world/level/block/SlabBlock.java.patch | 0 .../net/minecraft/world/level/block/SnowLayerBlock.java.patch | 0 .../net/minecraft/world/level/block/SpawnerBlock.java.patch | 0 .../net/minecraft/world/level/block/SpongeBlock.java.patch | 0 .../net/minecraft/world/level/block/StonecutterBlock.java.patch | 0 .../net/minecraft/world/level/block/SugarCaneBlock.java.patch | 0 .../net/minecraft/world/level/block/TurtleEggBlock.java.patch | 0 .../net/minecraft/world/level/block/TwistingVinesBlock.java.patch | 0 .../net/minecraft/world/level/block/VegetationBlock.java.patch | 0 .../net/minecraft/world/level/block/WeepingVinesBlock.java.patch | 0 .../net/minecraft/world/level/block/WitherSkullBlock.java.patch | 0 .../level/block/entity/AbstractFurnaceBlockEntity.java.patch | 0 .../world/level/block/entity/BeaconBlockEntity.java.patch | 0 .../world/level/block/entity/BeehiveBlockEntity.java.patch | 0 .../net/minecraft/world/level/block/entity/BlockEntity.java.patch | 0 .../world/level/block/entity/ConduitBlockEntity.java.patch | 0 .../level/block/entity/EnchantingTableBlockEntity.java.patch | 0 .../minecraft/world/level/block/entity/SignBlockEntity.java.patch | 0 .../world/level/block/piston/PistonStructureResolver.java.patch | 0 .../minecraft/world/level/chunk/storage/EntityStorage.java.patch | 0 .../world/level/chunk/storage/RegionFileStorage.java.patch | 0 .../minecraft/world/level/levelgen/DensityFunctions.java.patch | 0 .../net/minecraft/world/level/levelgen/PhantomSpawner.java.patch | 0 .../net/minecraft/world/level/material/FlowingFluid.java.patch | 0 .../net/minecraft/world/level/material/LavaFluid.java.patch | 0 .../net/minecraft/world/level/material/WaterFluid.java.patch | 0 .../minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch | 0 .../net/minecraft/world/level/portal/PortalShape.java.patch | 0 .../world/level/saveddata/maps/MapItemSavedData.java.patch | 0 .../loot/functions/EnchantedCountIncreaseFunction.java.patch | 0 .../net/minecraft/world/phys/AABB.java.patch | 0 .../{features => unapplied-features}/0001-Rebrand.patch | 0 .../{features => unapplied-features}/0002-Ridables.patch | 0 .../0003-Barrels-and-enderchests-6-rows.patch | 0 .../0004-Add-EntityTeleportHinderedEvent.patch | 0 .../0005-API-for-any-mob-to-burn-daylight.patch | 0 .../src/main/java/com/destroystokyo/paper/Metrics.java.patch | 0 .../java/com/destroystokyo/paper/PaperVersionFetcher.java.patch | 0 .../java/com/destroystokyo/paper/console/PaperConsole.java.patch | 0 .../com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch | 0 .../main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch | 0 .../src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch | 0 .../java/io/papermc/paper/command/PaperPluginsCommand.java.patch | 0 .../main/java/io/papermc/paper/logging/SysoutCatcher.java.patch | 0 .../java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch | 0 .../src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch | 0 .../src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch | 0 .../src/main/java/org/bukkit/craftbukkit/Main.java.patch | 0 .../java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch | 0 .../java/org/bukkit/craftbukkit/block/CraftConduit.java.patch | 0 .../craftbukkit/command/CraftConsoleCommandSender.java.patch | 0 .../java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch | 0 .../java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch | 0 .../org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch | 0 .../java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch | 0 .../main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch | 0 .../org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch | 0 .../main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch | 0 .../java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch | 0 .../java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch | 0 .../java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch | 0 .../java/org/bukkit/craftbukkit/entity/CraftWither.java.patch | 0 .../main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch | 0 .../bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch | 0 .../org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch | 0 .../java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch | 0 .../bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch | 0 .../java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch | 0 .../org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch | 0 .../java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch | 0 .../org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch | 0 .../java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch | 0 .../main/java/org/bukkit/craftbukkit/util/Versioning.java.patch | 0 .../craftbukkit/util/permissions/CommandPermissions.java.patch | 0 .../src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch | 0 .../src/main/java/org/spigotmc/WatchdogThread.java.patch | 0 .../src/main/resources/log4j2.xml.patch | 0 .../paper/permissions/MinecraftCommandPermissionsTest.java.patch | 0 332 files changed, 0 insertions(+), 0 deletions(-) rename purpur-api/paper-patches/{features => unapplied-features}/0001-Rebrand.patch (100%) rename purpur-api/paper-patches/{features => unapplied-features}/0002-Purpur-config-files.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/co/aikar/timings/TimedEventExecutor.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/co/aikar/timings/Timing.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/co/aikar/timings/Timings.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/co/aikar/timings/TimingsCommand.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/Bukkit.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/ChatColor.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/Material.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/OfflinePlayer.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/Server.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/World.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/block/EntityBlockStorage.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/command/SimpleCommandMap.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/entity/Endermite.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/entity/Entity.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/entity/IronGolem.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/entity/Item.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/entity/LivingEntity.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/entity/Llama.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/entity/Player.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/entity/Snowman.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/entity/Villager.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/entity/Wither.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/entity/Wolf.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/event/inventory/InventoryType.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/inventory/AnvilInventory.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/inventory/ItemStack.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/inventory/RecipeChoice.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/inventory/view/AnvilView.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/map/MapRenderer.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/permissions/PermissibleBase.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/util/permissions/CommandPermissions.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java.patch (100%) rename purpur-api/paper-patches/{files => unapplied-files}/src/main/java/org/spigotmc/CustomTimingsHandler.java.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0001-Ridables.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0002-Configurable-entity-base-attributes.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0003-Barrels-and-enderchests-6-rows.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0004-Giants-AI-settings.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0005-Chickens-can-retaliate.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0006-Minecart-settings-and-WASD-controls.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0007-Villagers-follow-emerald-blocks.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0008-Implement-elytra-settings.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0009-Configurable-jockey-options.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0011-Phantoms-burn-in-light.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0012-Make-entity-breeding-times-configurable.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0015-Add-mobGriefing-override-to-everything-affected.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0016-Add-EntityTeleportHinderedEvent.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0017-Toggle-for-water-sensitive-mob-damage.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0018-API-for-any-mob-to-burn-daylight.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0019-Cows-naturally-aggressive-to-players-chance.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0020-Mobs-always-drop-experience.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/io/papermc/paper/entity/activation/ActivationRange.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/CrashReport.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/commands/CommandSourceStack.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/commands/Commands.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/commands/arguments/selector/EntitySelector.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/core/BlockPos.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/gametest/framework/GameTestHelper.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/network/Connection.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/network/chat/SignedMessageChain.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/Main.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/MinecraftServer.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/PlayerAdvancements.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/commands/EnchantCommand.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/commands/GameModeCommand.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/commands/GiveCommand.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/dedicated/DedicatedServer.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/gui/MinecraftServerGui.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/gui/StatsComponent.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/level/ServerLevel.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/level/ServerPlayer.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/level/ServerPlayerGameMode.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/level/WorldGenRegion.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/players/PlayerList.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/players/SleepStatus.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/stats/ServerRecipeBook.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/util/StringUtil.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/damagesource/CombatRules.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/damagesource/CombatTracker.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/damagesource/DamageSource.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/damagesource/DamageSources.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/effect/HungerMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/effect/PoisonMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/effect/RegenerationMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/effect/SaturationMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/effect/WitherMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/Entity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/EntitySelector.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/EntityType.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ExperienceOrb.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/GlowSquid.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/LivingEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/Mob.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ambient/Bat.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/AbstractCow.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Animal.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Bee.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Cat.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Dolphin.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Fox.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/IronGolem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/MushroomCow.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Ocelot.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Parrot.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Pig.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/PolarBear.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Rabbit.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/SnowGolem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Squid.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/WaterAnimal.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/goat/Goat.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/horse/Llama.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/wolf/Wolf.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/decoration/ArmorStand.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/item/ItemEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/item/PrimedTnt.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Creeper.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Drowned.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/EnderMan.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Endermite.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Monster.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Phantom.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Ravager.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Shulker.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Skeleton.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Strider.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Vindicator.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Zombie.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/ZombieVillager.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/npc/CatSpawner.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/npc/Villager.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/npc/WanderingTrader.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/player/Player.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/projectile/AbstractArrow.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/projectile/Snowball.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/projectile/ThrownTrident.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/projectile/WitherSkull.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/raid/Raids.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/food/FoodData.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/food/FoodProperties.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/inventory/AbstractContainerMenu.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/inventory/AnvilMenu.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/inventory/ArmorSlot.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/inventory/EnchantmentMenu.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/inventory/GrindstoneMenu.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/inventory/ItemCombinerMenu.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/AxeItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/BlockItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/BowItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/BucketItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/CrossbowItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/DyeColor.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/EggItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/EndCrystalItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/EnderpearlItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/HoeItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/ItemStack.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/Items.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/MapItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/NameTagItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/ProjectileWeaponItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/ShovelItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/SnowballItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/SpawnEggItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/ThrowablePotionItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/TridentItem.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/crafting/Ingredient.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/trading/MerchantOffer.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/BaseSpawner.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/EntityGetter.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/Level.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/NaturalSpawner.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/ServerExplosion.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/AnvilBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/AzaleaBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/BedBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/BigDripleafBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/Block.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/Blocks.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/BubbleColumnBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/CactusBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/CakeBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/CampfireBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/CauldronBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/CaveVinesBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/ChestBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/ComposterBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/CoralBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/CropBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/DoorBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/DragonEggBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/EnchantingTableBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/FarmBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/HayBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/IceBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/KelpBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/LiquidBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/MagmaBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/NetherPortalBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/NetherWartBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/NoteBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/ObserverBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/PoweredRailBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/SculkShriekerBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/SlabBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/SnowLayerBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/SpawnerBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/SpongeBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/StonecutterBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/SugarCaneBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/TurtleEggBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/TwistingVinesBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/VegetationBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/WeepingVinesBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/WitherSkullBlock.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/entity/BlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/levelgen/DensityFunctions.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/material/FlowingFluid.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/material/LavaFluid.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/material/WaterFluid.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/portal/PortalShape.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/phys/AABB.java.patch (100%) rename purpur-server/paper-patches/{features => unapplied-features}/0001-Rebrand.patch (100%) rename purpur-server/paper-patches/{features => unapplied-features}/0002-Ridables.patch (100%) rename purpur-server/paper-patches/{features => unapplied-features}/0003-Barrels-and-enderchests-6-rows.patch (100%) rename purpur-server/paper-patches/{features => unapplied-features}/0004-Add-EntityTeleportHinderedEvent.patch (100%) rename purpur-server/paper-patches/{features => unapplied-features}/0005-API-for-any-mob-to-burn-daylight.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/com/destroystokyo/paper/Metrics.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/Main.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/java/org/spigotmc/WatchdogThread.java.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/main/resources/log4j2.xml.patch (100%) rename purpur-server/paper-patches/{files => unapplied-files}/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch (100%) diff --git a/purpur-api/paper-patches/features/0001-Rebrand.patch b/purpur-api/paper-patches/unapplied-features/0001-Rebrand.patch similarity index 100% rename from purpur-api/paper-patches/features/0001-Rebrand.patch rename to purpur-api/paper-patches/unapplied-features/0001-Rebrand.patch diff --git a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch b/purpur-api/paper-patches/unapplied-features/0002-Purpur-config-files.patch similarity index 100% rename from purpur-api/paper-patches/features/0002-Purpur-config-files.patch rename to purpur-api/paper-patches/unapplied-features/0002-Purpur-config-files.patch diff --git a/purpur-api/paper-patches/files/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java.patch b/purpur-api/paper-patches/unapplied-files/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java.patch rename to purpur-api/paper-patches/unapplied-files/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/co/aikar/timings/TimedEventExecutor.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/co/aikar/timings/TimedEventExecutor.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/co/aikar/timings/TimedEventExecutor.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/co/aikar/timings/TimedEventExecutor.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/co/aikar/timings/Timing.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/co/aikar/timings/Timing.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/co/aikar/timings/Timing.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/co/aikar/timings/Timing.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/co/aikar/timings/Timings.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/co/aikar/timings/Timings.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/co/aikar/timings/Timings.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/co/aikar/timings/Timings.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/co/aikar/timings/TimingsCommand.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/co/aikar/timings/TimingsCommand.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/co/aikar/timings/TimingsCommand.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/co/aikar/timings/TimingsCommand.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/Bukkit.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/Bukkit.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/ChatColor.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/ChatColor.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/ChatColor.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/ChatColor.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/Material.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/Material.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/OfflinePlayer.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/OfflinePlayer.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/Server.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/Server.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/World.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/World.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/block/EntityBlockStorage.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/block/EntityBlockStorage.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/block/EntityBlockStorage.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/block/EntityBlockStorage.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/command/SimpleCommandMap.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/command/SimpleCommandMap.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/command/SimpleCommandMap.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/command/SimpleCommandMap.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Endermite.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Endermite.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Endermite.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Endermite.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Entity.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Entity.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/IronGolem.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/IronGolem.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/IronGolem.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/IronGolem.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Item.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Item.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Item.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Item.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/LivingEntity.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/LivingEntity.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Llama.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Llama.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Llama.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Llama.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Player.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Player.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Snowman.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Snowman.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Snowman.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Snowman.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Villager.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Villager.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wither.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Wither.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wither.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Wither.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Wolf.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Wolf.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/inventory/InventoryType.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/event/inventory/InventoryType.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/event/inventory/InventoryType.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/event/inventory/InventoryType.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/AnvilInventory.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/inventory/AnvilInventory.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/AnvilInventory.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/inventory/AnvilInventory.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/inventory/ItemStack.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/inventory/ItemStack.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/RecipeChoice.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/inventory/RecipeChoice.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/RecipeChoice.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/inventory/RecipeChoice.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/view/AnvilView.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/inventory/view/AnvilView.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/view/AnvilView.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/inventory/view/AnvilView.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/map/MapRenderer.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/map/MapRenderer.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/map/MapRenderer.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/map/MapRenderer.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/permissions/PermissibleBase.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/permissions/PermissibleBase.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/permissions/PermissibleBase.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/permissions/PermissibleBase.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/util/permissions/CommandPermissions.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/util/permissions/CommandPermissions.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/util/permissions/CommandPermissions.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/util/permissions/CommandPermissions.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/spigotmc/CustomTimingsHandler.java.patch b/purpur-api/paper-patches/unapplied-files/src/main/java/org/spigotmc/CustomTimingsHandler.java.patch similarity index 100% rename from purpur-api/paper-patches/files/src/main/java/org/spigotmc/CustomTimingsHandler.java.patch rename to purpur-api/paper-patches/unapplied-files/src/main/java/org/spigotmc/CustomTimingsHandler.java.patch diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/unapplied-features/0001-Ridables.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0001-Ridables.patch rename to purpur-server/minecraft-patches/unapplied-features/0001-Ridables.patch diff --git a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch b/purpur-server/minecraft-patches/unapplied-features/0002-Configurable-entity-base-attributes.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch rename to purpur-server/minecraft-patches/unapplied-features/0002-Configurable-entity-base-attributes.patch diff --git a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/minecraft-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch rename to purpur-server/minecraft-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch diff --git a/purpur-server/minecraft-patches/features/0004-Giants-AI-settings.patch b/purpur-server/minecraft-patches/unapplied-features/0004-Giants-AI-settings.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0004-Giants-AI-settings.patch rename to purpur-server/minecraft-patches/unapplied-features/0004-Giants-AI-settings.patch diff --git a/purpur-server/minecraft-patches/features/0005-Chickens-can-retaliate.patch b/purpur-server/minecraft-patches/unapplied-features/0005-Chickens-can-retaliate.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0005-Chickens-can-retaliate.patch rename to purpur-server/minecraft-patches/unapplied-features/0005-Chickens-can-retaliate.patch diff --git a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch b/purpur-server/minecraft-patches/unapplied-features/0006-Minecart-settings-and-WASD-controls.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch rename to purpur-server/minecraft-patches/unapplied-features/0006-Minecart-settings-and-WASD-controls.patch diff --git a/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch b/purpur-server/minecraft-patches/unapplied-features/0007-Villagers-follow-emerald-blocks.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch rename to purpur-server/minecraft-patches/unapplied-features/0007-Villagers-follow-emerald-blocks.patch diff --git a/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch b/purpur-server/minecraft-patches/unapplied-features/0008-Implement-elytra-settings.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch rename to purpur-server/minecraft-patches/unapplied-features/0008-Implement-elytra-settings.patch diff --git a/purpur-server/minecraft-patches/features/0009-Configurable-jockey-options.patch b/purpur-server/minecraft-patches/unapplied-features/0009-Configurable-jockey-options.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0009-Configurable-jockey-options.patch rename to purpur-server/minecraft-patches/unapplied-features/0009-Configurable-jockey-options.patch diff --git a/purpur-server/minecraft-patches/features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/purpur-server/minecraft-patches/unapplied-features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to purpur-server/minecraft-patches/unapplied-features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch diff --git a/purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch b/purpur-server/minecraft-patches/unapplied-features/0011-Phantoms-burn-in-light.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch rename to purpur-server/minecraft-patches/unapplied-features/0011-Phantoms-burn-in-light.patch diff --git a/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch b/purpur-server/minecraft-patches/unapplied-features/0012-Make-entity-breeding-times-configurable.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch rename to purpur-server/minecraft-patches/unapplied-features/0012-Make-entity-breeding-times-configurable.patch diff --git a/purpur-server/minecraft-patches/features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch b/purpur-server/minecraft-patches/unapplied-features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to purpur-server/minecraft-patches/unapplied-features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch diff --git a/purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/purpur-server/minecraft-patches/unapplied-features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to purpur-server/minecraft-patches/unapplied-features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch diff --git a/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch b/purpur-server/minecraft-patches/unapplied-features/0015-Add-mobGriefing-override-to-everything-affected.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch rename to purpur-server/minecraft-patches/unapplied-features/0015-Add-mobGriefing-override-to-everything-affected.patch diff --git a/purpur-server/minecraft-patches/features/0016-Add-EntityTeleportHinderedEvent.patch b/purpur-server/minecraft-patches/unapplied-features/0016-Add-EntityTeleportHinderedEvent.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0016-Add-EntityTeleportHinderedEvent.patch rename to purpur-server/minecraft-patches/unapplied-features/0016-Add-EntityTeleportHinderedEvent.patch diff --git a/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch b/purpur-server/minecraft-patches/unapplied-features/0017-Toggle-for-water-sensitive-mob-damage.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch rename to purpur-server/minecraft-patches/unapplied-features/0017-Toggle-for-water-sensitive-mob-damage.patch diff --git a/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/unapplied-features/0018-API-for-any-mob-to-burn-daylight.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch rename to purpur-server/minecraft-patches/unapplied-features/0018-API-for-any-mob-to-burn-daylight.patch diff --git a/purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch b/purpur-server/minecraft-patches/unapplied-features/0019-Cows-naturally-aggressive-to-players-chance.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch rename to purpur-server/minecraft-patches/unapplied-features/0019-Cows-naturally-aggressive-to-players-chance.patch diff --git a/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/unapplied-features/0020-Mobs-always-drop-experience.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch rename to purpur-server/minecraft-patches/unapplied-features/0020-Mobs-always-drop-experience.patch diff --git a/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch b/purpur-server/minecraft-patches/unapplied-sources/io/papermc/paper/entity/activation/ActivationRange.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/io/papermc/paper/entity/activation/ActivationRange.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/CrashReport.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/CrashReport.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/CommandSourceStack.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/CommandSourceStack.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/Commands.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/Commands.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/BlockPos.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/BlockPos.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/GameTestHelper.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/GameTestHelper.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/Connection.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/Connection.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/chat/SignedMessageChain.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/chat/SignedMessageChain.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/Main.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/Main.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/MinecraftServer.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/MinecraftServer.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/PlayerAdvancements.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/PlayerAdvancements.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/PlayerAdvancements.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/PlayerAdvancements.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/EnchantCommand.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/EnchantCommand.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GameModeCommand.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GameModeCommand.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GiveCommand.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GiveCommand.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServer.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServer.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/MinecraftServerGui.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/gui/MinecraftServerGui.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/gui/MinecraftServerGui.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/gui/MinecraftServerGui.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/gui/StatsComponent.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/gui/StatsComponent.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerLevel.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerLevel.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayer.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayer.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/WorldGenRegion.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/WorldGenRegion.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/PlayerList.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/PlayerList.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/SleepStatus.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/SleepStatus.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/stats/ServerRecipeBook.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/stats/ServerRecipeBook.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/util/StringUtil.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/util/StringUtil.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatRules.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatRules.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatTracker.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatTracker.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSource.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSource.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSources.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSources.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/HungerMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/HungerMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/PoisonMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/PoisonMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/SaturationMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/SaturationMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/WitherMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/WitherMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Entity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Entity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntitySelector.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntitySelector.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntityType.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntityType.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ExperienceOrb.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ExperienceOrb.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/GlowSquid.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/GlowSquid.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/LivingEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/LivingEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Mob.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Mob.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ambient/Bat.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ambient/Bat.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/AbstractCow.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/AbstractCow.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Animal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Animal.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Bee.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Bee.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Cat.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Cat.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Dolphin.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Dolphin.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Fox.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Fox.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/IronGolem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/IronGolem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/MushroomCow.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/MushroomCow.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Ocelot.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Ocelot.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Parrot.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Parrot.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Pig.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Pig.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/PolarBear.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/PolarBear.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Rabbit.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Rabbit.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/SnowGolem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/SnowGolem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Squid.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Squid.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/goat/Goat.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/goat/Goat.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/horse/Llama.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/horse/Llama.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/ItemEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/ItemEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/PrimedTnt.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/PrimedTnt.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Creeper.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Creeper.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Drowned.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Drowned.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/EnderMan.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/EnderMan.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Endermite.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Endermite.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Monster.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Monster.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Phantom.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Phantom.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Ravager.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Ravager.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Shulker.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Shulker.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Skeleton.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Skeleton.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Strider.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Strider.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Vindicator.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Vindicator.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Zombie.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Zombie.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/CatSpawner.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/CatSpawner.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/Villager.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/Villager.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/player/Player.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/player/Player.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/Snowball.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/Snowball.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/raid/Raids.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/raid/Raids.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodData.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodData.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodProperties.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodProperties.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AnvilMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AnvilMenu.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ArmorSlot.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ArmorSlot.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/AxeItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/AxeItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BlockItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BlockItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BowItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BowItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BucketItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BucketItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/CrossbowItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/CrossbowItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/DyeColor.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/DyeColor.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EggItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EggItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EndCrystalItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EndCrystalItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EnderpearlItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EnderpearlItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/HoeItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/HoeItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ItemStack.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ItemStack.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/Items.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/Items.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/MapItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/MapItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/NameTagItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/NameTagItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ShovelItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ShovelItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SnowballItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SnowballItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SpawnEggItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SpawnEggItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ThrowablePotionItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ThrowablePotionItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/TridentItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/TridentItem.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/crafting/Ingredient.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/crafting/Ingredient.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/trading/MerchantOffer.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/trading/MerchantOffer.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/BaseSpawner.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/BaseSpawner.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/EntityGetter.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/EntityGetter.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/Level.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/Level.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/NaturalSpawner.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/NaturalSpawner.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/ServerExplosion.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/ServerExplosion.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AnvilBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AnvilBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AzaleaBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AzaleaBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BedBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BedBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Block.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Block.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Blocks.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Blocks.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CactusBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CactusBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CakeBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CakeBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CampfireBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CampfireBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CauldronBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CauldronBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChestBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChestBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ComposterBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ComposterBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CoralBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CoralBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CropBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CropBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DoorBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DoorBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DragonEggBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DragonEggBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/FarmBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/FarmBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/HayBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/HayBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/IceBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/IceBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/KelpBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/KelpBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/LiquidBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/LiquidBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/MagmaBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/MagmaBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherWartBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherWartBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NoteBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NoteBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ObserverBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ObserverBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SlabBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SlabBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpawnerBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpawnerBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpongeBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpongeBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/StonecutterBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/StonecutterBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/VegetationBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/VegetationBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/FlowingFluid.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/FlowingFluid.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/LavaFluid.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/LavaFluid.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/WaterFluid.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/WaterFluid.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/portal/PortalShape.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/portal/PortalShape.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/phys/AABB.java.patch similarity index 100% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/phys/AABB.java.patch diff --git a/purpur-server/paper-patches/features/0001-Rebrand.patch b/purpur-server/paper-patches/unapplied-features/0001-Rebrand.patch similarity index 100% rename from purpur-server/paper-patches/features/0001-Rebrand.patch rename to purpur-server/paper-patches/unapplied-features/0001-Rebrand.patch diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/unapplied-features/0002-Ridables.patch similarity index 100% rename from purpur-server/paper-patches/features/0002-Ridables.patch rename to purpur-server/paper-patches/unapplied-features/0002-Ridables.patch diff --git a/purpur-server/paper-patches/features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/paper-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch similarity index 100% rename from purpur-server/paper-patches/features/0003-Barrels-and-enderchests-6-rows.patch rename to purpur-server/paper-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch diff --git a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/unapplied-features/0004-Add-EntityTeleportHinderedEvent.patch similarity index 100% rename from purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch rename to purpur-server/paper-patches/unapplied-features/0004-Add-EntityTeleportHinderedEvent.patch diff --git a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/unapplied-features/0005-API-for-any-mob-to-burn-daylight.patch similarity index 100% rename from purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch rename to purpur-server/paper-patches/unapplied-features/0005-API-for-any-mob-to-burn-daylight.patch diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/Metrics.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/Metrics.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/Main.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/Main.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch diff --git a/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch b/purpur-server/paper-patches/unapplied-files/src/main/java/org/spigotmc/WatchdogThread.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch rename to purpur-server/paper-patches/unapplied-files/src/main/java/org/spigotmc/WatchdogThread.java.patch diff --git a/purpur-server/paper-patches/files/src/main/resources/log4j2.xml.patch b/purpur-server/paper-patches/unapplied-files/src/main/resources/log4j2.xml.patch similarity index 100% rename from purpur-server/paper-patches/files/src/main/resources/log4j2.xml.patch rename to purpur-server/paper-patches/unapplied-files/src/main/resources/log4j2.xml.patch diff --git a/purpur-server/paper-patches/files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch b/purpur-server/paper-patches/unapplied-files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch similarity index 100% rename from purpur-server/paper-patches/files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch rename to purpur-server/paper-patches/unapplied-files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch From 95952b3056f4929af5c73964a46e0c1df47d9a7c Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 28 May 2025 19:53:01 -0700 Subject: [PATCH 105/289] api patches \o/ --- gradle.properties | 6 +++--- .../0001-Rebrand.patch | 0 .../0002-Purpur-config-files.patch | 0 .../paper/entity/ai/VanillaGoal.java.patch | 0 .../aikar/timings/TimedEventExecutor.java.patch | 0 .../main/java/co/aikar/timings/Timing.java.patch | 0 .../java/co/aikar/timings/Timings.java.patch | 0 .../co/aikar/timings/TimingsCommand.java.patch | 0 .../paper/util/VersionFetcher.java.patch | 0 .../src/main/java/org/bukkit/Bukkit.java.patch | 0 .../main/java/org/bukkit/ChatColor.java.patch | 0 .../src/main/java/org/bukkit/Material.java.patch | 0 .../java/org/bukkit/OfflinePlayer.java.patch | 0 .../src/main/java/org/bukkit/Server.java.patch | 0 .../src/main/java/org/bukkit/World.java.patch | 0 .../bukkit/block/EntityBlockStorage.java.patch | 0 .../bukkit/command/SimpleCommandMap.java.patch | 0 .../command/defaults/VersionCommand.java.patch | 0 .../enchantments/EnchantmentTarget.java.patch | 0 .../java/org/bukkit/entity/Endermite.java.patch | 0 .../java/org/bukkit/entity/Entity.java.patch | 0 .../java/org/bukkit/entity/IronGolem.java.patch | 0 .../main/java/org/bukkit/entity/Item.java.patch | 0 .../org/bukkit/entity/LivingEntity.java.patch | 0 .../main/java/org/bukkit/entity/Llama.java.patch | 0 .../java/org/bukkit/entity/Player.java.patch | 0 .../java/org/bukkit/entity/Snowman.java.patch | 0 .../java/org/bukkit/entity/Villager.java.patch | 0 .../java/org/bukkit/entity/Wither.java.patch | 0 .../main/java/org/bukkit/entity/Wolf.java.patch | 0 .../event/entity/EntityDamageEvent.java.patch | 0 .../entity/EntityPotionEffectEvent.java.patch | 0 .../event/inventory/InventoryType.java.patch | 0 .../bukkit/inventory/AnvilInventory.java.patch | 0 .../org/bukkit/inventory/ItemStack.java.patch | 0 .../org/bukkit/inventory/RecipeChoice.java.patch | 0 .../bukkit/inventory/view/AnvilView.java.patch | 0 .../java/org/bukkit/map/MapRenderer.java.patch | 0 .../permissions/PermissibleBase.java.patch | 0 .../plugin/java/JavaPluginLoader.java.patch | 0 .../bukkit/plugin/java/LibraryLoader.java.patch | 0 .../permissions/CommandPermissions.java.patch | 0 .../permissions/DefaultPermissions.java.patch | 0 .../org/spigotmc/CustomTimingsHandler.java.patch | 0 purpur-server/build.gradle.kts.patch | 16 +++++++++------- 45 files changed, 12 insertions(+), 10 deletions(-) rename purpur-api/paper-patches/{unapplied-features => features}/0001-Rebrand.patch (100%) rename purpur-api/paper-patches/{unapplied-features => features}/0002-Purpur-config-files.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/co/aikar/timings/TimedEventExecutor.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/co/aikar/timings/Timing.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/co/aikar/timings/Timings.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/co/aikar/timings/TimingsCommand.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/Bukkit.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/ChatColor.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/Material.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/OfflinePlayer.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/Server.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/World.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/block/EntityBlockStorage.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/command/SimpleCommandMap.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/entity/Endermite.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/entity/Entity.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/entity/IronGolem.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/entity/Item.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/entity/LivingEntity.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/entity/Llama.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/entity/Player.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/entity/Snowman.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/entity/Villager.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/entity/Wither.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/entity/Wolf.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/event/inventory/InventoryType.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/inventory/AnvilInventory.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/inventory/ItemStack.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/inventory/RecipeChoice.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/inventory/view/AnvilView.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/map/MapRenderer.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/permissions/PermissibleBase.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/util/permissions/CommandPermissions.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java.patch (100%) rename purpur-api/paper-patches/{unapplied-files => files}/src/main/java/org/spigotmc/CustomTimingsHandler.java.patch (100%) diff --git a/gradle.properties b/gradle.properties index b1bdc18d1..87538ed74 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = org.purpurmc.purpur -version = 1.21.5-R0.1-SNAPSHOT +version = 1.21.6-R0.1-SNAPSHOT -mcVersion = 1.21.5 -paperCommit = 47650100837178e2852bdb50d8c9c6f0cc0bb2e0 +mcVersion = 1.21.6-pre1 +paperCommit = 0795cbed2563d0ba693a8eec8754cffa62b52756 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/unapplied-features/0001-Rebrand.patch b/purpur-api/paper-patches/features/0001-Rebrand.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-features/0001-Rebrand.patch rename to purpur-api/paper-patches/features/0001-Rebrand.patch diff --git a/purpur-api/paper-patches/unapplied-features/0002-Purpur-config-files.patch b/purpur-api/paper-patches/features/0002-Purpur-config-files.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-features/0002-Purpur-config-files.patch rename to purpur-api/paper-patches/features/0002-Purpur-config-files.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java.patch b/purpur-api/paper-patches/files/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java.patch rename to purpur-api/paper-patches/files/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/co/aikar/timings/TimedEventExecutor.java.patch b/purpur-api/paper-patches/files/src/main/java/co/aikar/timings/TimedEventExecutor.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/co/aikar/timings/TimedEventExecutor.java.patch rename to purpur-api/paper-patches/files/src/main/java/co/aikar/timings/TimedEventExecutor.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/co/aikar/timings/Timing.java.patch b/purpur-api/paper-patches/files/src/main/java/co/aikar/timings/Timing.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/co/aikar/timings/Timing.java.patch rename to purpur-api/paper-patches/files/src/main/java/co/aikar/timings/Timing.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/co/aikar/timings/Timings.java.patch b/purpur-api/paper-patches/files/src/main/java/co/aikar/timings/Timings.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/co/aikar/timings/Timings.java.patch rename to purpur-api/paper-patches/files/src/main/java/co/aikar/timings/Timings.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/co/aikar/timings/TimingsCommand.java.patch b/purpur-api/paper-patches/files/src/main/java/co/aikar/timings/TimingsCommand.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/co/aikar/timings/TimingsCommand.java.patch rename to purpur-api/paper-patches/files/src/main/java/co/aikar/timings/TimingsCommand.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java.patch b/purpur-api/paper-patches/files/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java.patch rename to purpur-api/paper-patches/files/src/main/java/com/destroystokyo/paper/util/VersionFetcher.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/Bukkit.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/Bukkit.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/ChatColor.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/ChatColor.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/ChatColor.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/ChatColor.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/Material.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/Material.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/OfflinePlayer.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/OfflinePlayer.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/Server.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/Server.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/World.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/World.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/block/EntityBlockStorage.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/block/EntityBlockStorage.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/block/EntityBlockStorage.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/block/EntityBlockStorage.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/command/SimpleCommandMap.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/command/SimpleCommandMap.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/command/SimpleCommandMap.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/command/SimpleCommandMap.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/command/defaults/VersionCommand.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/enchantments/EnchantmentTarget.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Endermite.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Endermite.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Endermite.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Endermite.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Entity.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Entity.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/IronGolem.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/IronGolem.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/IronGolem.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/IronGolem.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Item.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Item.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Item.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Item.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/LivingEntity.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/LivingEntity.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/LivingEntity.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Llama.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Llama.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Llama.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Llama.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Player.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Player.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Snowman.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Snowman.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Snowman.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Snowman.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Villager.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Villager.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Wither.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wither.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Wither.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wither.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Wolf.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/entity/Wolf.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/event/entity/EntityPotionEffectEvent.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/event/inventory/InventoryType.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/event/inventory/InventoryType.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/event/inventory/InventoryType.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/event/inventory/InventoryType.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/inventory/AnvilInventory.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/AnvilInventory.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/inventory/AnvilInventory.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/AnvilInventory.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/inventory/ItemStack.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/inventory/ItemStack.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/inventory/RecipeChoice.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/RecipeChoice.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/inventory/RecipeChoice.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/RecipeChoice.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/inventory/view/AnvilView.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/view/AnvilView.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/inventory/view/AnvilView.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/view/AnvilView.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/map/MapRenderer.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/map/MapRenderer.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/map/MapRenderer.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/map/MapRenderer.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/permissions/PermissibleBase.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/permissions/PermissibleBase.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/permissions/PermissibleBase.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/permissions/PermissibleBase.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/util/permissions/CommandPermissions.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/util/permissions/CommandPermissions.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/util/permissions/CommandPermissions.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/util/permissions/CommandPermissions.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java.patch diff --git a/purpur-api/paper-patches/unapplied-files/src/main/java/org/spigotmc/CustomTimingsHandler.java.patch b/purpur-api/paper-patches/files/src/main/java/org/spigotmc/CustomTimingsHandler.java.patch similarity index 100% rename from purpur-api/paper-patches/unapplied-files/src/main/java/org/spigotmc/CustomTimingsHandler.java.patch rename to purpur-api/paper-patches/files/src/main/java/org/spigotmc/CustomTimingsHandler.java.patch diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index 6e782f80d..2dfb47467 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -11,7 +11,7 @@ plugins { `java-library` -@@ -20,6 +_,46 @@ +@@ -20,13 +_,65 @@ testRuntimeOnly("org.junit.platform:junit-platform-launcher") } @@ -58,10 +58,13 @@ paperweight { minecraftVersion = providers.gradleProperty("mcVersion") gitFilePatches = false -@@ -28,6 +_,18 @@ - // oldPaperCommit = "f4f275519f7c1fbe9db173b7144a4fe81440e365" - //} +- updatingMinecraft { +- oldPaperCommit = "a033e3b9ef78cfe85be807ac3fd1dd956274d4db" ++ //updatingMinecraft { ++ // oldPaperCommit = "a033e3b9ef78cfe85be807ac3fd1dd956274d4db" ++ //} ++ + // Purpur start - Rebrand + val purpur = forks.register("purpur") { + upstream.patchDir("paperServer") { @@ -70,13 +73,12 @@ + patchesDir = rootDirectory.dir("purpur-server/paper-patches") + outputDir = rootDirectory.dir("paper-server") + } -+ } + } + activeFork = purpur + // Purpur end - Rebrand -+ + spigot { buildDataRef = "702e1a0a5072b2c4082371d5228cb30525687efc" - packageVersion = "v1_21_R4" // also needs to be updated in MappingEnvironment @@ -108,7 +_,21 @@ } } From aa20c1ccf6ea4494e60794c8eda4ca71f12e550a Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 28 May 2025 20:00:01 -0700 Subject: [PATCH 106/289] paper server patches \o/ --- .../{unapplied-features => features}/0001-Rebrand.patch | 0 .../{unapplied-features => features}/0002-Ridables.patch | 6 +++--- .../0003-Barrels-and-enderchests-6-rows.patch | 0 .../0004-Add-EntityTeleportHinderedEvent.patch | 0 .../0005-API-for-any-mob-to-burn-daylight.patch | 0 .../main/java/com/destroystokyo/paper/Metrics.java.patch | 0 .../com/destroystokyo/paper/PaperVersionFetcher.java.patch | 0 .../com/destroystokyo/paper/console/PaperConsole.java.patch | 0 .../destroystokyo/paper/entity/ai/MobGoalHelper.java.patch | 0 .../java/com/destroystokyo/paper/gui/RAMDetails.java.patch | 0 .../java/io/papermc/paper/ServerBuildInfoImpl.java.patch | 0 .../io/papermc/paper/command/PaperPluginsCommand.java.patch | 0 .../java/io/papermc/paper/logging/SysoutCatcher.java.patch | 0 .../org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch | 0 .../main/java/org/bukkit/craftbukkit/CraftServer.java.patch | 0 .../main/java/org/bukkit/craftbukkit/CraftWorld.java.patch | 0 .../src/main/java/org/bukkit/craftbukkit/Main.java.patch | 0 .../org/bukkit/craftbukkit/block/CraftBeehive.java.patch | 0 .../org/bukkit/craftbukkit/block/CraftConduit.java.patch | 0 .../command/CraftConsoleCommandSender.java.patch | 0 .../org/bukkit/craftbukkit/entity/CraftEndermite.java.patch | 0 .../org/bukkit/craftbukkit/entity/CraftEntity.java.patch | 0 .../bukkit/craftbukkit/entity/CraftHumanEntity.java.patch | 0 .../org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch | 0 .../java/org/bukkit/craftbukkit/entity/CraftItem.java.patch | 0 .../bukkit/craftbukkit/entity/CraftLivingEntity.java.patch | 0 .../org/bukkit/craftbukkit/entity/CraftLlama.java.patch | 0 .../org/bukkit/craftbukkit/entity/CraftPlayer.java.patch | 0 .../org/bukkit/craftbukkit/entity/CraftSnowman.java.patch | 0 .../org/bukkit/craftbukkit/entity/CraftVillager.java.patch | 0 .../org/bukkit/craftbukkit/entity/CraftWither.java.patch | 0 .../java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch | 0 .../craftbukkit/inventory/CraftInventoryAnvil.java.patch | 0 .../bukkit/craftbukkit/inventory/CraftItemStack.java.patch | 0 .../org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch | 0 .../craftbukkit/inventory/view/CraftAnvilView.java.patch | 0 .../org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch | 0 .../bukkit/craftbukkit/legacy/MaterialRerouting.java.patch | 0 .../org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch | 0 .../bukkit/craftbukkit/scheduler/CraftScheduler.java.patch | 0 .../bukkit/craftbukkit/util/CraftMagicNumbers.java.patch | 0 .../java/org/bukkit/craftbukkit/util/Versioning.java.patch | 0 .../util/permissions/CommandPermissions.java.patch | 0 .../main/java/org/spigotmc/TicksPerSecondCommand.java.patch | 0 .../src/main/java/org/spigotmc/WatchdogThread.java.patch | 0 .../src/main/resources/log4j2.xml.patch | 0 .../permissions/MinecraftCommandPermissionsTest.java.patch | 0 47 files changed, 3 insertions(+), 3 deletions(-) rename purpur-server/paper-patches/{unapplied-features => features}/0001-Rebrand.patch (100%) rename purpur-server/paper-patches/{unapplied-features => features}/0002-Ridables.patch (92%) rename purpur-server/paper-patches/{unapplied-features => features}/0003-Barrels-and-enderchests-6-rows.patch (100%) rename purpur-server/paper-patches/{unapplied-features => features}/0004-Add-EntityTeleportHinderedEvent.patch (100%) rename purpur-server/paper-patches/{unapplied-features => features}/0005-API-for-any-mob-to-burn-daylight.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/com/destroystokyo/paper/Metrics.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/Main.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/java/org/spigotmc/WatchdogThread.java.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/main/resources/log4j2.xml.patch (100%) rename purpur-server/paper-patches/{unapplied-files => files}/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch (100%) diff --git a/purpur-server/paper-patches/unapplied-features/0001-Rebrand.patch b/purpur-server/paper-patches/features/0001-Rebrand.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-features/0001-Rebrand.patch rename to purpur-server/paper-patches/features/0001-Rebrand.patch diff --git a/purpur-server/paper-patches/unapplied-features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch similarity index 92% rename from purpur-server/paper-patches/unapplied-features/0002-Ridables.patch rename to purpur-server/paper-patches/features/0002-Ridables.patch index b0bba987c..3ad719453 100644 --- a/purpur-server/paper-patches/unapplied-features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -36,10 +36,10 @@ index f70cf786578b1467ec1e02ecea4844dca4277614..041fc1d4182834bda5de9b2172601a2a + // Purpur end - Ridables } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 6f86a505c99010eb80e76e2fbe36414fcde80a39..3a3fbbfa0b82092cd9ac8eab2d179fb9f590aec8 100644 +index 574f982a29e8a8ccdbedf65432a1d78928a4b807..e04b7e7d4d3e6e5edba7dbc72b4458174025024c 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -514,6 +514,15 @@ public class CraftEventFactory { +@@ -515,6 +515,15 @@ public class CraftEventFactory { } craftServer.getPluginManager().callEvent(event); @@ -55,7 +55,7 @@ index 6f86a505c99010eb80e76e2fbe36414fcde80a39..3a3fbbfa0b82092cd9ac8eab2d179fb9 return event; } -@@ -1046,6 +1055,7 @@ public class CraftEventFactory { +@@ -1047,6 +1056,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); diff --git a/purpur-server/paper-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/paper-patches/features/0003-Barrels-and-enderchests-6-rows.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch rename to purpur-server/paper-patches/features/0003-Barrels-and-enderchests-6-rows.patch diff --git a/purpur-server/paper-patches/unapplied-features/0004-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-features/0004-Add-EntityTeleportHinderedEvent.patch rename to purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch diff --git a/purpur-server/paper-patches/unapplied-features/0005-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-features/0005-API-for-any-mob-to-burn-daylight.patch rename to purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/Metrics.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/Metrics.java.patch rename to purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/Metrics.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch rename to purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch rename to purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/console/PaperConsole.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch rename to purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch rename to purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch rename to purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch rename to purpur-server/paper-patches/files/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch rename to purpur-server/paper-patches/files/src/main/java/io/papermc/paper/logging/SysoutCatcher.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/Main.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/Main.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/command/CraftConsoleCommandSender.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/map/CraftMapRenderer.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/Versioning.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/spigotmc/TicksPerSecondCommand.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/java/org/spigotmc/WatchdogThread.java.patch b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/java/org/spigotmc/WatchdogThread.java.patch rename to purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/main/resources/log4j2.xml.patch b/purpur-server/paper-patches/files/src/main/resources/log4j2.xml.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/main/resources/log4j2.xml.patch rename to purpur-server/paper-patches/files/src/main/resources/log4j2.xml.patch diff --git a/purpur-server/paper-patches/unapplied-files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch b/purpur-server/paper-patches/files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch similarity index 100% rename from purpur-server/paper-patches/unapplied-files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch rename to purpur-server/paper-patches/files/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java.patch From 4ff982a4c945d78d95903c5a887930372ddab696 Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 28 May 2025 20:20:54 -0700 Subject: [PATCH 107/289] apply the minecraft source files that we can rn --- .../net/minecraft/CrashReport.java.patch | 0 .../commands/arguments/selector/EntitySelector.java.patch | 0 .../net/minecraft/core/BlockPos.java.patch | 0 .../net/minecraft/core/dispenser/DispenseItemBehavior.java.patch | 0 .../core/dispenser/EquipmentDispenseItemBehavior.java.patch | 0 .../net/minecraft/gametest/framework/GameTestHelper.java.patch | 0 .../net/minecraft/network/Connection.java.patch | 0 .../net/minecraft/network/chat/SignedMessageChain.java.patch | 0 .../net/minecraft/server/MinecraftServer.java.patch | 0 .../net/minecraft/server/commands/EnchantCommand.java.patch | 0 .../net/minecraft/server/commands/GameModeCommand.java.patch | 0 .../net/minecraft/server/commands/GiveCommand.java.patch | 0 .../server/dedicated/DedicatedServerProperties.java.patch | 0 .../net/minecraft/server/gui/MinecraftServerGui.java.patch | 0 .../net/minecraft/server/gui/StatsComponent.java.patch | 0 .../net/minecraft/server/level/ServerPlayerGameMode.java.patch | 0 .../net/minecraft/server/level/WorldGenRegion.java.patch | 0 .../server/network/ServerLoginPacketListenerImpl.java.patch | 0 .../server/network/ServerStatusPacketListenerImpl.java.patch | 0 .../net/minecraft/server/players/SleepStatus.java.patch | 0 .../net/minecraft/stats/ServerRecipeBook.java.patch | 0 .../net/minecraft/util/StringUtil.java.patch | 0 .../net/minecraft/world/damagesource/CombatRules.java.patch | 0 .../net/minecraft/world/damagesource/CombatTracker.java.patch | 0 .../net/minecraft/world/damagesource/DamageSource.java.patch | 0 .../net/minecraft/world/damagesource/DamageSources.java.patch | 0 .../net/minecraft/world/effect/HungerMobEffect.java.patch | 0 .../net/minecraft/world/effect/PoisonMobEffect.java.patch | 0 .../net/minecraft/world/effect/RegenerationMobEffect.java.patch | 0 .../net/minecraft/world/effect/SaturationMobEffect.java.patch | 0 .../net/minecraft/world/effect/WitherMobEffect.java.patch | 0 .../net/minecraft/world/entity/EntitySelector.java.patch | 0 .../net/minecraft/world/entity/GlowSquid.java.patch | 0 .../world/entity/ai/attributes/RangedAttribute.java.patch | 0 .../world/entity/ai/behavior/InteractWithDoor.java.patch | 0 .../world/entity/ai/behavior/ShowTradesToPlayer.java.patch | 0 .../world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch | 0 .../minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch | 0 .../world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch | 0 .../net/minecraft/world/entity/ai/goal/SwellGoal.java.patch | 0 .../world/entity/ai/targeting/TargetingConditions.java.patch | 0 .../net/minecraft/world/entity/ambient/Bat.java.patch | 0 .../net/minecraft/world/entity/animal/AbstractCow.java.patch | 0 .../net/minecraft/world/entity/animal/Bee.java.patch | 0 .../net/minecraft/world/entity/animal/Cat.java.patch | 0 .../net/minecraft/world/entity/animal/Dolphin.java.patch | 0 .../net/minecraft/world/entity/animal/Fox.java.patch | 0 .../net/minecraft/world/entity/animal/MushroomCow.java.patch | 0 .../net/minecraft/world/entity/animal/Ocelot.java.patch | 0 .../net/minecraft/world/entity/animal/Parrot.java.patch | 0 .../net/minecraft/world/entity/animal/Pig.java.patch | 0 .../net/minecraft/world/entity/animal/PolarBear.java.patch | 0 .../net/minecraft/world/entity/animal/Rabbit.java.patch | 0 .../net/minecraft/world/entity/animal/Squid.java.patch | 0 .../net/minecraft/world/entity/animal/WaterAnimal.java.patch | 0 .../net/minecraft/world/entity/animal/goat/Goat.java.patch | 0 .../minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch | 0 .../world/entity/boss/enderdragon/EnderDragon.java.patch | 0 .../net/minecraft/world/entity/item/PrimedTnt.java.patch | 0 .../minecraft/world/entity/monster/AbstractSkeleton.java.patch | 0 .../net/minecraft/world/entity/monster/Creeper.java.patch | 0 .../net/minecraft/world/entity/monster/Drowned.java.patch | 0 .../net/minecraft/world/entity/monster/EnderMan.java.patch | 0 .../net/minecraft/world/entity/monster/Monster.java.patch | 0 .../net/minecraft/world/entity/monster/Phantom.java.patch | 0 .../net/minecraft/world/entity/monster/Ravager.java.patch | 0 .../net/minecraft/world/entity/monster/Shulker.java.patch | 0 .../net/minecraft/world/entity/monster/Skeleton.java.patch | 0 .../net/minecraft/world/entity/monster/Strider.java.patch | 0 .../net/minecraft/world/entity/monster/Vindicator.java.patch | 0 .../net/minecraft/world/entity/monster/Zombie.java.patch | 0 .../net/minecraft/world/entity/monster/ZombieVillager.java.patch | 0 .../net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch | 0 .../net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch | 0 .../net/minecraft/world/entity/npc/CatSpawner.java.patch | 0 .../net/minecraft/world/entity/npc/WanderingTrader.java.patch | 0 .../minecraft/world/entity/npc/WanderingTraderSpawner.java.patch | 0 .../minecraft/world/entity/projectile/AbstractArrow.java.patch | 0 .../net/minecraft/world/entity/projectile/Snowball.java.patch | 0 .../minecraft/world/entity/projectile/ThrownTrident.java.patch | 0 .../net/minecraft/world/entity/projectile/WitherSkull.java.patch | 0 .../net/minecraft/world/entity/raid/Raids.java.patch | 0 .../net/minecraft/world/entity/vehicle/AbstractBoat.java.patch | 0 .../minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch | 0 .../minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch | 0 .../net/minecraft/world/food/FoodData.java.patch | 0 .../net/minecraft/world/food/FoodProperties.java.patch | 0 .../minecraft/world/inventory/AbstractContainerMenu.java.patch | 0 .../net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch | 0 .../net/minecraft/world/inventory/ArmorSlot.java.patch | 0 .../net/minecraft/world/inventory/EnchantmentMenu.java.patch | 0 .../net/minecraft/world/inventory/GrindstoneMenu.java.patch | 0 .../net/minecraft/world/inventory/ItemCombinerMenu.java.patch | 0 .../net/minecraft/world/item/AxeItem.java.patch | 0 .../net/minecraft/world/item/BlockItem.java.patch | 0 .../net/minecraft/world/item/BowItem.java.patch | 0 .../net/minecraft/world/item/BucketItem.java.patch | 0 .../net/minecraft/world/item/CrossbowItem.java.patch | 0 .../net/minecraft/world/item/DyeColor.java.patch | 0 .../net/minecraft/world/item/EggItem.java.patch | 0 .../net/minecraft/world/item/EndCrystalItem.java.patch | 0 .../net/minecraft/world/item/EnderpearlItem.java.patch | 0 .../net/minecraft/world/item/HoeItem.java.patch | 0 .../net/minecraft/world/item/ItemStack.java.patch | 0 .../net/minecraft/world/item/Items.java.patch | 0 .../net/minecraft/world/item/MapItem.java.patch | 0 .../net/minecraft/world/item/NameTagItem.java.patch | 0 .../net/minecraft/world/item/ProjectileWeaponItem.java.patch | 0 .../net/minecraft/world/item/ShovelItem.java.patch | 0 .../net/minecraft/world/item/SnowballItem.java.patch | 0 .../net/minecraft/world/item/SpawnEggItem.java.patch | 0 .../net/minecraft/world/item/ThrowablePotionItem.java.patch | 0 .../net/minecraft/world/item/TridentItem.java.patch | 0 .../consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch | 0 .../minecraft/world/item/enchantment/EnchantmentHelper.java.patch | 0 .../minecraft/world/item/enchantment/ItemEnchantments.java.patch | 0 .../net/minecraft/world/item/trading/MerchantOffer.java.patch | 0 .../net/minecraft/world/level/EntityGetter.java.patch | 0 .../net/minecraft/world/level/Level.java.patch | 0 .../net/minecraft/world/level/NaturalSpawner.java.patch | 0 .../net/minecraft/world/level/block/AnvilBlock.java.patch | 0 .../net/minecraft/world/level/block/AzaleaBlock.java.patch | 0 .../world/level/block/BaseCoralPlantTypeBlock.java.patch | 0 .../net/minecraft/world/level/block/BedBlock.java.patch | 0 .../net/minecraft/world/level/block/BigDripleafBlock.java.patch | 0 .../net/minecraft/world/level/block/Block.java.patch | 0 .../net/minecraft/world/level/block/Blocks.java.patch | 0 .../net/minecraft/world/level/block/BubbleColumnBlock.java.patch | 0 .../net/minecraft/world/level/block/CactusBlock.java.patch | 0 .../net/minecraft/world/level/block/CakeBlock.java.patch | 0 .../net/minecraft/world/level/block/CampfireBlock.java.patch | 0 .../net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch | 0 .../net/minecraft/world/level/block/CauldronBlock.java.patch | 0 .../net/minecraft/world/level/block/CaveVinesBlock.java.patch | 0 .../minecraft/world/level/block/ChangeOverTimeBlock.java.patch | 0 .../net/minecraft/world/level/block/ChestBlock.java.patch | 0 .../net/minecraft/world/level/block/ComposterBlock.java.patch | 0 .../net/minecraft/world/level/block/CoralBlock.java.patch | 0 .../net/minecraft/world/level/block/CropBlock.java.patch | 0 .../net/minecraft/world/level/block/DoorBlock.java.patch | 0 .../net/minecraft/world/level/block/DragonEggBlock.java.patch | 0 .../minecraft/world/level/block/EnchantingTableBlock.java.patch | 0 .../net/minecraft/world/level/block/FarmBlock.java.patch | 0 .../minecraft/world/level/block/GrowingPlantHeadBlock.java.patch | 0 .../net/minecraft/world/level/block/HayBlock.java.patch | 0 .../net/minecraft/world/level/block/IceBlock.java.patch | 0 .../net/minecraft/world/level/block/KelpBlock.java.patch | 0 .../net/minecraft/world/level/block/LiquidBlock.java.patch | 0 .../net/minecraft/world/level/block/MagmaBlock.java.patch | 0 .../net/minecraft/world/level/block/NetherPortalBlock.java.patch | 0 .../net/minecraft/world/level/block/NetherWartBlock.java.patch | 0 .../net/minecraft/world/level/block/NoteBlock.java.patch | 0 .../net/minecraft/world/level/block/ObserverBlock.java.patch | 0 .../minecraft/world/level/block/PointedDripstoneBlock.java.patch | 0 .../net/minecraft/world/level/block/PoweredRailBlock.java.patch | 0 .../net/minecraft/world/level/block/RespawnAnchorBlock.java.patch | 0 .../net/minecraft/world/level/block/SculkShriekerBlock.java.patch | 0 .../net/minecraft/world/level/block/SlabBlock.java.patch | 0 .../net/minecraft/world/level/block/SnowLayerBlock.java.patch | 0 .../net/minecraft/world/level/block/SpawnerBlock.java.patch | 0 .../net/minecraft/world/level/block/SpongeBlock.java.patch | 0 .../net/minecraft/world/level/block/StonecutterBlock.java.patch | 0 .../net/minecraft/world/level/block/SugarCaneBlock.java.patch | 0 .../net/minecraft/world/level/block/TurtleEggBlock.java.patch | 0 .../net/minecraft/world/level/block/TwistingVinesBlock.java.patch | 0 .../net/minecraft/world/level/block/VegetationBlock.java.patch | 0 .../net/minecraft/world/level/block/WeepingVinesBlock.java.patch | 0 .../net/minecraft/world/level/block/WitherSkullBlock.java.patch | 0 .../level/block/entity/AbstractFurnaceBlockEntity.java.patch | 0 .../world/level/block/entity/BeaconBlockEntity.java.patch | 0 .../world/level/block/entity/BeehiveBlockEntity.java.patch | 0 .../minecraft/world/level/block/entity/SignBlockEntity.java.patch | 0 .../world/level/block/piston/PistonStructureResolver.java.patch | 0 .../minecraft/world/level/levelgen/DensityFunctions.java.patch | 0 .../net/minecraft/world/level/levelgen/PhantomSpawner.java.patch | 0 .../net/minecraft/world/level/material/FlowingFluid.java.patch | 0 .../net/minecraft/world/level/material/LavaFluid.java.patch | 0 .../net/minecraft/world/level/material/WaterFluid.java.patch | 0 .../minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch | 0 .../net/minecraft/world/level/portal/PortalShape.java.patch | 0 .../world/level/saveddata/maps/MapItemSavedData.java.patch | 0 .../loot/functions/EnchantedCountIncreaseFunction.java.patch | 0 .../net/minecraft/world/phys/AABB.java.patch | 0 183 files changed, 0 insertions(+), 0 deletions(-) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/CrashReport.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/commands/arguments/selector/EntitySelector.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/core/BlockPos.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/gametest/framework/GameTestHelper.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/network/Connection.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/network/chat/SignedMessageChain.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/MinecraftServer.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/commands/EnchantCommand.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/commands/GameModeCommand.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/commands/GiveCommand.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/gui/MinecraftServerGui.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/gui/StatsComponent.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/level/ServerPlayerGameMode.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/level/WorldGenRegion.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/players/SleepStatus.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/stats/ServerRecipeBook.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/util/StringUtil.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/damagesource/CombatRules.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/damagesource/CombatTracker.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/damagesource/DamageSource.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/damagesource/DamageSources.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/effect/HungerMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/effect/PoisonMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/effect/RegenerationMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/effect/SaturationMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/effect/WitherMobEffect.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/EntitySelector.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/GlowSquid.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ambient/Bat.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/AbstractCow.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Bee.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Cat.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Dolphin.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Fox.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/MushroomCow.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Ocelot.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Parrot.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Pig.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/PolarBear.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Rabbit.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Squid.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/WaterAnimal.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/goat/Goat.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/item/PrimedTnt.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Creeper.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Drowned.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/EnderMan.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Monster.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Phantom.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Ravager.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Shulker.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Skeleton.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Strider.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Vindicator.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Zombie.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/ZombieVillager.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/npc/CatSpawner.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/npc/WanderingTrader.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/projectile/AbstractArrow.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/projectile/Snowball.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/projectile/ThrownTrident.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/projectile/WitherSkull.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/raid/Raids.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/food/FoodData.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/food/FoodProperties.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/inventory/AbstractContainerMenu.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/inventory/ArmorSlot.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/inventory/EnchantmentMenu.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/inventory/GrindstoneMenu.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/inventory/ItemCombinerMenu.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/AxeItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/BlockItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/BowItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/BucketItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/CrossbowItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/DyeColor.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/EggItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/EndCrystalItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/EnderpearlItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/HoeItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/ItemStack.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/Items.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/MapItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/NameTagItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/ProjectileWeaponItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/ShovelItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/SnowballItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/SpawnEggItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/ThrowablePotionItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/TridentItem.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/trading/MerchantOffer.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/EntityGetter.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/Level.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/NaturalSpawner.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/AnvilBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/AzaleaBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/BedBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/BigDripleafBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/Block.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/Blocks.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/BubbleColumnBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/CactusBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/CakeBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/CampfireBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/CauldronBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/CaveVinesBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/ChestBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/ComposterBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/CoralBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/CropBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/DoorBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/DragonEggBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/EnchantingTableBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/FarmBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/HayBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/IceBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/KelpBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/LiquidBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/MagmaBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/NetherPortalBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/NetherWartBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/NoteBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/ObserverBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/PoweredRailBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/SculkShriekerBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/SlabBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/SnowLayerBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/SpawnerBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/SpongeBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/StonecutterBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/SugarCaneBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/TurtleEggBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/TwistingVinesBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/VegetationBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/WeepingVinesBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/WitherSkullBlock.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/levelgen/DensityFunctions.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/material/FlowingFluid.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/material/LavaFluid.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/material/WaterFluid.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/portal/PortalShape.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/phys/AABB.java.patch (100%) diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/CrashReport.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/CrashReport.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/BlockPos.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/BlockPos.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/GameTestHelper.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/GameTestHelper.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/Connection.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/Connection.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/chat/SignedMessageChain.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/chat/SignedMessageChain.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/MinecraftServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/MinecraftServer.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/EnchantCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/EnchantCommand.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GameModeCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GameModeCommand.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GiveCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GiveCommand.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/gui/MinecraftServerGui.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/MinecraftServerGui.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/gui/MinecraftServerGui.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/gui/MinecraftServerGui.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/gui/StatsComponent.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/gui/StatsComponent.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/WorldGenRegion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/WorldGenRegion.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/SleepStatus.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/SleepStatus.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/stats/ServerRecipeBook.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/stats/ServerRecipeBook.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/util/StringUtil.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/util/StringUtil.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatRules.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatRules.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatTracker.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatTracker.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSource.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSource.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSources.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSources.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/HungerMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/HungerMobEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/PoisonMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/PoisonMobEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/SaturationMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/SaturationMobEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/WitherMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/WitherMobEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntitySelector.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntitySelector.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/GlowSquid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/GlowSquid.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ambient/Bat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ambient/Bat.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/AbstractCow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/AbstractCow.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Bee.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Bee.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Cat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Cat.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Dolphin.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Dolphin.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Fox.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Fox.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/MushroomCow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/MushroomCow.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Ocelot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Ocelot.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Parrot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Parrot.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Pig.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Pig.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/PolarBear.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/PolarBear.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Rabbit.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Rabbit.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Squid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Squid.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/goat/Goat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/goat/Goat.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/PrimedTnt.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/PrimedTnt.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Creeper.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Creeper.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Drowned.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Drowned.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/EnderMan.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/EnderMan.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Monster.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Monster.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Phantom.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Phantom.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Ravager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Ravager.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Shulker.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Shulker.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Skeleton.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Skeleton.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Strider.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Strider.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Vindicator.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Vindicator.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Zombie.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Zombie.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/CatSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/CatSpawner.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/Snowball.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/Snowball.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/raid/Raids.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/raid/Raids.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodData.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodData.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodProperties.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodProperties.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ArmorSlot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ArmorSlot.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/AxeItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/AxeItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BlockItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BlockItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BowItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BowItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BucketItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BucketItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/CrossbowItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/CrossbowItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/DyeColor.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/DyeColor.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EggItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EggItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EndCrystalItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EndCrystalItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EnderpearlItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EnderpearlItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/HoeItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/HoeItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ItemStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ItemStack.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/Items.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/Items.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/MapItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/MapItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/NameTagItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/NameTagItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ShovelItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ShovelItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SnowballItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SnowballItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SpawnEggItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SpawnEggItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ThrowablePotionItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ThrowablePotionItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/TridentItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/TridentItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/trading/MerchantOffer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/trading/MerchantOffer.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/EntityGetter.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/EntityGetter.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/Level.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/Level.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/NaturalSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/NaturalSpawner.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AnvilBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AnvilBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AzaleaBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AzaleaBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BedBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BedBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Block.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Block.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Blocks.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Blocks.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CactusBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CactusBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CakeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CakeBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CampfireBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CampfireBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CauldronBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CauldronBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChestBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChestBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ComposterBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ComposterBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CoralBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CoralBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CropBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CropBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DoorBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DoorBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DragonEggBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DragonEggBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/FarmBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/FarmBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/HayBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/HayBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/IceBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/IceBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/KelpBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/KelpBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/LiquidBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/LiquidBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/MagmaBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/MagmaBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherWartBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherWartBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NoteBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NoteBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ObserverBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ObserverBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SlabBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SlabBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpawnerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpawnerBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpongeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpongeBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/StonecutterBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/StonecutterBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/VegetationBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/VegetationBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/FlowingFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/FlowingFluid.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/LavaFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/LavaFluid.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/WaterFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/WaterFluid.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/portal/PortalShape.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/portal/PortalShape.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/phys/AABB.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/phys/AABB.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch From 312725553b6809b4f7111384590f9560078fdb42 Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 28 May 2025 20:30:03 -0700 Subject: [PATCH 108/289] minor cleanup --- purpur-server/build.gradle.kts.patch | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index 2dfb47467..d8d97ad97 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -1,12 +1,9 @@ --- a/paper-server/build.gradle.kts +++ b/paper-server/build.gradle.kts -@@ -1,9 +_,7 @@ - import io.papermc.paperweight.attribute.DevBundleOutput - import io.papermc.paperweight.util.* --import io.papermc.paperweight.util.data.FileEntry --import paper.libs.com.google.gson.annotations.SerializedName +@@ -4,6 +_,7 @@ + import paper.libs.com.google.gson.annotations.SerializedName import java.time.Instant --import kotlin.io.path.readText + import kotlin.io.path.readText +import kotlin.io.path.writeText plugins { From 5d3463aaa0472c7d3c2028ea4d0ad3fb128785d2 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 29 May 2025 21:34:39 -0700 Subject: [PATCH 109/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@6f315356 Add MCUtil#toLocation from Folia PaperMC/Paper@2ba1675c Replace deprecated Thread#getId usage with Thread#threadId --- gradle.properties | 2 +- .../files/src/main/java/org/spigotmc/WatchdogThread.java.patch | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index b1bdc18d1..90f55875d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = 47650100837178e2852bdb50d8c9c6f0cc0bb2e0 +paperCommit = 2ba1675c7506cadd8a540ea452e5dafb79ae8947 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch index 1d6ab6004..8f0126c5f 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch @@ -40,7 +40,7 @@ - logger.log(Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Paper!):"); // Paper + logger.log(Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Purpur!):" ); // Paper // Purpur - Rebrand FeatureHooks.dumpAllChunkLoadInfo(MinecraftServer.getServer(), isLongTimeout); // Paper - log detailed tick information - WatchdogThread.dumpThread(ManagementFactory.getThreadMXBean().getThreadInfo(MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE), logger); + WatchdogThread.dumpThread(ManagementFactory.getThreadMXBean().getThreadInfo(MinecraftServer.getServer().serverThread.threadId(), Integer.MAX_VALUE), logger); logger.log(Level.SEVERE, "------------------------------"); @@ -120,7 +_,7 @@ WatchdogThread.dumpThread(thread, logger); From 3ba90894b1b4727579663220814a7ecefc017e7d Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 30 May 2025 19:06:47 -0700 Subject: [PATCH 110/289] convert applied source patches to file patch format --- .../net/minecraft/CrashReport.java.patch | 14 ++------- .../selector/EntitySelector.java.patch | 12 ++----- .../net/minecraft/core/BlockPos.java.patch | 14 ++------- .../dispenser/DispenseItemBehavior.java.patch | 10 +----- .../EquipmentDispenseItemBehavior.java.patch | 10 +----- .../framework/GameTestHelper.java.patch | 10 +----- .../minecraft/network/Connection.java.patch | 10 +----- .../chat/SignedMessageChain.java.patch | 10 +----- .../server/MinecraftServer.java.patch | 30 +++++++----------- .../server/commands/EnchantCommand.java.patch | 12 ++----- .../commands/GameModeCommand.java.patch | 10 +----- .../server/commands/GiveCommand.java.patch | 10 +----- .../DedicatedServerProperties.java.patch | 10 +----- .../server/gui/MinecraftServerGui.java.patch | 31 +++++++------------ .../server/gui/StatsComponent.java.patch | 10 +----- .../level/ServerPlayerGameMode.java.patch | 16 +++------- .../server/level/WorldGenRegion.java.patch | 10 +----- .../ServerLoginPacketListenerImpl.java.patch | 10 +----- .../ServerStatusPacketListenerImpl.java.patch | 10 +----- .../server/players/SleepStatus.java.patch | 12 ++----- .../stats/ServerRecipeBook.java.patch | 10 +----- .../net/minecraft/util/StringUtil.java.patch | 10 +----- .../world/damagesource/CombatRules.java.patch | 12 ++----- .../damagesource/CombatTracker.java.patch | 12 ++----- .../damagesource/DamageSource.java.patch | 21 ++++--------- .../damagesource/DamageSources.java.patch | 20 ++++-------- .../world/effect/HungerMobEffect.java.patch | 10 +----- .../world/effect/PoisonMobEffect.java.patch | 10 +----- .../effect/RegenerationMobEffect.java.patch | 10 +----- .../effect/SaturationMobEffect.java.patch | 10 +----- .../world/effect/WitherMobEffect.java.patch | 10 +----- .../world/entity/EntitySelector.java.patch | 10 +----- .../world/entity/GlowSquid.java.patch | 10 +----- .../ai/attributes/RangedAttribute.java.patch | 10 +----- .../ai/behavior/InteractWithDoor.java.patch | 14 ++------- .../ai/behavior/ShowTradesToPlayer.java.patch | 10 +----- .../ai/goal/LlamaFollowCaravanGoal.java.patch | 12 ++----- .../ai/goal/RangedBowAttackGoal.java.patch | 10 +----- .../ai/goal/RunAroundLikeCrazyGoal.java.patch | 10 +----- .../world/entity/ai/goal/SwellGoal.java.patch | 10 +----- .../targeting/TargetingConditions.java.patch | 10 +----- .../world/entity/ambient/Bat.java.patch | 12 ++----- .../entity/animal/AbstractCow.java.patch | 14 ++------- .../world/entity/animal/Bee.java.patch | 22 +++++-------- .../world/entity/animal/Cat.java.patch | 12 ++----- .../world/entity/animal/Dolphin.java.patch | 16 +++------- .../world/entity/animal/Fox.java.patch | 20 ++++-------- .../entity/animal/MushroomCow.java.patch | 10 +----- .../world/entity/animal/Ocelot.java.patch | 10 +----- .../world/entity/animal/Parrot.java.patch | 18 +++-------- .../world/entity/animal/Pig.java.patch | 10 +----- .../world/entity/animal/PolarBear.java.patch | 14 ++------- .../world/entity/animal/Rabbit.java.patch | 10 +----- .../world/entity/animal/Squid.java.patch | 14 ++------- .../entity/animal/WaterAnimal.java.patch | 10 +----- .../world/entity/animal/goat/Goat.java.patch | 10 +----- .../boss/enderdragon/EndCrystal.java.patch | 14 ++------- .../boss/enderdragon/EnderDragon.java.patch | 12 ++----- .../world/entity/item/PrimedTnt.java.patch | 10 +----- .../monster/AbstractSkeleton.java.patch | 12 ++----- .../world/entity/monster/Creeper.java.patch | 16 +++------- .../world/entity/monster/Drowned.java.patch | 10 +----- .../world/entity/monster/EnderMan.java.patch | 22 +++++-------- .../world/entity/monster/Monster.java.patch | 10 +----- .../world/entity/monster/Phantom.java.patch | 10 +----- .../world/entity/monster/Ravager.java.patch | 12 ++----- .../world/entity/monster/Shulker.java.patch | 20 ++++-------- .../world/entity/monster/Skeleton.java.patch | 10 +----- .../world/entity/monster/Strider.java.patch | 10 +----- .../entity/monster/Vindicator.java.patch | 10 +----- .../world/entity/monster/Zombie.java.patch | 12 ++----- .../entity/monster/ZombieVillager.java.patch | 10 +----- .../entity/monster/ZombifiedPiglin.java.patch | 18 +++-------- .../entity/monster/piglin/PiglinAi.java.patch | 17 +++------- .../world/entity/npc/CatSpawner.java.patch | 14 ++------- .../entity/npc/WanderingTrader.java.patch | 14 ++------- .../npc/WanderingTraderSpawner.java.patch | 10 +----- .../projectile/AbstractArrow.java.patch | 20 ++++-------- .../entity/projectile/Snowball.java.patch | 15 ++------- .../projectile/ThrownTrident.java.patch | 10 +----- .../entity/projectile/WitherSkull.java.patch | 18 +++-------- .../world/entity/raid/Raids.java.patch | 14 ++------- .../entity/vehicle/AbstractBoat.java.patch | 10 +----- .../vehicle/NewMinecartBehavior.java.patch | 10 +----- .../vehicle/OldMinecartBehavior.java.patch | 10 +----- .../minecraft/world/food/FoodData.java.patch | 12 ++----- .../world/food/FoodProperties.java.patch | 10 +----- .../AbstractContainerMenu.java.patch | 10 +----- .../inventory/AbstractFurnaceMenu.java.patch | 10 +----- .../world/inventory/ArmorSlot.java.patch | 10 +----- .../inventory/EnchantmentMenu.java.patch | 14 ++------- .../world/inventory/GrindstoneMenu.java.patch | 18 +++-------- .../inventory/ItemCombinerMenu.java.patch | 10 +----- .../minecraft/world/item/AxeItem.java.patch | 14 ++------- .../minecraft/world/item/BlockItem.java.patch | 14 ++------- .../minecraft/world/item/BowItem.java.patch | 14 ++------- .../world/item/BucketItem.java.patch | 12 ++----- .../world/item/CrossbowItem.java.patch | 10 +----- .../minecraft/world/item/DyeColor.java.patch | 10 +----- .../minecraft/world/item/EggItem.java.patch | 10 +----- .../world/item/EndCrystalItem.java.patch | 10 +----- .../world/item/EnderpearlItem.java.patch | 12 ++----- .../minecraft/world/item/HoeItem.java.patch | 10 +----- .../minecraft/world/item/ItemStack.java.patch | 22 +++++-------- .../net/minecraft/world/item/Items.java.patch | 12 ++----- .../minecraft/world/item/MapItem.java.patch | 10 +----- .../world/item/NameTagItem.java.patch | 10 +----- .../item/ProjectileWeaponItem.java.patch | 10 +----- .../world/item/ShovelItem.java.patch | 10 +----- .../world/item/SnowballItem.java.patch | 10 +----- .../world/item/SpawnEggItem.java.patch | 10 +----- .../world/item/ThrowablePotionItem.java.patch | 10 +----- .../world/item/TridentItem.java.patch | 12 ++----- ...arAllStatusEffectsConsumeEffect.java.patch | 10 +----- .../enchantment/EnchantmentHelper.java.patch | 10 +----- .../enchantment/ItemEnchantments.java.patch | 14 ++------- .../item/trading/MerchantOffer.java.patch | 10 +----- .../world/level/EntityGetter.java.patch | 10 +----- .../minecraft/world/level/Level.java.patch | 16 +++------- .../world/level/NaturalSpawner.java.patch | 10 +----- .../world/level/block/AnvilBlock.java.patch | 10 +----- .../world/level/block/AzaleaBlock.java.patch | 10 +----- .../block/BaseCoralPlantTypeBlock.java.patch | 10 +----- .../world/level/block/BedBlock.java.patch | 14 ++------- .../level/block/BigDripleafBlock.java.patch | 10 +----- .../world/level/block/Block.java.patch | 23 +++++--------- .../world/level/block/Blocks.java.patch | 12 ++----- .../level/block/BubbleColumnBlock.java.patch | 10 +----- .../world/level/block/CactusBlock.java.patch | 14 ++------- .../world/level/block/CakeBlock.java.patch | 10 +----- .../level/block/CampfireBlock.java.patch | 10 +----- .../level/block/CarvedPumpkinBlock.java.patch | 12 ++----- .../level/block/CauldronBlock.java.patch | 10 +----- .../level/block/CaveVinesBlock.java.patch | 10 +----- .../block/ChangeOverTimeBlock.java.patch | 10 +----- .../world/level/block/ChestBlock.java.patch | 10 +----- .../level/block/ComposterBlock.java.patch | 20 ++++-------- .../world/level/block/CoralBlock.java.patch | 10 +----- .../world/level/block/CropBlock.java.patch | 12 ++----- .../world/level/block/DoorBlock.java.patch | 12 ++----- .../level/block/DragonEggBlock.java.patch | 10 +----- .../block/EnchantingTableBlock.java.patch | 10 +----- .../world/level/block/FarmBlock.java.patch | 14 ++------- .../block/GrowingPlantHeadBlock.java.patch | 18 +++-------- .../world/level/block/HayBlock.java.patch | 10 +----- .../world/level/block/IceBlock.java.patch | 12 ++----- .../world/level/block/KelpBlock.java.patch | 10 +----- .../world/level/block/LiquidBlock.java.patch | 14 ++------- .../world/level/block/MagmaBlock.java.patch | 10 +----- .../level/block/NetherPortalBlock.java.patch | 12 ++----- .../level/block/NetherWartBlock.java.patch | 12 ++----- .../world/level/block/NoteBlock.java.patch | 10 +----- .../level/block/ObserverBlock.java.patch | 10 +----- .../block/PointedDripstoneBlock.java.patch | 10 +----- .../level/block/PoweredRailBlock.java.patch | 10 +----- .../level/block/RespawnAnchorBlock.java.patch | 10 +----- .../level/block/SculkShriekerBlock.java.patch | 10 +----- .../world/level/block/SlabBlock.java.patch | 10 +----- .../level/block/SnowLayerBlock.java.patch | 10 +----- .../world/level/block/SpawnerBlock.java.patch | 12 ++----- .../world/level/block/SpongeBlock.java.patch | 14 ++------- .../level/block/StonecutterBlock.java.patch | 10 +----- .../level/block/SugarCaneBlock.java.patch | 12 ++----- .../level/block/TurtleEggBlock.java.patch | 12 ++----- .../level/block/TwistingVinesBlock.java.patch | 10 +----- .../level/block/VegetationBlock.java.patch | 10 +----- .../level/block/WeepingVinesBlock.java.patch | 10 +----- .../level/block/WitherSkullBlock.java.patch | 10 +----- .../AbstractFurnaceBlockEntity.java.patch | 12 ++----- .../block/entity/BeaconBlockEntity.java.patch | 16 +++------- .../entity/BeehiveBlockEntity.java.patch | 14 ++------- .../block/entity/SignBlockEntity.java.patch | 20 ++++-------- .../piston/PistonStructureResolver.java.patch | 14 ++------- .../levelgen/DensityFunctions.java.patch | 10 +----- .../level/levelgen/PhantomSpawner.java.patch | 12 ++----- .../level/material/FlowingFluid.java.patch | 18 +++-------- .../world/level/material/LavaFluid.java.patch | 18 +++-------- .../level/material/WaterFluid.java.patch | 10 +----- .../pathfinder/WalkNodeEvaluator.java.patch | 12 ++----- .../world/level/portal/PortalShape.java.patch | 10 +----- .../maps/MapItemSavedData.java.patch | 10 +----- .../EnchantedCountIncreaseFunction.java.patch | 10 +----- .../net/minecraft/world/phys/AABB.java.patch | 10 +----- 183 files changed, 385 insertions(+), 1852 deletions(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch index 0ecfb5660..52cafd0d1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/CrashReport.java b/net/minecraft/CrashReport.java -index 3e0e88afcf010d9a3d46e48bca5cbdf98fe97544..394443d00e661715439be1e56dddc129947699a4 100644 --- a/net/minecraft/CrashReport.java +++ b/net/minecraft/CrashReport.java -@@ -30,6 +30,7 @@ public class CrashReport { +@@ -30,6 +_,7 @@ private boolean trackingStackTrace = true; private StackTraceElement[] uncategorizedStackTrace = new StackTraceElement[0]; private final SystemReport systemReport = new SystemReport(); @@ -16,7 +8,7 @@ index 3e0e88afcf010d9a3d46e48bca5cbdf98fe97544..394443d00e661715439be1e56dddc129 public CrashReport(String title, Throwable exception) { io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(exception); // Paper -@@ -130,7 +131,7 @@ public class CrashReport { +@@ -130,7 +_,7 @@ } public String getFriendlyReport(ReportType type) { @@ -25,7 +17,7 @@ index 3e0e88afcf010d9a3d46e48bca5cbdf98fe97544..394443d00e661715439be1e56dddc129 } @Nullable -@@ -161,7 +162,7 @@ public class CrashReport { +@@ -161,7 +_,7 @@ } public boolean saveToFile(Path path, ReportType type) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch index 2b06881db..c89e997d6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/commands/arguments/selector/EntitySelector.java b/net/minecraft/commands/arguments/selector/EntitySelector.java -index 514f8fbdeb776087608665c35de95294aadf5cf0..b305ba9bab617bf4e52d0e6ddf160bacc5751a94 100644 --- a/net/minecraft/commands/arguments/selector/EntitySelector.java +++ b/net/minecraft/commands/arguments/selector/EntitySelector.java -@@ -192,26 +192,27 @@ public class EntitySelector { +@@ -192,26 +_,27 @@ this.checkPermissions(source); if (this.playerName != null) { ServerPlayer playerByName = source.getServer().getPlayerList().getPlayerByName(this.playerName); @@ -40,7 +32,7 @@ index 514f8fbdeb776087608665c35de95294aadf5cf0..b305ba9bab617bf4e52d0e6ddf160bac players.add(serverPlayer1); if (players.size() >= resultLimit) { return players; -@@ -270,4 +271,10 @@ public class EntitySelector { +@@ -270,4 +_,10 @@ public static Component joinNames(List names) { return ComponentUtils.formatList(names, Entity::getDisplayName); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch index 86a42c71c..50faf5263 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch @@ -1,16 +1,8 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/core/BlockPos.java b/net/minecraft/core/BlockPos.java -index a81694a22e94cca6f7110f7d5b205d1303f4e071..6518d3fff6daf331b24a7bf5b39fa1920b73711d 100644 --- a/net/minecraft/core/BlockPos.java +++ b/net/minecraft/core/BlockPos.java -@@ -63,6 +63,12 @@ public class BlockPos extends Vec3i { - public static final int MAX_HORIZONTAL_COORDINATE = 33554431; - // Paper end - Optimize Bit Operations by inlining +@@ -61,6 +_,12 @@ + private static final int X_OFFSET = PACKED_Y_LENGTH + PACKED_HORIZONTAL_LENGTH; + public static final int MAX_HORIZONTAL_COORDINATE = (1 << PACKED_HORIZONTAL_LENGTH) / 2 - 1; + // Purpur start - Ridables + public BlockPos(net.minecraft.world.entity.Entity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch index f7b3d00eb..15ad30cf2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/core/dispenser/DispenseItemBehavior.java b/net/minecraft/core/dispenser/DispenseItemBehavior.java -index ca02c4c71a0a5a1a0ae8bbb40f0b1b7eac64e6fd..582e012222123e5001c34153f2ee1ab1d08935fd 100644 --- a/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/net/minecraft/core/dispenser/DispenseItemBehavior.java -@@ -735,5 +735,22 @@ public interface DispenseItemBehavior { +@@ -735,5 +_,22 @@ DispenserBlock.registerBehavior(Items.TNT_MINECART, new MinecartDispenseItemBehavior(EntityType.TNT_MINECART)); DispenserBlock.registerBehavior(Items.HOPPER_MINECART, new MinecartDispenseItemBehavior(EntityType.HOPPER_MINECART)); DispenserBlock.registerBehavior(Items.COMMAND_BLOCK_MINECART, new MinecartDispenseItemBehavior(EntityType.COMMAND_BLOCK_MINECART)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch index b4fdadcbc..9a2c1e083 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java b/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java -index e2d169b45f1dba6559ca337b07a110f79d3db504..727d04a442053f6d0c4df3e744554e2866fa38cd 100644 --- a/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java +++ b/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java -@@ -32,7 +32,7 @@ public class EquipmentDispenseItemBehavior extends DefaultDispenseItemBehavior { +@@ -32,7 +_,7 @@ return false; } else { LivingEntity livingEntity = entitiesOfClass.getFirst(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch index 17ea862ad..870429942 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/gametest/framework/GameTestHelper.java b/net/minecraft/gametest/framework/GameTestHelper.java -index fafbc8a9229432c4fb290a54cf453cd0c0c7b3b6..fa7a2a85adf7758a753c54a7cf75cc667922d3d7 100644 --- a/net/minecraft/gametest/framework/GameTestHelper.java +++ b/net/minecraft/gametest/framework/GameTestHelper.java -@@ -292,6 +292,8 @@ public class GameTestHelper { +@@ -292,6 +_,8 @@ return gameType; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch index 68ff08029..73c157d07 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/network/Connection.java b/net/minecraft/network/Connection.java -index 4ed9611994c5c8da01fede690197527c5b3a5731..00a82873d226f113278632a53c0faca420dd67d4 100644 --- a/net/minecraft/network/Connection.java +++ b/net/minecraft/network/Connection.java -@@ -588,11 +588,20 @@ public class Connection extends SimpleChannelInboundHandler> { +@@ -486,11 +_,20 @@ 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/purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch index c5218eef6..60c29bda0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/network/chat/SignedMessageChain.java b/net/minecraft/network/chat/SignedMessageChain.java -index f6eed34b2fd72ab74cc9dc4b99ca184d512c0a66..a3e211edd348c0936757de33a74b9456248b3bd2 100644 --- a/net/minecraft/network/chat/SignedMessageChain.java +++ b/net/minecraft/network/chat/SignedMessageChain.java -@@ -45,7 +45,7 @@ public class SignedMessageChain { +@@ -45,7 +_,7 @@ SignedMessageLink signedMessageLink = SignedMessageChain.this.nextLink; if (signedMessageLink == null) { throw new SignedMessageChain.DecodeException(SignedMessageChain.DecodeException.CHAIN_BROKEN); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch index 746aac419..b0dd7735b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index f1373fd5fdebb9f4600ba7f32a5df6188de3a0e9..924dc9a32cd78f37078ff47cde54e61844572f47 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -283,6 +283,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop processQueue = new java.util.concurrent.ConcurrentLinkedQueue(); public int autosavePeriod; // Paper - don't store the vanilla dispatcher -@@ -293,7 +294,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop pluginsBlockingSleep = new java.util.HashSet<>(); // Paper - API to allow/disallow tick sleeping public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation @@ -34,7 +26,7 @@ index f1373fd5fdebb9f4600ba7f32a5df6188de3a0e9..924dc9a32cd78f37078ff47cde54e618 public static S spin(Function threadFunction) { AtomicReference atomicReference = new AtomicReference<>(); -@@ -993,6 +996,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/commands/EnchantCommand.java b/net/minecraft/server/commands/EnchantCommand.java -index 709690044ec506c50a73197f5ba43e89f3403a5e..60baf9a5dc4a583d08007acb68bbed61768270d5 100644 --- a/net/minecraft/server/commands/EnchantCommand.java +++ b/net/minecraft/server/commands/EnchantCommand.java -@@ -70,7 +70,7 @@ public class EnchantCommand { +@@ -70,7 +_,7 @@ private static int enchant(CommandSourceStack source, Collection targets, Holder enchantment, int level) throws CommandSyntaxException { Enchantment enchantment1 = enchantment.value(); @@ -17,7 +9,7 @@ index 709690044ec506c50a73197f5ba43e89f3403a5e..60baf9a5dc4a583d08007acb68bbed61 throw ERROR_LEVEL_TOO_HIGH.create(level, enchantment1.getMaxLevel()); } else { int i = 0; -@@ -80,7 +80,7 @@ public class EnchantCommand { +@@ -80,7 +_,7 @@ ItemStack mainHandItem = livingEntity.getMainHandItem(); if (!mainHandItem.isEmpty()) { if (enchantment1.canEnchant(mainHandItem) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch index 67bc6d5de..135ee41ef 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/commands/GameModeCommand.java b/net/minecraft/server/commands/GameModeCommand.java -index c44cdbbdc06b25bd20a208386545a10af9b96df8..a88b8f999b181071ebb492bc1afa2d72fff3748e 100644 --- a/net/minecraft/server/commands/GameModeCommand.java +++ b/net/minecraft/server/commands/GameModeCommand.java -@@ -51,6 +51,18 @@ public class GameModeCommand { +@@ -53,6 +_,18 @@ } private static int setMode(CommandContext source, Collection players, GameType gameType) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch index 17dd8a921..983f2b9cd 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/commands/GiveCommand.java b/net/minecraft/server/commands/GiveCommand.java -index b81f98738ef166336e4cc3092b6ba63f385b68e3..ca4bad763602f202423409ffb16f797f91a5dadc 100644 --- a/net/minecraft/server/commands/GiveCommand.java +++ b/net/minecraft/server/commands/GiveCommand.java -@@ -66,6 +66,7 @@ public class GiveCommand { +@@ -69,6 +_,7 @@ i1 -= min; ItemStack itemStack1 = item.createItemStack(min, false); boolean flag = serverPlayer.getInventory().add(itemStack1); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch index cc09a01a3..74d774008 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/dedicated/DedicatedServerProperties.java b/net/minecraft/server/dedicated/DedicatedServerProperties.java -index f6518e29f805018c72222f5aaa7b662071665b65..5748658abf0b90812005ae9d426df92daf5532f0 100644 --- a/net/minecraft/server/dedicated/DedicatedServerProperties.java +++ b/net/minecraft/server/dedicated/DedicatedServerProperties.java -@@ -49,6 +49,7 @@ public class DedicatedServerProperties extends Settings -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/gui/MinecraftServerGui.java b/net/minecraft/server/gui/MinecraftServerGui.java -index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b3788623900db41 100644 --- a/net/minecraft/server/gui/MinecraftServerGui.java +++ b/net/minecraft/server/gui/MinecraftServerGui.java -@@ -39,6 +39,11 @@ public class MinecraftServerGui extends JComponent { +@@ -39,6 +_,11 @@ private Thread logAppenderThread; private final Collection finalizers = Lists.newArrayList(); final AtomicBoolean isClosing = new AtomicBoolean(); @@ -20,7 +12,7 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 public static MinecraftServerGui showFrameFor(final DedicatedServer server) { try { -@@ -46,7 +51,7 @@ public class MinecraftServerGui extends JComponent { +@@ -46,7 +_,7 @@ } catch (Exception var3) { } @@ -29,7 +21,7 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 final MinecraftServerGui minecraftServerGui = new MinecraftServerGui(server); jFrame.setDefaultCloseOperation(2); jFrame.add(minecraftServerGui); -@@ -54,7 +59,7 @@ public class MinecraftServerGui extends JComponent { +@@ -54,7 +_,7 @@ jFrame.setLocationRelativeTo(null); jFrame.setVisible(true); // Paper start - Improve ServerGUI @@ -38,7 +30,7 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 try { jFrame.setIconImage(javax.imageio.ImageIO.read(java.util.Objects.requireNonNull(MinecraftServerGui.class.getClassLoader().getResourceAsStream("logo.png")))); } catch (java.io.IOException ignore) { -@@ -64,7 +69,7 @@ public class MinecraftServerGui extends JComponent { +@@ -64,7 +_,7 @@ @Override public void windowClosing(WindowEvent event) { if (!minecraftServerGui.isClosing.getAndSet(true)) { @@ -47,7 +39,7 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 server.halt(true); minecraftServerGui.runFinalizers(); } -@@ -112,7 +117,7 @@ public class MinecraftServerGui extends JComponent { +@@ -112,7 +_,7 @@ private JComponent buildChatPanel() { JPanel jPanel = new JPanel(new BorderLayout()); @@ -56,7 +48,7 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 JScrollPane jScrollPane = new JScrollPane(jTextArea, 22, 30); jTextArea.setEditable(false); jTextArea.setFont(MONOSPACED); -@@ -121,10 +126,43 @@ public class MinecraftServerGui extends JComponent { +@@ -121,10 +_,43 @@ String trimmed = jTextField.getText().trim(); if (!trimmed.isEmpty()) { this.server.handleConsoleInput(trimmed, this.server.createCommandSourceStack()); @@ -100,7 +92,7 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 jTextArea.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent event) { -@@ -159,7 +197,7 @@ public class MinecraftServerGui extends JComponent { +@@ -159,7 +_,7 @@ } private static final java.util.regex.Pattern ANSI = java.util.regex.Pattern.compile("\\e\\[[\\d;]*[^\\d;]"); // CraftBukkit // Paper @@ -109,7 +101,7 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 if (!SwingUtilities.isEventDispatchThread()) { SwingUtilities.invokeLater(() -> this.print(textArea, scrollPane, line)); } else { -@@ -170,10 +208,11 @@ public class MinecraftServerGui extends JComponent { +@@ -170,16 +_,29 @@ flag = verticalScrollBar.getValue() + verticalScrollBar.getSize().getHeight() + MONOSPACED.getSize() * 4 > verticalScrollBar.getMaximum(); } @@ -123,10 +115,10 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 if (flag) { verticalScrollBar.setValue(Integer.MAX_VALUE); -@@ -181,6 +220,18 @@ public class MinecraftServerGui extends JComponent { + } } } - ++ + // Purpur start - GUI Improvements + public static class CommandHistory extends java.util.LinkedList { + @Override @@ -138,7 +130,6 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 + } + } + // Purpur end - GUI Improvements -+ + // Paper start - Add onboarding message for initial server start private JComponent buildOnboardingPanel() { - String onboardingLink = "https://docs.papermc.io/paper/next-steps"; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch index 2dc512827..a082bca56 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/gui/StatsComponent.java b/net/minecraft/server/gui/StatsComponent.java -index 35fd539eb2bfe60ad17ab1e558a01273666acc54..103ff139dae918c991413ce9df61da3e22ee458a 100644 --- a/net/minecraft/server/gui/StatsComponent.java +++ b/net/minecraft/server/gui/StatsComponent.java -@@ -43,7 +43,7 @@ public class StatsComponent extends JComponent { +@@ -43,7 +_,7 @@ } this.msgs[0] = "Memory use: " + l / 1024L / 1024L + " mb (" + Runtime.getRuntime().freeMemory() * 100L / Runtime.getRuntime().maxMemory() + "% free)"; this.msgs[1] = "Avg tick: " + DECIMAL_FORMAT.format((double)this.server.getAverageTickTimeNanos() / TimeUtil.NANOSECONDS_PER_MILLISECOND) + " ms"; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch index 3d32ad621..b2696d1db 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/level/ServerPlayerGameMode.java b/net/minecraft/server/level/ServerPlayerGameMode.java -index b604cba2490a747661d6819251bc3b9a1d35c7d4..3a596650feb96123c5684bb5065e20c5b005c0b9 100644 --- a/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -348,6 +348,7 @@ public class ServerPlayerGameMode { +@@ -347,6 +_,7 @@ } return false; } @@ -16,7 +8,7 @@ index b604cba2490a747661d6819251bc3b9a1d35c7d4..3a596650feb96123c5684bb5065e20c5 } // CraftBukkit end -@@ -461,6 +462,7 @@ public class ServerPlayerGameMode { +@@ -460,6 +_,7 @@ public InteractionHand interactHand; public ItemStack interactItemStack; public InteractionResult useItemOn(ServerPlayer player, Level level, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) { @@ -24,7 +16,7 @@ index b604cba2490a747661d6819251bc3b9a1d35c7d4..3a596650feb96123c5684bb5065e20c5 BlockPos blockPos = hitResult.getBlockPos(); BlockState blockState = level.getBlockState(blockPos); boolean cancelledBlock = false; -@@ -503,7 +505,7 @@ public class ServerPlayerGameMode { +@@ -502,7 +_,7 @@ boolean flag = !player.getMainHandItem().isEmpty() || !player.getOffhandItem().isEmpty(); boolean flag1 = player.isSecondaryUseActive() && flag; ItemStack itemStack = stack.copy(); @@ -33,7 +25,7 @@ index b604cba2490a747661d6819251bc3b9a1d35c7d4..3a596650feb96123c5684bb5065e20c5 InteractionResult interactionResult = blockState.useItemOn(player.getItemInHand(hand), level, player, hand, hitResult); if (interactionResult.consumesAction()) { CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger(player, blockPos, itemStack); -@@ -549,4 +551,18 @@ public class ServerPlayerGameMode { +@@ -548,4 +_,18 @@ public void setLevel(ServerLevel serverLevel) { this.level = serverLevel; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch index 9232e8f23..fb3d981ba 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/level/WorldGenRegion.java b/net/minecraft/server/level/WorldGenRegion.java -index 11fed81a4696ba18440e755c3b8a5ca39ed8a6b1..18367ee56288c4cc60b66555583a8900e7a47daf 100644 --- a/net/minecraft/server/level/WorldGenRegion.java +++ b/net/minecraft/server/level/WorldGenRegion.java -@@ -314,6 +314,7 @@ public class WorldGenRegion implements WorldGenLevel { +@@ -284,6 +_,7 @@ return true; } else { // Paper start - Buffer OOB setBlock calls diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch index 6b43b0aa8..06b474c18 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index 7950f4f88d8a83ed5610b7af4e134557d32da3f0..637b2eb7104cb0bc7f314ad6eea11a432e899861 100644 --- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -306,7 +306,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, +@@ -308,7 +_,7 @@ ServerLoginPacketListenerImpl.LOGGER.warn("Failed to verify username but will let them in anyway!"); ServerLoginPacketListenerImpl.this.startClientVerification(ServerLoginPacketListenerImpl.this.createOfflineProfile(string1)); // Spigot } else { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch index 8f27573c6..3fc9d014a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/network/ServerStatusPacketListenerImpl.java b/net/minecraft/server/network/ServerStatusPacketListenerImpl.java -index 465559113071a47e706f77a5b0996597ee986b3d..1b966dc52b067cd9d1fa9f500b692e3f75f1cc90 100644 --- a/net/minecraft/server/network/ServerStatusPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerStatusPacketListenerImpl.java -@@ -37,6 +37,7 @@ public class ServerStatusPacketListenerImpl implements ServerStatusPacketListene +@@ -37,6 +_,7 @@ } else { this.hasRequestedStatus = true; // this.connection.send(new ClientboundStatusResponsePacket(this.status)); // Paper diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch index e52bc72e9..998d2f057 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/players/SleepStatus.java b/net/minecraft/server/players/SleepStatus.java -index 2a7ae521654ad5c9f392baa5562e64bb71b13097..3a3e6992563236141db687084aeec9684437a7db 100644 --- a/net/minecraft/server/players/SleepStatus.java +++ b/net/minecraft/server/players/SleepStatus.java -@@ -15,7 +15,7 @@ public class SleepStatus { +@@ -15,7 +_,7 @@ public boolean areEnoughDeepSleeping(int requiredSleepPercentage, List sleepingPlayers) { // CraftBukkit start @@ -17,7 +9,7 @@ index 2a7ae521654ad5c9f392baa5562e64bb71b13097..3a3e6992563236141db687084aeec968 boolean anyDeepSleep = sleepingPlayers.stream().anyMatch(Player::isSleepingLongEnough); return anyDeepSleep && i >= this.sleepersNeeded(requiredSleepPercentage); // CraftBukkit end -@@ -43,7 +43,7 @@ public class SleepStatus { +@@ -43,7 +_,7 @@ for (ServerPlayer serverPlayer : players) { if (!serverPlayer.isSpectator()) { this.activePlayers++; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch index ab522903f..7fb3454f4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/stats/ServerRecipeBook.java b/net/minecraft/stats/ServerRecipeBook.java -index 2158b20458de63897131db3d425d1efcc358cace..7bd35dba7c7536e5451603759e004e1e31a9b614 100644 --- a/net/minecraft/stats/ServerRecipeBook.java +++ b/net/minecraft/stats/ServerRecipeBook.java -@@ -133,6 +133,7 @@ public class ServerRecipeBook extends RecipeBook { +@@ -102,6 +_,7 @@ private void loadRecipes(List>> recipes, Consumer>> output, Predicate>> isRecognized) { for (ResourceKey> resourceKey : recipes) { if (!isRecognized.test(resourceKey)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch index 0acbf24a2..b8d231182 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/util/StringUtil.java b/net/minecraft/util/StringUtil.java -index 77947e6915facee44588943fcd3e5b513de37e77..c3a99fe7b49858bc0ca9a7f800b0db40465f6901 100644 --- a/net/minecraft/util/StringUtil.java +++ b/net/minecraft/util/StringUtil.java -@@ -87,6 +87,7 @@ public class StringUtil { +@@ -87,6 +_,7 @@ // Paper start - Username validation public static boolean isReasonablePlayerName(final String name) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch index e7f19bda9..a70c7a253 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/damagesource/CombatRules.java b/net/minecraft/world/damagesource/CombatRules.java -index d5524038314591a10c9f08a68e2ac91f6079a897..bf82de45bf98e8605a1fdb69803f75f471c4af43 100644 --- a/net/minecraft/world/damagesource/CombatRules.java +++ b/net/minecraft/world/damagesource/CombatRules.java -@@ -15,7 +15,7 @@ public class CombatRules { +@@ -15,7 +_,7 @@ public static float getDamageAfterAbsorb(LivingEntity entity, float damage, DamageSource damageSource, float armorValue, float armorToughness) { float f = 2.0F + armorToughness / 4.0F; @@ -17,7 +9,7 @@ index d5524038314591a10c9f08a68e2ac91f6079a897..bf82de45bf98e8605a1fdb69803f75f4 float f2 = f1 / 25.0F; ItemStack weaponItem = damageSource.getWeaponItem(); float f3; -@@ -30,7 +30,7 @@ public class CombatRules { +@@ -30,7 +_,7 @@ } public static float getDamageAfterMagicAbsorb(float damage, float enchantModifiers) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch index 9ee472807..2bc01f621 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/damagesource/CombatTracker.java b/net/minecraft/world/damagesource/CombatTracker.java -index 4cec197634fac341cca1ed108f1ecb0561f72461..aa6213ca382e4901363317df1e30332c5166f271 100644 --- a/net/minecraft/world/damagesource/CombatTracker.java +++ b/net/minecraft/world/damagesource/CombatTracker.java -@@ -64,7 +64,7 @@ public class CombatTracker { +@@ -64,7 +_,7 @@ private Component getMessageForAssistedFall(Entity entity, Component entityDisplayName, String hasWeaponTranslationKey, String noWeaponTranslationKey) { ItemStack itemStack = entity instanceof LivingEntity livingEntity ? livingEntity.getMainHandItem() : ItemStack.EMPTY; @@ -17,7 +9,7 @@ index 4cec197634fac341cca1ed108f1ecb0561f72461..aa6213ca382e4901363317df1e30332c ? Component.translatable(hasWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName, itemStack.getDisplayName()) : Component.translatable(noWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName); } -@@ -108,6 +108,15 @@ public class CombatTracker { +@@ -108,6 +_,15 @@ 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/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch index 8b6388ba5..581f8d027 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/damagesource/DamageSource.java b/net/minecraft/world/damagesource/DamageSource.java -index bb021fc9de91f8c4f79e6a753d57fa157efbbda7..5fa92eef9c6b88cf96d3fe427e4d4f16953e8094 100644 --- a/net/minecraft/world/damagesource/DamageSource.java +++ b/net/minecraft/world/damagesource/DamageSource.java -@@ -30,6 +30,8 @@ public class DamageSource { +@@ -30,6 +_,8 @@ @Nullable private org.bukkit.block.BlockState fromBlockSnapshot; // Captured block snapshot when the eventBlockDamager is not relevant (e.g. for bad respawn point explosions the block is already removed) private boolean critical; // Supports arrows and sweeping damage @@ -17,7 +9,7 @@ index bb021fc9de91f8c4f79e6a753d57fa157efbbda7..5fa92eef9c6b88cf96d3fe427e4d4f16 public DamageSource knownCause(final org.bukkit.event.entity.EntityDamageEvent.DamageCause cause) { final DamageSource damageSource = this.copy(); -@@ -42,6 +44,30 @@ public class DamageSource { +@@ -42,6 +_,30 @@ return this.knownCause; } @@ -48,7 +40,7 @@ index bb021fc9de91f8c4f79e6a753d57fa157efbbda7..5fa92eef9c6b88cf96d3fe427e4d4f16 @Nullable public Entity eventEntityDamager() { return this.eventEntityDamager; -@@ -103,6 +129,8 @@ public class DamageSource { +@@ -103,6 +_,8 @@ damageSource.eventBlockDamager = this.eventBlockDamager; damageSource.fromBlockSnapshot = this.fromBlockSnapshot; damageSource.critical = this.critical; @@ -57,7 +49,7 @@ index bb021fc9de91f8c4f79e6a753d57fa157efbbda7..5fa92eef9c6b88cf96d3fe427e4d4f16 return damageSource; } // CraftBukkit end -@@ -169,12 +197,21 @@ public class DamageSource { +@@ -169,11 +_,20 @@ } else { Component component = this.causingEntity == null ? this.directEntity.getDisplayName() : this.causingEntity.getDisplayName(); ItemStack itemStack = this.causingEntity instanceof LivingEntity livingEntity1 ? livingEntity1.getMainHandItem() : ItemStack.EMPTY; @@ -67,7 +59,7 @@ index bb021fc9de91f8c4f79e6a753d57fa157efbbda7..5fa92eef9c6b88cf96d3fe427e4d4f16 : Component.translatable(string, livingEntity.getDisplayName(), component); } } - ++ + // Purpur start - Component related conveniences + public Component getLocalizedDeathMessage(String str, LivingEntity entity) { + net.kyori.adventure.text.Component name = io.papermc.paper.adventure.PaperAdventure.asAdventure(entity.getDisplayName()); @@ -76,7 +68,6 @@ index bb021fc9de91f8c4f79e6a753d57fa157efbbda7..5fa92eef9c6b88cf96d3fe427e4d4f16 + return io.papermc.paper.adventure.PaperAdventure.asVanilla(component); + } + // Purpur end - Component related conveniences -+ + public String getMsgId() { return this.type().msgId(); - } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch index d3490d766..29006dbaf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/damagesource/DamageSources.java b/net/minecraft/world/damagesource/DamageSources.java -index cc206ecff2d95f0398ca424c178a336ad80cc396..7afad362801082e5f2e3aceda864ad2a7d4e5ebb 100644 --- a/net/minecraft/world/damagesource/DamageSources.java +++ b/net/minecraft/world/damagesource/DamageSources.java -@@ -42,6 +42,8 @@ public class DamageSources { +@@ -42,6 +_,8 @@ private final DamageSource stalagmite; private final DamageSource outsideBorder; private final DamageSource genericKill; @@ -17,7 +9,7 @@ index cc206ecff2d95f0398ca424c178a336ad80cc396..7afad362801082e5f2e3aceda864ad2a public DamageSources(RegistryAccess registry) { this.damageTypes = registry.lookupOrThrow(Registries.DAMAGE_TYPE); -@@ -70,6 +72,8 @@ public class DamageSources { +@@ -70,6 +_,8 @@ this.stalagmite = this.source(DamageTypes.STALAGMITE); this.outsideBorder = this.source(DamageTypes.OUTSIDE_BORDER); this.genericKill = this.source(DamageTypes.GENERIC_KILL); @@ -26,10 +18,11 @@ index cc206ecff2d95f0398ca424c178a336ad80cc396..7afad362801082e5f2e3aceda864ad2a } private DamageSource source(ResourceKey damageTypeKey) { -@@ -84,6 +88,18 @@ public class DamageSources { +@@ -83,6 +_,18 @@ + private DamageSource source(ResourceKey damageTypeKey, @Nullable Entity causingEntity, @Nullable Entity directEntity) { return new DamageSource(this.damageTypes.getOrThrow(damageTypeKey), causingEntity, directEntity); } - ++ + // Purpur start - Dont run with scissor + public DamageSource scissors() { + return this.scissors; @@ -41,7 +34,6 @@ index cc206ecff2d95f0398ca424c178a336ad80cc396..7afad362801082e5f2e3aceda864ad2a + return this.stonecutter; + } + // Purpur end - Stonecutter damage -+ + public DamageSource inFire() { return this.inFire; - } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch index a368f6b64..ea284de7b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/effect/HungerMobEffect.java b/net/minecraft/world/effect/HungerMobEffect.java -index 0890694ae96b6cd60079c34066e7a6e288f038e8..6c0e6bd2a171edc57dec71af178764454de73313 100644 --- a/net/minecraft/world/effect/HungerMobEffect.java +++ b/net/minecraft/world/effect/HungerMobEffect.java -@@ -12,7 +12,7 @@ class HungerMobEffect extends MobEffect { +@@ -12,7 +_,7 @@ @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { if (entity instanceof Player player) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch index 08fba0133..0e8d7e3f7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/effect/PoisonMobEffect.java b/net/minecraft/world/effect/PoisonMobEffect.java -index 75327fd96858fd508ea63a6983e5cbc655a8800f..73cfc61ac3f8e33e6b9f4fd08a292266c0adb535 100644 --- a/net/minecraft/world/effect/PoisonMobEffect.java +++ b/net/minecraft/world/effect/PoisonMobEffect.java -@@ -12,8 +12,8 @@ public class PoisonMobEffect extends MobEffect { +@@ -12,8 +_,8 @@ @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch index 41003563d..f19f319af 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/effect/RegenerationMobEffect.java b/net/minecraft/world/effect/RegenerationMobEffect.java -index 76cffa4d4d18d6c04749d941dbdf5eb60aed4095..81481267a1577721dcc405f39a4c350bd59ac9a2 100644 --- a/net/minecraft/world/effect/RegenerationMobEffect.java +++ b/net/minecraft/world/effect/RegenerationMobEffect.java -@@ -11,7 +11,7 @@ class RegenerationMobEffect extends MobEffect { +@@ -11,7 +_,7 @@ @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { if (entity.getHealth() < entity.getMaxHealth()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch index 4674ebbb3..f2d21d380 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/effect/SaturationMobEffect.java b/net/minecraft/world/effect/SaturationMobEffect.java -index c192165910f6b139df6f604d0bce989061efa9cb..622c23f4570d07de8bee9623bf900aabb3331ded 100644 --- a/net/minecraft/world/effect/SaturationMobEffect.java +++ b/net/minecraft/world/effect/SaturationMobEffect.java -@@ -16,7 +16,8 @@ class SaturationMobEffect extends InstantenousMobEffect { +@@ -16,7 +_,8 @@ int oldFoodLevel = player.getFoodData().foodLevel; org.bukkit.event.entity.FoodLevelChangeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(player, amplifier + 1 + oldFoodLevel); if (!event.isCancelled()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch index ec94a99cb..767637659 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/effect/WitherMobEffect.java b/net/minecraft/world/effect/WitherMobEffect.java -index 1fc9e1ad541c46124183a401b2a7d99aea69cecf..881271f0bc77a8a8a7d31daad9a8188bebaca67b 100644 --- a/net/minecraft/world/effect/WitherMobEffect.java +++ b/net/minecraft/world/effect/WitherMobEffect.java -@@ -12,7 +12,7 @@ public class WitherMobEffect extends MobEffect { +@@ -12,7 +_,7 @@ @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch index bcd07edf0..ff1e039a1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/EntitySelector.java b/net/minecraft/world/entity/EntitySelector.java -index bfd58eb04eee606ac0a8071de9bf75f46c35decb..0c1953754220ff72e18f0396134507d93ba7b1b8 100644 --- a/net/minecraft/world/entity/EntitySelector.java +++ b/net/minecraft/world/entity/EntitySelector.java -@@ -28,6 +28,8 @@ public final class EntitySelector { +@@ -28,6 +_,8 @@ 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 - Ability to control player's insomnia and phantoms diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch index 7bd87b59a..384908afc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java -index 3f351fdb3cb76612d88bde713a2639d4319a7c6d..bda521cca91f070139f5e9bdef6a50e1497f53ff 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java -@@ -26,6 +26,13 @@ public class GlowSquid extends Squid { +@@ -27,6 +_,13 @@ super(entityType, level); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch index a84245ab6..4cd99d012 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/attributes/RangedAttribute.java b/net/minecraft/world/entity/ai/attributes/RangedAttribute.java -index a87accd5fe14102e7a2938f991a8ed0b9accd1bb..c7515f7f24e39d6931dcf18574cb47d754983903 100644 --- a/net/minecraft/world/entity/ai/attributes/RangedAttribute.java +++ b/net/minecraft/world/entity/ai/attributes/RangedAttribute.java -@@ -29,6 +29,7 @@ public class RangedAttribute extends Attribute { +@@ -29,6 +_,7 @@ @Override public double sanitizeValue(double value) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch index 1b5e18b00..f90e63ebd 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java b/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java -index 296ecffbbce931b42c67ea523373a61cea23acf4..b2eec24be3635f2c19da9b147211fe6cb454c780 100644 --- a/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java +++ b/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java -@@ -55,7 +55,7 @@ public class InteractWithDoor { +@@ -55,7 +_,7 @@ Node nextNode = path.getNextNode(); BlockPos blockPos = previousNode.asBlockPos(); BlockState blockState = level.getBlockState(blockPos); @@ -17,7 +9,7 @@ index 296ecffbbce931b42c67ea523373a61cea23acf4..b2eec24be3635f2c19da9b147211fe6c DoorBlock doorBlock = (DoorBlock)blockState.getBlock(); if (!doorBlock.isOpen(blockState)) { // CraftBukkit start - entities opening doors -@@ -72,7 +72,7 @@ public class InteractWithDoor { +@@ -72,7 +_,7 @@ BlockPos blockPos1 = nextNode.asBlockPos(); BlockState blockState1 = level.getBlockState(blockPos1); @@ -26,7 +18,7 @@ index 296ecffbbce931b42c67ea523373a61cea23acf4..b2eec24be3635f2c19da9b147211fe6c DoorBlock doorBlock1 = (DoorBlock)blockState1.getBlock(); if (!doorBlock1.isOpen(blockState1)) { // CraftBukkit start - entities opening doors -@@ -118,7 +118,7 @@ public class InteractWithDoor { +@@ -118,7 +_,7 @@ iterator.remove(); } else { BlockState blockState = level.getBlockState(blockPos); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch index b41af4c20..2bbc2776e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java b/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java -index 400e6d49144b3e5803901938dcd2ac4e52e9c131..45c45afeffcfba3558bdf46cbe39ff60004ffc01 100644 --- a/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java +++ b/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java -@@ -46,6 +46,7 @@ public class ShowTradesToPlayer extends Behavior { +@@ -46,6 +_,7 @@ @Override public boolean canStillUse(ServerLevel level, Villager entity, long gameTime) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch index 9a3c9b872..6fbb7bf98 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java b/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java -index 6eaf0bd944349cd0c6084462ac385fa2caafe933..be59d0c27a83b329ec3f97c029cfb9c114e22472 100644 --- a/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java +++ b/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java -@@ -22,6 +22,7 @@ public class LlamaFollowCaravanGoal extends Goal { +@@ -22,6 +_,7 @@ @Override public boolean canUse() { @@ -16,7 +8,7 @@ index 6eaf0bd944349cd0c6084462ac385fa2caafe933..be59d0c27a83b329ec3f97c029cfb9c1 if (!this.llama.isLeashed() && !this.llama.inCaravan()) { List entities = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0, 4.0, 9.0), entity1 -> { EntityType type = entity1.getType(); -@@ -71,6 +72,7 @@ public class LlamaFollowCaravanGoal extends Goal { +@@ -71,6 +_,7 @@ @Override public boolean canContinueToUse() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch index 6ff6bb7c6..f623c03a9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java b/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java -index 722f378bb3726200b6fe88948bf1e1d3514a7b5c..e337e22c2cf82b0c1cab3fe0a9ff894c0c718716 100644 --- a/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java +++ b/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java -@@ -116,9 +116,9 @@ public class RangedBowAttackGoal extends Go +@@ -116,9 +_,9 @@ } this.mob.lookAt(target, 30.0F, 30.0F); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch index 90f79d9f5..cb39bb4e0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java b/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java -index 878d7813b3f2f52bef336c6d855d738bc2f83491..d0f94f065d2ecf6ca6b47ac49422ffa656a18f55 100644 --- a/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java +++ b/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java -@@ -58,7 +58,7 @@ public class RunAroundLikeCrazyGoal extends Goal { +@@ -58,7 +_,7 @@ if (firstPassenger instanceof Player player) { int temper = this.horse.getTemper(); int maxTemper = this.horse.getMaxTemper(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch index 6cf8696b3..b072c14f4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/goal/SwellGoal.java b/net/minecraft/world/entity/ai/goal/SwellGoal.java -index 243a552f6f0c8c2bd25c0209c95e3bca08734711..38fd0196a0f5a90e39fa4eb8592f89bf6b88ccf5 100644 --- a/net/minecraft/world/entity/ai/goal/SwellGoal.java +++ b/net/minecraft/world/entity/ai/goal/SwellGoal.java -@@ -55,6 +55,14 @@ public class SwellGoal extends Goal { +@@ -55,6 +_,14 @@ this.creeper.setSwellDir(-1); } else { this.creeper.setSwellDir(1); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch index b25734824..df5fd519b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -index 2f8920d8ee765d057a22d76f24f7d7dc1b0b17ca..6f0fcaeaba2fec2ad944d63550f0c3e29bd9133c 100644 --- a/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -@@ -64,6 +64,10 @@ public class TargetingConditions { +@@ -64,6 +_,10 @@ return false; } else if (this.selector != null && !this.selector.test(target, level)) { return false; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch index dd38c623c..d6070948c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java -index eb9fb57440f498079182030a46034008d3f6b5e8..ed8920bb6d29ce49626bc716aa2c2ce938f6d92b 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java -@@ -232,7 +232,7 @@ public class Bat extends AmbientCreature { +@@ -233,7 +_,7 @@ } else { int maxLocalRawBrightness = level.getMaxLocalRawBrightness(pos); int i = 4; @@ -17,7 +9,7 @@ index eb9fb57440f498079182030a46034008d3f6b5e8..ed8920bb6d29ce49626bc716aa2c2ce9 i = 7; } else if (randomSource.nextBoolean()) { return false; -@@ -244,6 +244,11 @@ public class Bat extends AmbientCreature { +@@ -245,6 +_,11 @@ } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch index 3aefa55a5..3c0826a05 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/AbstractCow.java b/net/minecraft/world/entity/animal/AbstractCow.java -index dd8ea03ba823996a5c97562e357650ab34d0e32e..4e81bc7215c845b316bcd46ce29f49af7f986088 100644 --- a/net/minecraft/world/entity/animal/AbstractCow.java +++ b/net/minecraft/world/entity/animal/AbstractCow.java -@@ -39,7 +39,7 @@ public abstract class AbstractCow extends Animal { +@@ -39,7 +_,7 @@ this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(1, new PanicGoal(this, 2.0)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0)); @@ -17,7 +9,7 @@ index dd8ea03ba823996a5c97562e357650ab34d0e32e..4e81bc7215c845b316bcd46ce29f49af this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); -@@ -95,6 +95,10 @@ public abstract class AbstractCow extends Animal { +@@ -95,6 +_,10 @@ ItemStack itemStack = ItemUtils.createFilledResult(itemInHand, player, org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getItemStack())); // CraftBukkit player.setItemInHand(hand, itemStack); return InteractionResult.SUCCESS; @@ -28,7 +20,7 @@ index dd8ea03ba823996a5c97562e357650ab34d0e32e..4e81bc7215c845b316bcd46ce29f49af } else { return super.mobInteract(player, hand); } -@@ -104,4 +108,67 @@ public abstract class AbstractCow extends Animal { +@@ -104,4 +_,67 @@ public EntityDimensions getDefaultDimensions(Pose pose) { return this.isBaby() ? BABY_DIMENSIONS : super.getDefaultDimensions(pose); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch index 4166696de..41eefdb1a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index edca2fa21e600fa1e7ef91af673adaae7d4c86c4..585131365c40136cf8a8a715b077982091ee38d5 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -167,7 +167,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -168,7 +_,7 @@ // Paper end - Fix MC-167279 this.lookControl = new Bee.BeeLookControl(this); this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F); @@ -17,7 +9,7 @@ index edca2fa21e600fa1e7ef91af673adaae7d4c86c4..585131365c40136cf8a8a715b0779820 this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F); this.setPathfindingMalus(PathType.COCOA, -1.0F); this.setPathfindingMalus(PathType.FENCE, -1.0F); -@@ -365,7 +365,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -366,7 +_,7 @@ } public static boolean isNightOrRaining(Level level) { @@ -26,7 +18,7 @@ index edca2fa21e600fa1e7ef91af673adaae7d4c86c4..585131365c40136cf8a8a715b0779820 } public void setStayOutOfHiveCountdown(int stayOutOfHiveCountdown) { -@@ -388,7 +388,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -389,7 +_,7 @@ @Override protected void customServerAiStep(ServerLevel level) { boolean hasStung = this.hasStung(); @@ -35,7 +27,7 @@ index edca2fa21e600fa1e7ef91af673adaae7d4c86c4..585131365c40136cf8a8a715b0779820 this.underWaterTicks++; } else { this.underWaterTicks = 0; -@@ -398,6 +398,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -399,6 +_,7 @@ this.hurtServer(level, this.damageSources().drown(), 1.0F); } @@ -43,7 +35,7 @@ index edca2fa21e600fa1e7ef91af673adaae7d4c86c4..585131365c40136cf8a8a715b0779820 if (hasStung) { this.timeSinceSting++; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { -@@ -1135,6 +1136,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -1133,6 +_,7 @@ Bee.this.savedFlowerPos = optional.get(); Bee.this.navigation .moveTo(Bee.this.savedFlowerPos.getX() + 0.5, Bee.this.savedFlowerPos.getY() + 0.5, Bee.this.savedFlowerPos.getZ() + 0.5, 1.2F); @@ -51,7 +43,7 @@ index edca2fa21e600fa1e7ef91af673adaae7d4c86c4..585131365c40136cf8a8a715b0779820 return true; } else { Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60); -@@ -1181,6 +1183,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -1179,6 +_,7 @@ this.pollinating = false; Bee.this.navigation.stop(); Bee.this.remainingCooldownBeforeLocatingNewFlower = 200; @@ -59,7 +51,7 @@ index edca2fa21e600fa1e7ef91af673adaae7d4c86c4..585131365c40136cf8a8a715b0779820 } @Override -@@ -1227,6 +1230,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -1225,6 +_,7 @@ this.setWantedPos(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch index da9463a34..b8bee71f9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index 9c60140ef1ae9973ce39643c5253ddb0eac1c97b..7894db23663c4647742f543195b610bd7e1f3360 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java -@@ -353,6 +353,14 @@ public class Cat extends TamableAnimal { +@@ -354,6 +_,14 @@ return this.isTame() && otherAnimal instanceof Cat cat && cat.isTame() && super.canMate(otherAnimal); } @@ -23,7 +15,7 @@ index 9c60140ef1ae9973ce39643c5253ddb0eac1c97b..7894db23663c4647742f543195b610bd @Nullable @Override public SpawnGroupData finalizeSpawn( -@@ -451,7 +459,7 @@ public class Cat extends TamableAnimal { +@@ -452,7 +_,7 @@ } private void tryToTame(Player player) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch index 8883d198f..0e09ac94d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java -index 8f2af65c58da50be2776a21b10db5eb9cb5f3076..bca2e4659f4afdd7106f77e32af1943e4d276f5e 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java -@@ -73,6 +73,7 @@ public class Dolphin extends AgeableWaterCreature { +@@ -74,6 +_,7 @@ private static final boolean DEFAULT_GOT_FISH = false; @Nullable public BlockPos treasurePos; @@ -16,7 +8,7 @@ index 8f2af65c58da50be2776a21b10db5eb9cb5f3076..bca2e4659f4afdd7106f77e32af1943e public Dolphin(EntityType entityType, Level level) { super(entityType, level); -@@ -89,6 +90,7 @@ public class Dolphin extends AgeableWaterCreature { +@@ -90,6 +_,7 @@ this.setAirSupply(this.getMaxAirSupply()); this.setXRot(0.0F); SpawnGroupData spawnGroupData1 = Objects.requireNonNullElseGet(spawnGroupData, () -> new AgeableMob.AgeableMobGroupData(0.1F)); @@ -24,7 +16,7 @@ index 8f2af65c58da50be2776a21b10db5eb9cb5f3076..bca2e4659f4afdd7106f77e32af1943e return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData1); } -@@ -155,17 +157,19 @@ public class Dolphin extends AgeableWaterCreature { +@@ -156,17 +_,19 @@ protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); @@ -45,7 +37,7 @@ index 8f2af65c58da50be2776a21b10db5eb9cb5f3076..bca2e4659f4afdd7106f77e32af1943e } public static AttributeSupplier.Builder createAttributes() { -@@ -398,6 +402,7 @@ public class Dolphin extends AgeableWaterCreature { +@@ -399,6 +_,7 @@ @Override public boolean canUse() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch index 097b3cbc0..134e6108c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 5c7572b75afcfa9965fcda5965f6ae2e59babb46..4aae42396bd3abb131efe336d7b774384897671d 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -345,6 +345,11 @@ public class Fox extends Animal { +@@ -346,6 +_,11 @@ } private void setTargetGoals() { @@ -20,7 +12,7 @@ index 5c7572b75afcfa9965fcda5965f6ae2e59babb46..4aae42396bd3abb131efe336d7b77438 if (this.getVariant() == Fox.Variant.RED) { this.targetSelector.addGoal(4, this.landTargetGoal); this.targetSelector.addGoal(4, this.turtleEggTargetGoal); -@@ -372,6 +377,7 @@ public class Fox extends Animal { +@@ -373,6 +_,7 @@ public void setVariant(Fox.Variant variant) { this.entityData.set(DATA_TYPE_ID, variant.getId()); @@ -28,10 +20,11 @@ index 5c7572b75afcfa9965fcda5965f6ae2e59babb46..4aae42396bd3abb131efe336d7b77438 } @Nullable -@@ -706,6 +712,29 @@ public class Fox extends Animal { +@@ -702,6 +_,29 @@ + return slot == EquipmentSlot.MAINHAND; } // Paper end - ++ + // Purpur start - Tulips change fox type + @Override + public net.minecraft.world.InteractionResult mobInteract(Player player, net.minecraft.world.InteractionHand hand) { @@ -54,7 +47,6 @@ index 5c7572b75afcfa9965fcda5965f6ae2e59babb46..4aae42396bd3abb131efe336d7b77438 + return super.mobInteract(player, hand); + } + // Purpur end - Tulips change fox type -+ + @Override // Paper start - Cancellable death event - protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(ServerLevel level, DamageSource damageSource) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch index 4d479f9f3..0666bfab4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index cc2fd681d2383e62191e7b380322f2e176d79f1e..0931bab3f52ccc4e405be22559323df90bcc065e 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -198,6 +198,13 @@ public class MushroomCow extends AbstractCow implements Shearable { +@@ -199,6 +_,13 @@ level.playSound(null, this, SoundEvents.MOOSHROOM_SHEAR, soundSource, 1.0F, 1.0F); this.convertTo(EntityType.COW, ConversionParams.single(this, false, false), cow -> { level.sendParticles(ParticleTypes.EXPLOSION, this.getX(), this.getY(0.5), this.getZ(), 1, 0.0, 0.0, 0.0, 0.0); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch index 79d558b0d..48b3a30ef 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index 9e86a42f04d06c3dcd241f16ab876b0c8422fd81..48c8fdfea8687f37187b6092c285275c12963ea0 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java -@@ -233,7 +233,7 @@ public class Ocelot extends Animal { +@@ -234,7 +_,7 @@ public boolean checkSpawnObstruction(LevelReader level) { if (level.isUnobstructed(this) && !level.containsAnyLiquid(this.getBoundingBox())) { BlockPos blockPos = this.blockPosition(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch index 9bed65478..aa96df2cb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java -index cff10bb74a216238288280399910ab1fa85cb1a5..ca661c215d2eb719392a30c7b917bd622524c4dc 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java -@@ -157,6 +157,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -159,6 +_,7 @@ protected void registerGoals() { this.goalSelector.addGoal(0, new TamableAnimal.TamableAnimalPanicGoal(1.25)); this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -16,7 +8,7 @@ index cff10bb74a216238288280399910ab1fa85cb1a5..ca661c215d2eb719392a30c7b917bd62 this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0, 5.0F, 1.0F)); -@@ -262,7 +263,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -264,7 +_,7 @@ } if (!this.level().isClientSide) { @@ -25,7 +17,7 @@ index cff10bb74a216238288280399910ab1fa85cb1a5..ca661c215d2eb719392a30c7b917bd62 this.tame(player); this.level().broadcastEntityEvent(this, (byte)7); } else { -@@ -270,6 +271,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -272,6 +_,7 @@ } } @@ -33,7 +25,7 @@ index cff10bb74a216238288280399910ab1fa85cb1a5..ca661c215d2eb719392a30c7b917bd62 return InteractionResult.SUCCESS; } else if (!itemInHand.is(ItemTags.PARROT_POISONOUS_FOOD)) { if (!this.isFlying() && this.isTame() && this.isOwnedBy(player)) { -@@ -294,7 +296,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -296,7 +_,7 @@ @Override public boolean isFood(ItemStack stack) { @@ -42,7 +34,7 @@ index cff10bb74a216238288280399910ab1fa85cb1a5..ca661c215d2eb719392a30c7b917bd62 } public static boolean checkParrotSpawnRules( -@@ -309,13 +311,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -311,13 +_,13 @@ @Override public boolean canMate(Animal otherAnimal) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch index 21f677d5b..3758d8143 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index ec2074741b52cf8f1ac3c0276bcfc9b8806b71bf..027d47b89d306bf6bc3d5457a163041f6aa7ab49 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java -@@ -141,6 +141,19 @@ public class Pig extends Animal implements ItemSteerable { +@@ -142,6 +_,19 @@ @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { boolean isFood = this.isFood(player.getItemInHand(hand)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch index 66d2543dc..869d2910f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java -index fcdaaed31c38acb55e66599cd3314606d223cd67..d018b1a967557cfae0d3227d8f43d281a78a22bc 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java -@@ -64,6 +64,29 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -65,6 +_,29 @@ super(entityType, level); } @@ -38,7 +30,7 @@ index fcdaaed31c38acb55e66599cd3314606d223cd67..d018b1a967557cfae0d3227d8f43d281 @Nullable @Override public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { -@@ -72,7 +95,7 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -73,7 +_,7 @@ @Override public boolean isFood(ItemStack stack) { @@ -47,7 +39,7 @@ index fcdaaed31c38acb55e66599cd3314606d223cd67..d018b1a967557cfae0d3227d8f43d281 } @Override -@@ -81,6 +104,12 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -82,6 +_,12 @@ this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(1, new PolarBear.PolarBearMeleeAttackGoal()); this.goalSelector.addGoal(1, new PanicGoal(this, 2.0, mob -> mob.isBaby() ? DamageTypeTags.PANIC_CAUSES : DamageTypeTags.PANIC_ENVIRONMENTAL_CAUSES)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch index ff258a8c6..ea0874b61 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index cc7d990f271af1371aa62e8a2ee2ee1bfffb621a..e9445749c5264bd0ce7c426845cb342d34dea713 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java -@@ -403,10 +403,23 @@ public class Rabbit extends Animal { +@@ -404,10 +_,23 @@ } this.setVariant(randomRabbitVariant); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch index 976811185..83c0aed86 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index 58e1bc90cbc32669fa6c66d214119f0c459ff38c..2e51e64991d326fc055520b6fefc76e80f7c2d97 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java -@@ -46,10 +46,29 @@ public class Squid extends AgeableWaterCreature { +@@ -46,10 +_,29 @@ public Squid(EntityType entityType, Level level) { super(entityType, level); @@ -39,7 +31,7 @@ index 58e1bc90cbc32669fa6c66d214119f0c459ff38c..2e51e64991d326fc055520b6fefc76e8 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); -@@ -127,6 +146,7 @@ public class Squid extends AgeableWaterCreature { +@@ -127,6 +_,7 @@ } if (this.isInWater()) { @@ -47,7 +39,7 @@ index 58e1bc90cbc32669fa6c66d214119f0c459ff38c..2e51e64991d326fc055520b6fefc76e8 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; -@@ -308,7 +328,7 @@ public class Squid extends AgeableWaterCreature { +@@ -308,7 +_,7 @@ int noActionTime = this.squid.getNoActionTime(); if (noActionTime > 100) { this.squid.movementVector = Vec3.ZERO; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch index fd45109aa..3552d2bfc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/WaterAnimal.java b/net/minecraft/world/entity/animal/WaterAnimal.java -index 2b5e091b6ebe17e30d8d0e73999e19eed49e9a9f..6ff9ca735eba1c3376f3bc4916d5ab76af782de1 100644 --- a/net/minecraft/world/entity/animal/WaterAnimal.java +++ b/net/minecraft/world/entity/animal/WaterAnimal.java -@@ -76,8 +76,7 @@ public abstract class WaterAnimal extends PathfinderMob { +@@ -76,8 +_,7 @@ seaLevel = level.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(seaLevel); i = level.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(i); // Paper end - Make water animal spawn height configurable diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch index 80b14be45..71d967ea2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index b22321ead9d66cb089b67276743624b3cca52fc1..c399192687e01bd4a05e4a85d71493d4c3c3e9a8 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -395,6 +395,7 @@ public class Goat extends Animal { +@@ -396,6 +_,7 @@ // Paper start - Goat ram API public void ram(net.minecraft.world.entity.LivingEntity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch index 76ebb6724..b58f13a85 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index d813427cf20117014bc42af0eb7cdee037fbcd9c..57f9f705c62706902efe9a7873f0e3866820f7d9 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -@@ -38,6 +38,24 @@ public class EndCrystal extends Entity { +@@ -39,6 +_,24 @@ this.setPos(x, y, z); } @@ -33,7 +25,7 @@ index d813427cf20117014bc42af0eb7cdee037fbcd9c..57f9f705c62706902efe9a7873f0e386 @Override protected Entity.MovementEmission getMovementEmission() { return Entity.MovementEmission.NONE; -@@ -74,6 +92,8 @@ public class EndCrystal extends Entity { +@@ -75,6 +_,8 @@ } } // Paper end - Fix invulnerable end crystals @@ -42,7 +34,7 @@ index d813427cf20117014bc42af0eb7cdee037fbcd9c..57f9f705c62706902efe9a7873f0e386 } @Override -@@ -114,15 +134,17 @@ public class EndCrystal extends Entity { +@@ -115,15 +_,17 @@ } // CraftBukkit end if (!damageSource.is(DamageTypeTags.IS_EXPLOSION)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch index 416ca4306..8d855a599 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 0f3c88601357399d3b8efd2f0e3a531482bc1f3d..ea9d27a3205b3699b9577f42bb04254bd76e700e 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -960,6 +960,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -961,6 +_,7 @@ @Override protected boolean canRide(Entity entity) { @@ -16,7 +8,7 @@ index 0f3c88601357399d3b8efd2f0e3a531482bc1f3d..ea9d27a3205b3699b9577f42bb04254b return false; } -@@ -995,7 +996,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -996,7 +_,7 @@ boolean flag = level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT); int i = 500; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch index 074711b8c..052ef78b6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java -index 5d23d8754b304d5e2fd54400cc81c7fe5c14a804..9a00aead39e194de076ee651d2f75b29673cad1e 100644 --- a/net/minecraft/world/entity/item/PrimedTnt.java +++ b/net/minecraft/world/entity/item/PrimedTnt.java -@@ -253,4 +253,32 @@ public class PrimedTnt extends Entity implements TraceableEntity { +@@ -253,4 +_,32 @@ return !this.level().paperConfig().fixes.preventTntFromMovingInWater && super.isPushedByFluid(); } // Paper end - Option to prevent TNT from moving in water diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch index 91ff004c1..af806331a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 22d5ccb271fc19255e99afa5d1ff10549a20dc31..025b74f7fe2094110a9fd293911588f361785d0a 100644 --- a/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java -@@ -158,10 +158,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -158,10 +_,7 @@ this.reassessWeaponGoal(); this.setCanPickUpLoot(this.level().paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.skeletons || random.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper - Add world settings for mobs picking up loot if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { @@ -20,7 +12,7 @@ index 22d5ccb271fc19255e99afa5d1ff10549a20dc31..025b74f7fe2094110a9fd293911588f3 this.setItemSlot(EquipmentSlot.HEAD, new ItemStack(random.nextFloat() < 0.1F ? Blocks.JACK_O_LANTERN : Blocks.CARVED_PUMPKIN)); this.setDropChance(EquipmentSlot.HEAD, 0.0F); } -@@ -217,7 +214,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -217,7 +_,7 @@ if (event.getProjectile() == arrow.getBukkitEntity()) { // CraftBukkit end Projectile.spawnProjectileUsingShoot( diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch index e9112d5b3..b31fc41ee 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java -index 3f5e1e98802e5dd1cfc9075559e1102046605a04..c2327306f093c834da9574f9466236fbec572aec 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java -@@ -54,6 +54,7 @@ public class Creeper extends Monster { +@@ -55,6 +_,7 @@ public int explosionRadius = 3; private int droppedSkulls; public @Nullable Entity entityIgniter; // CraftBukkit @@ -16,7 +8,7 @@ index 3f5e1e98802e5dd1cfc9075559e1102046605a04..c2327306f093c834da9574f9466236fb public Creeper(EntityType entityType, Level level) { super(entityType, level); -@@ -157,6 +158,27 @@ public class Creeper extends Monster { +@@ -158,6 +_,27 @@ return false; // CraftBukkit } @@ -44,7 +36,7 @@ index 3f5e1e98802e5dd1cfc9075559e1102046605a04..c2327306f093c834da9574f9466236fb @Override public SoundEvent getHurtSound(DamageSource damageSource) { return SoundEvents.CREEPER_HURT; -@@ -239,14 +261,16 @@ public class Creeper extends Monster { +@@ -240,14 +_,16 @@ } public void explodeCreeper() { @@ -63,7 +55,7 @@ index 3f5e1e98802e5dd1cfc9075559e1102046605a04..c2327306f093c834da9574f9466236fb this.spawnLingeringCloud(); this.triggerOnDeathMobEffects(serverLevel, Entity.RemovalReason.KILLED); this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.EXPLODE); // CraftBukkit - add Bukkit remove cause -@@ -257,6 +281,7 @@ public class Creeper extends Monster { +@@ -258,6 +_,7 @@ } // CraftBukkit end } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch index 28131613d..89708242d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java -index 4978cd2a7a84130fc0de1cc481b39d61f388c812..c0afb6f85cecf26bb1a08669ac3fcec8fea6cbfc 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java -@@ -82,10 +82,23 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -83,10 +_,23 @@ this.goalSelector.addGoal(2, new Drowned.DrownedAttackGoal(this, 1.0, false)); this.goalSelector.addGoal(5, new Drowned.DrownedGoToBeachGoal(this, 1.0)); this.goalSelector.addGoal(6, new Drowned.DrownedSwimUpGoal(this, 1.0, this.level().getSeaLevel())); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch index 2d3bc3cbf..10b7ca4d0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index 5ae08be75ca01924fc78bdd8d6bb6747ddc21aea..ed322ed572cac147acf26ba18a7803685557e0d7 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -103,7 +103,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -101,7 +_,7 @@ this.goalSelector.addGoal(11, new EnderMan.EndermanTakeBlockGoal(this)); this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); @@ -17,7 +9,7 @@ index 5ae08be75ca01924fc78bdd8d6bb6747ddc21aea..ed322ed572cac147acf26ba18a780368 this.targetSelector.addGoal(4, new ResetUniversalAngerTargetGoal<>(this, false)); } -@@ -220,7 +220,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -216,7 +_,7 @@ boolean isBeingStaredBy(Player player) { // Paper start - EndermanAttackPlayerEvent @@ -26,7 +18,7 @@ index 5ae08be75ca01924fc78bdd8d6bb6747ddc21aea..ed322ed572cac147acf26ba18a780368 final com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent event = new com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent((org.bukkit.entity.Enderman) getBukkitEntity(), (org.bukkit.entity.Player) player.getBukkitEntity()); event.setCancelled(!shouldAttack); return event.callEvent(); -@@ -376,6 +376,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -372,6 +_,7 @@ public boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) { if (this.isInvulnerableTo(level, damageSource)) { return false; @@ -34,7 +26,7 @@ index 5ae08be75ca01924fc78bdd8d6bb6747ddc21aea..ed322ed572cac147acf26ba18a780368 } else { AbstractThrownPotion abstractThrownPotion1 = damageSource.getDirectEntity() instanceof AbstractThrownPotion abstractThrownPotion ? abstractThrownPotion -@@ -392,6 +393,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -388,6 +_,7 @@ } else { boolean flag = abstractThrownPotion1 != null && this.hurtWithCleanWater(level, damageSource, abstractThrownPotion1, amount); @@ -42,7 +34,7 @@ index 5ae08be75ca01924fc78bdd8d6bb6747ddc21aea..ed322ed572cac147acf26ba18a780368 if (this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.INDIRECT)) { // Paper - EndermanEscapeEvent for (int i = 0; i < 64; i++) { if (this.teleport()) { -@@ -435,7 +437,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -431,7 +_,7 @@ @Override public boolean requiresCustomPersistence() { @@ -51,7 +43,7 @@ index 5ae08be75ca01924fc78bdd8d6bb6747ddc21aea..ed322ed572cac147acf26ba18a780368 } static class EndermanFreezeWhenLookedAt extends Goal { -@@ -479,6 +481,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -475,6 +_,7 @@ @Override public boolean canUse() { @@ -59,7 +51,7 @@ index 5ae08be75ca01924fc78bdd8d6bb6747ddc21aea..ed322ed572cac147acf26ba18a780368 return this.enderman.getCarriedBlock() != null && getServerLevel(this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0; -@@ -628,6 +631,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -624,6 +_,7 @@ @Override public boolean canUse() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch index b2a938b4b..c833d4fc6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Monster.java b/net/minecraft/world/entity/monster/Monster.java -index 5ef9566b16a4d0300ee45a993c46e734db156416..04d5910d736dee2a88a2602f4a98495459277157 100644 --- a/net/minecraft/world/entity/monster/Monster.java +++ b/net/minecraft/world/entity/monster/Monster.java -@@ -88,6 +88,14 @@ public abstract class Monster extends PathfinderMob implements Enemy { +@@ -88,6 +_,14 @@ } public static boolean isDarkEnoughToSpawn(ServerLevelAccessor level, BlockPos pos, RandomSource random) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch index d3674aef0..f9fb6e447 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 483b0499f1f70b3aa8862e6cd8e512748492bee0..73edb1a4e5daee16fa518c05de24e413847ab65d 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -159,7 +159,11 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -169,7 +_,11 @@ ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData ) { this.anchorPoint = this.blockPosition().above(5); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch index ac777878d..e15c2cd73 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index ca1856b18878b94ebfb566395e5eee13cf3c1cd5..85018a01b5d803a91228e2fa02717c2c518a3004 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java -@@ -73,6 +73,7 @@ public class Ravager extends Raider { +@@ -74,6 +_,7 @@ protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -16,7 +8,7 @@ index ca1856b18878b94ebfb566395e5eee13cf3c1cd5..85018a01b5d803a91228e2fa02717c2c this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); -@@ -153,7 +154,7 @@ public class Ravager extends Raider { +@@ -154,7 +_,7 @@ )) { BlockState blockState = serverLevel.getBlockState(blockPos); Block block = blockState.getBlock(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch index 20b9ec193..d7b870f37 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch @@ -1,22 +1,14 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index 1b8a4c548c1376d9cdd16a10d434da070c85f41d..a8c5c2ad80afd03b3fc53127b519b5c2b73bff85 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -53,6 +53,7 @@ import net.minecraft.world.level.Level; +@@ -52,6 +_,7 @@ import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.entity.EntityTypeTest; import net.minecraft.world.level.gameevent.GameEvent; - import net.minecraft.world.phys.AABB; - import net.minecraft.world.phys.Vec3; -@@ -93,6 +94,21 @@ public class Shulker extends AbstractGolem implements Enemy { + import net.minecraft.world.level.storage.ValueInput; + import net.minecraft.world.level.storage.ValueOutput; +@@ -94,6 +_,21 @@ this.lookControl = new Shulker.ShulkerLookControl(this); } @@ -38,7 +30,7 @@ index 1b8a4c548c1376d9cdd16a10d434da070c85f41d..a8c5c2ad80afd03b3fc53127b519b5c2 @Override protected void registerGoals() { this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F, 0.02F, true)); -@@ -460,11 +476,21 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -461,11 +_,21 @@ private void hitByShulkerBullet() { Vec3 vec3 = this.position(); AABB boundingBox = this.getBoundingBox(); @@ -64,7 +56,7 @@ index 1b8a4c548c1376d9cdd16a10d434da070c85f41d..a8c5c2ad80afd03b3fc53127b519b5c2 if (shulker != null) { shulker.setVariant(this.getVariant()); shulker.snapTo(vec3); -@@ -572,7 +598,7 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -573,7 +_,7 @@ } public Optional getVariant() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch index f08858dd4..5cc1ae280 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java -index 48f26ed693b43e3f65f1559ba69b3d7249664f71..1f35105f6ddd33fc9558d19590a5696479d2de83 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -139,4 +139,64 @@ public class Skeleton extends AbstractSkeleton { +@@ -140,4 +_,64 @@ this.spawnAtLocation(level, Items.SKELETON_SKULL); } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch index e3be46643..9d99390b1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java -index afa584e2aba6bebfb2dd343215b043c983281853..4b9e60d930bc3a4bfe9aad2e81391e57cfc45d40 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java -@@ -392,6 +392,19 @@ public class Strider extends Animal implements ItemSteerable { +@@ -392,6 +_,19 @@ @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { boolean isFood = this.isFood(player.getItemInHand(hand)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch index bde4df7bc..fe07bf809 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index d02b4bfc3834cdfae37983ec616ee3cbcd9f0988..79c2248b0dce457fed6d61d4b38eeb92bbc3927e 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -131,6 +131,11 @@ public class Vindicator extends AbstractIllager { +@@ -132,6 +_,11 @@ RandomSource random = level.getRandom(); this.populateDefaultEquipmentSlots(random, difficulty); this.populateDefaultEquipmentEnchantments(level, random, difficulty); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch index 54d51726c..c07653823 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index 39b65970a48568c95ff482b9636e7391f300ffa8..e15df574282e0f5ba5791435020bc6ac96860d15 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -118,7 +118,19 @@ public class Zombie extends Monster { +@@ -117,7 +_,19 @@ this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0)); this.targetSelector.addGoal(1, new HurtByTargetGoal(this).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); @@ -29,7 +21,7 @@ index 39b65970a48568c95ff482b9636e7391f300ffa8..e15df574282e0f5ba5791435020bc6ac this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } -@@ -552,10 +564,7 @@ public class Zombie extends Monster { +@@ -551,10 +_,7 @@ } if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch index 23f4645ae..44370007d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index a8cd7103e636b57be1270d0f3549c709330b5536..6b0bbcf99941d768d235b9f96c3e112a4dfea2fc 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -130,10 +130,10 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -129,10 +_,10 @@ public InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); if (itemInHand.is(Items.GOLDEN_APPLE)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch index a59f5630b..cd7502ad9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 05de183ce7b0be9b41f005b2ca36807a109fc634..eff0dec6efe043ad0cb0126061583bc5b67ba0e2 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -112,6 +112,12 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -113,6 +_,12 @@ this.maybeAlertOthers(); } @@ -21,16 +13,16 @@ index 05de183ce7b0be9b41f005b2ca36807a109fc634..eff0dec6efe043ad0cb0126061583bc5 super.customServerAiStep(level); } -@@ -159,6 +165,12 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -159,6 +_,12 @@ + this.playFirstAngerSoundIn = FIRST_ANGER_SOUND_DELAY.sample(this.random); this.ticksUntilNextAlert = ALERT_INTERVAL.sample(this.random); } - ++ + // Purpur start - Toggle for Zombified Piglin death always counting as player kill when angry + if (livingEntity instanceof Player player && this.level().purpurConfig.zombifiedPiglinCountAsPlayerKillWhenAngry) { + this.setLastHurtByPlayer(player, this.tickCount); + } + // Purpur end - Toggle for Zombified Piglin death always counting as player kill when angry -+ + return super.setTarget(livingEntity, reason); // CraftBukkit } - diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch index 329f7ff86..1c6e7e4c3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/piglin/PiglinAi.java b/net/minecraft/world/entity/monster/piglin/PiglinAi.java -index 4b1a3772f9e6b9e4efcf11e14b0fb882512ec86d..df1ef03f584fcaa31bd8cfd2c7301c784e4270d8 100644 --- a/net/minecraft/world/entity/monster/piglin/PiglinAi.java +++ b/net/minecraft/world/entity/monster/piglin/PiglinAi.java -@@ -661,7 +661,10 @@ public class PiglinAi { +@@ -661,13 +_,23 @@ public static boolean isWearingSafeArmor(LivingEntity entity) { for (EquipmentSlot equipmentSlot : EquipmentSlotGroup.ARMOR) { @@ -20,17 +12,16 @@ index 4b1a3772f9e6b9e4efcf11e14b0fb882512ec86d..df1ef03f584fcaa31bd8cfd2c7301c78 return true; } } -@@ -669,6 +672,13 @@ public class PiglinAi { + return false; } - ++ + // Purpur start - piglins ignore gold-trimmed armor + private static boolean isWearingGoldTrim(Item itemstack) { + net.minecraft.world.item.equipment.trim.ArmorTrim armorTrim = itemstack.components().get(net.minecraft.core.component.DataComponents.TRIM); + return armorTrim != null && armorTrim.material().is(net.minecraft.world.item.equipment.trim.TrimMaterials.GOLD); + } + // Purpur end - piglins ignore gold-trimmed armor -+ + private static void stopWalking(Piglin piglin) { piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); - piglin.getNavigation().stop(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch index 7a062ad58..9df36fcd7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/npc/CatSpawner.java b/net/minecraft/world/entity/npc/CatSpawner.java -index e282b6ab6d0d1c11ee40f5f436bd50fa90ddc88b..d6ae13c19481ce33bfa0b6c9db63283009339d8c 100644 --- a/net/minecraft/world/entity/npc/CatSpawner.java +++ b/net/minecraft/world/entity/npc/CatSpawner.java -@@ -25,7 +25,7 @@ public class CatSpawner implements CustomSpawner { +@@ -25,7 +_,7 @@ if (spawnFriendlies && level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) { this.nextTick--; if (this.nextTick <= 0) { @@ -17,7 +9,7 @@ index e282b6ab6d0d1c11ee40f5f436bd50fa90ddc88b..d6ae13c19481ce33bfa0b6c9db632830 Player randomPlayer = level.getRandomPlayer(); if (randomPlayer != null) { RandomSource randomSource = level.random; -@@ -48,9 +48,12 @@ public class CatSpawner implements CustomSpawner { +@@ -48,9 +_,12 @@ } private void spawnInVillage(ServerLevel level, BlockPos pos) { @@ -33,7 +25,7 @@ index e282b6ab6d0d1c11ee40f5f436bd50fa90ddc88b..d6ae13c19481ce33bfa0b6c9db632830 if (entitiesOfClass.size() < 5) { this.spawnCat(pos, level, false); } -@@ -58,8 +61,11 @@ public class CatSpawner implements CustomSpawner { +@@ -58,8 +_,11 @@ } private void spawnInHut(ServerLevel level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch index a1b19d097..0c82ef476 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 70cc20483905d3877e2ffb51afb4902bd59f0cd0..b0eec451b68a6a2697b1620410f07b25c4d2fda7 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -59,6 +59,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -60,6 +_,13 @@ super(entityType, level); } @@ -22,7 +14,7 @@ index 70cc20483905d3877e2ffb51afb4902bd59f0cd0..b0eec451b68a6a2697b1620410f07b25 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -@@ -79,7 +86,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -80,7 +_,7 @@ this, new ItemStack(Items.MILK_BUCKET), SoundEvents.WANDERING_TRADER_REAPPEARED, @@ -31,7 +23,7 @@ index 70cc20483905d3877e2ffb51afb4902bd59f0cd0..b0eec451b68a6a2697b1620410f07b25 ) ); this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); -@@ -123,8 +130,10 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -124,8 +_,10 @@ return InteractionResult.CONSUME; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch index 3ce260889..efaa61512 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/npc/WanderingTraderSpawner.java b/net/minecraft/world/entity/npc/WanderingTraderSpawner.java -index 9d9ec2bf16027b479bbc4339ad4e9dcfc2077d40..d4527765262818099dfb695d6a84b56d33888e34 100644 --- a/net/minecraft/world/entity/npc/WanderingTraderSpawner.java +++ b/net/minecraft/world/entity/npc/WanderingTraderSpawner.java -@@ -137,7 +137,17 @@ public class WanderingTraderSpawner implements CustomSpawner { +@@ -137,7 +_,17 @@ int i1 = pos.getX() + this.random.nextInt(maxDistance * 2) - maxDistance; int i2 = pos.getZ() + this.random.nextInt(maxDistance * 2) - maxDistance; int height = level.getHeight(Heightmap.Types.WORLD_SURFACE, i1, i2); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch index 18699c96a..de4745d8e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/projectile/AbstractArrow.java b/net/minecraft/world/entity/projectile/AbstractArrow.java -index 595cdb7d013eb0b9282b133a22f51ee865d18623..b00e5b523a07bd3f65c6d7eee96430266e5661c9 100644 --- a/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -79,6 +79,7 @@ public abstract class AbstractArrow extends Projectile { +@@ -76,6 +_,7 @@ public ItemStack pickupItemStack = this.getDefaultPickupItem(); @Nullable public ItemStack firedFromWeapon = null; @@ -16,7 +8,7 @@ index 595cdb7d013eb0b9282b133a22f51ee865d18623..b00e5b523a07bd3f65c6d7eee9643026 protected AbstractArrow(EntityType entityType, Level level) { super(entityType, level); -@@ -352,7 +353,7 @@ public abstract class AbstractArrow extends Projectile { +@@ -349,7 +_,7 @@ this.setInGround(false); Vec3 deltaMovement = this.getDeltaMovement(); this.setDeltaMovement(deltaMovement.multiply(this.random.nextFloat() * 0.2F, this.random.nextFloat() * 0.2F, this.random.nextFloat() * 0.2F)); @@ -25,16 +17,16 @@ index 595cdb7d013eb0b9282b133a22f51ee865d18623..b00e5b523a07bd3f65c6d7eee9643026 } public boolean isInGround() { -@@ -576,6 +577,12 @@ public abstract class AbstractArrow extends Projectile { +@@ -572,6 +_,12 @@ + public ItemStack getWeaponItem() { return this.firedFromWeapon; } - ++ + // Purpur start - Add an option to fix MC-3304 projectile looting + public void setActualEnchantments(net.minecraft.world.item.enchantment.ItemEnchantments actualEnchantments) { + this.actualEnchantments = actualEnchantments; + } + // Purpur end - Add an option to fix MC-3304 projectile looting -+ + protected SoundEvent getDefaultHitGroundSoundEvent() { return SoundEvents.ARROW_HIT; - } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch index 4c14fc29c..7215ffe71 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/projectile/Snowball.java b/net/minecraft/world/entity/projectile/Snowball.java -index 677b4b681f9c2c09a8ae3cfdec72102265547a7b..d8f9fb603fd2e3e5c1dfc05face7f42b4844daf4 100644 --- a/net/minecraft/world/entity/projectile/Snowball.java +++ b/net/minecraft/world/entity/projectile/Snowball.java -@@ -52,10 +52,40 @@ public class Snowball extends ThrowableItemProjectile { +@@ -52,9 +_,39 @@ protected void onHitEntity(EntityHitResult result) { super.onHitEntity(result); Entity entity = result.getEntity(); @@ -16,7 +8,7 @@ index 677b4b681f9c2c09a8ae3cfdec72102265547a7b..d8f9fb603fd2e3e5c1dfc05face7f42b + int i = entity.level().purpurConfig.snowballDamage >= 0 ? entity.level().purpurConfig.snowballDamage : entity instanceof Blaze ? 3 : 0; // Purpur - Add configurable snowball damage entity.hurt(this.damageSources().thrown(this, this.getOwner()), i); } - ++ + // Purpur start - options to extinguish fire blocks with snowballs - borrowed and modified code from ThrownPotion#onHitBlock and ThrownPotion#dowseFire + @Override + protected void onHitBlock(net.minecraft.world.phys.BlockHitResult blockHitResult) { @@ -46,7 +38,6 @@ index 677b4b681f9c2c09a8ae3cfdec72102265547a7b..d8f9fb603fd2e3e5c1dfc05face7f42b + } + } + // Purpur end - options to extinguish fire blocks with snowballs -+ + @Override protected void onHit(HitResult result) { - super.onHit(result); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch index f43907991..cb2639bfb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/projectile/ThrownTrident.java b/net/minecraft/world/entity/projectile/ThrownTrident.java -index 00f805667ea48fd8699f3cea05781739e376cedd..e814daaa10c138b1497dffbdf9224d34cd9c9926 100644 --- a/net/minecraft/world/entity/projectile/ThrownTrident.java +++ b/net/minecraft/world/entity/projectile/ThrownTrident.java -@@ -65,7 +65,7 @@ public class ThrownTrident extends AbstractArrow { +@@ -66,7 +_,7 @@ Entity owner = this.getOwner(); int i = this.entityData.get(ID_LOYALTY); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch index 82d298a81..53c42c6f9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/projectile/WitherSkull.java b/net/minecraft/world/entity/projectile/WitherSkull.java -index a2fdc87bedd1a63064cb8c7a7615978483268fdc..c96dc62b9f890335892a8075ed9b1285f98c9e8a 100644 --- a/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/net/minecraft/world/entity/projectile/WitherSkull.java -@@ -93,7 +93,7 @@ public class WitherSkull extends AbstractHurtingProjectile { +@@ -94,7 +_,7 @@ super.onHit(result); if (!this.level().isClientSide) { // CraftBukkit start @@ -17,17 +9,17 @@ index a2fdc87bedd1a63064cb8c7a7615978483268fdc..c96dc62b9f890335892a8075ed9b1285 if (event.callEvent()) { this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); } -@@ -102,6 +102,13 @@ public class WitherSkull extends AbstractHurtingProjectile { +@@ -102,6 +_,13 @@ + this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.HIT); // CraftBukkit - add Bukkit remove cause } } - ++ + // Purpur start - Add canSaveToDisk to Entity + @Override + public boolean canSaveToDisk() { + return false; + } + // Purpur end - Add canSaveToDisk to Entity -+ + @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { - builder.define(DATA_DANGEROUS, false); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch index b2d52d1ae..c0e2ddf74 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/raid/Raids.java b/net/minecraft/world/entity/raid/Raids.java -index 693eef486f1a3b4ea7e5fd5ecf2d25d85f424d97..5837d976abf663bd46a64f46348613db9284254d 100644 --- a/net/minecraft/world/entity/raid/Raids.java +++ b/net/minecraft/world/entity/raid/Raids.java -@@ -29,6 +29,7 @@ import net.minecraft.world.phys.Vec3; +@@ -29,6 +_,7 @@ public class Raids extends SavedData { private static final String RAID_FILE_ID = "raids"; @@ -16,7 +8,7 @@ index 693eef486f1a3b4ea7e5fd5ecf2d25d85f424d97..5837d976abf663bd46a64f46348613db public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group( Raids.RaidWithId.CODEC -@@ -81,6 +82,17 @@ public class Raids extends SavedData { +@@ -81,6 +_,17 @@ public void tick(ServerLevel level) { this.tick++; @@ -34,7 +26,7 @@ index 693eef486f1a3b4ea7e5fd5ecf2d25d85f424d97..5837d976abf663bd46a64f46348613db Iterator iterator = this.raidMap.values().iterator(); while (iterator.hasNext()) { -@@ -148,11 +160,13 @@ public class Raids extends SavedData { +@@ -148,11 +_,13 @@ // } 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 diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch index be34547ba..018fcd5d3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/vehicle/AbstractBoat.java b/net/minecraft/world/entity/vehicle/AbstractBoat.java -index 4541bb5233e986d9993d8593afef9b12c935d00a..abfe3370382c39aeab2cc7832c0ff6ee5b95fa5b 100644 --- a/net/minecraft/world/entity/vehicle/AbstractBoat.java +++ b/net/minecraft/world/entity/vehicle/AbstractBoat.java -@@ -433,6 +433,7 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable { +@@ -436,6 +_,7 @@ float groundFriction = this.getGroundFriction(); if (groundFriction > 0.0F) { this.landFriction = groundFriction; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch index 2d16df145..dfb044e11 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java b/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java -index 090b19752fbfc856d9fbf118510afc6cda2b9989..325ec57df2885f5e81b8a6b61e3a9fed9484b30f 100644 --- a/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java +++ b/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java -@@ -391,7 +391,7 @@ public class NewMinecartBehavior extends MinecartBehavior { +@@ -391,7 +_,7 @@ private Vec3 calculateBoostTrackSpeed(Vec3 speed, BlockPos pos, BlockState state) { if (state.is(Blocks.POWERED_RAIL) && state.getValue(PoweredRailBlock.POWERED)) { if (speed.length() > 0.01) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch index 6dc5e984a..c8d066068 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java b/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java -index 0d09b0809e7b224538cf5cfac9e36ec5ba10b709..4d224dc127d245556892e761fa4927a76e4b8e9a 100644 --- a/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java +++ b/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java -@@ -243,8 +243,8 @@ public class OldMinecartBehavior extends MinecartBehavior { +@@ -243,8 +_,8 @@ Vec3 deltaMovement1 = this.getDeltaMovement(); double d13 = deltaMovement1.horizontalDistance(); if (d13 > 0.01) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch index e4065dad2..a44cdd312 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/food/FoodData.java b/net/minecraft/world/food/FoodData.java -index 89d783315dab8ca469a1fa724cd59a329d4c2b55..7fa061718989365725ff49abd2d19d1ba3f935f9 100644 --- a/net/minecraft/world/food/FoodData.java +++ b/net/minecraft/world/food/FoodData.java -@@ -38,6 +38,7 @@ public class FoodData { +@@ -39,6 +_,7 @@ int oldFoodLevel = this.foodLevel; org.bukkit.event.entity.FoodLevelChangeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(serverPlayer, foodProperties.nutrition() + oldFoodLevel, stack); if (!event.isCancelled()) { @@ -16,7 +8,7 @@ index 89d783315dab8ca469a1fa724cd59a329d4c2b55..7fa061718989365725ff49abd2d19d1b this.add(event.getFoodLevel() - oldFoodLevel, foodProperties.saturation()); } serverPlayer.getBukkitEntity().sendHealthUpdate(); -@@ -86,7 +87,7 @@ public class FoodData { +@@ -87,7 +_,7 @@ this.tickTimer++; if (this.tickTimer >= this.starvationRate) { // CraftBukkit - add regen rate manipulation if (player.getHealth() > 10.0F || difficulty == Difficulty.HARD || player.getHealth() > 1.0F && difficulty == Difficulty.NORMAL) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch index c0136ca1e..87515c815 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/food/FoodProperties.java b/net/minecraft/world/food/FoodProperties.java -index 793e4528755fa5688efbad75418188e693ad0157..20f702c8266eb54a8835861188eb937f4732e078 100644 --- a/net/minecraft/world/food/FoodProperties.java +++ b/net/minecraft/world/food/FoodProperties.java -@@ -42,9 +42,11 @@ public record FoodProperties(int nutrition, float saturation, boolean canAlwaysE +@@ -42,9 +_,11 @@ level.playSound(null, entity.getX(), entity.getY(), entity.getZ(), consumable.sound().value(), SoundSource.NEUTRAL, 1.0F, random.triangle(1.0F, 0.4F)); if (entity instanceof Player player) { player.getFoodData().eat(this, stack, (net.minecraft.server.level.ServerPlayer) player); // CraftBukkit diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch index cb2da3372..bca7321cd 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java -index 813417a09b4acc7d57e80a53d970767e230d75b1..c4721eb0efe34f5e313bc890b4e960144eca4fe1 100644 --- a/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/net/minecraft/world/inventory/AbstractContainerMenu.java -@@ -65,6 +65,7 @@ public abstract class AbstractContainerMenu { +@@ -65,6 +_,7 @@ @Nullable private ContainerSynchronizer synchronizer; private boolean suppressRemoteUpdates; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch index 3e768e1ac..1626289f6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/inventory/AbstractFurnaceMenu.java b/net/minecraft/world/inventory/AbstractFurnaceMenu.java -index b42d55c1c0c405ce3ce073138343e74fa036fa65..b86e49b09a036532e7dbd56bc52b13cefe77f75b 100644 --- a/net/minecraft/world/inventory/AbstractFurnaceMenu.java +++ b/net/minecraft/world/inventory/AbstractFurnaceMenu.java -@@ -121,7 +121,13 @@ public abstract class AbstractFurnaceMenu extends RecipeBookMenu { +@@ -121,7 +_,13 @@ } else if (index != 1 && index != 0) { if (this.canSmelt(item)) { if (!this.moveItemStackTo(item, 0, 1, false)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch index 74c747850..2b2579163 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/inventory/ArmorSlot.java b/net/minecraft/world/inventory/ArmorSlot.java -index 0a440ea37d14cd840cf87a99264ace5ccde7c073..dec920727401de7f5bcc6c7e50f9dd325367ee90 100644 --- a/net/minecraft/world/inventory/ArmorSlot.java +++ b/net/minecraft/world/inventory/ArmorSlot.java -@@ -47,7 +47,7 @@ class ArmorSlot extends Slot { +@@ -47,7 +_,7 @@ @Override public boolean mayPickup(Player player) { ItemStack item = this.getItem(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch index 031c5f5c2..b6a6515d1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/inventory/EnchantmentMenu.java b/net/minecraft/world/inventory/EnchantmentMenu.java -index cf9ab4c9fba11f5a0b293978853e205de81d6fc7..d0d6ae9c9c432f8bd5d9c91113fc5491e321afad 100644 --- a/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/net/minecraft/world/inventory/EnchantmentMenu.java -@@ -63,6 +63,22 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -63,6 +_,22 @@ return access.getLocation(); } // CraftBukkit end @@ -31,7 +23,7 @@ index cf9ab4c9fba11f5a0b293978853e205de81d6fc7..d0d6ae9c9c432f8bd5d9c91113fc5491 }; // Paper end - Add missing InventoryHolders this.access = access; -@@ -83,6 +99,16 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -83,6 +_,16 @@ return EnchantmentMenu.EMPTY_SLOT_LAPIS_LAZULI; } }); @@ -48,7 +40,7 @@ index cf9ab4c9fba11f5a0b293978853e205de81d6fc7..d0d6ae9c9c432f8bd5d9c91113fc5491 this.addStandardInventorySlots(playerInventory, 8, 84); this.addDataSlot(DataSlot.shared(this.costs, 0)); this.addDataSlot(DataSlot.shared(this.costs, 1)); -@@ -299,7 +325,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -299,7 +_,7 @@ @Override public void removed(Player player) { super.removed(player); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch index 98de3f0c3..1af1db846 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/inventory/GrindstoneMenu.java b/net/minecraft/world/inventory/GrindstoneMenu.java -index 6eaa468c90a826f9fdecf2cf672c4893122d2504..5cb69b7ffc82905e5ba8c99c76ce14348f89e21c 100644 --- a/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/net/minecraft/world/inventory/GrindstoneMenu.java -@@ -91,11 +91,13 @@ public class GrindstoneMenu extends AbstractContainerMenu { +@@ -91,11 +_,13 @@ @Override public void onTake(Player player, ItemStack stack) { access.execute((level, blockPos) -> { @@ -23,7 +15,7 @@ index 6eaa468c90a826f9fdecf2cf672c4893122d2504..5cb69b7ffc82905e5ba8c99c76ce1434 // Paper end - Fire BlockExpEvent on grindstone use } -@@ -124,7 +126,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { +@@ -124,7 +_,7 @@ for (Entry> entry : enchantmentsForCrafting.entrySet()) { Holder holder = entry.getKey(); int intValue = entry.getIntValue(); @@ -32,7 +24,7 @@ index 6eaa468c90a826f9fdecf2cf672c4893122d2504..5cb69b7ffc82905e5ba8c99c76ce1434 i += holder.value().getMinCost(intValue); } } -@@ -202,15 +204,75 @@ public class GrindstoneMenu extends AbstractContainerMenu { +@@ -202,15 +_,75 @@ for (Entry> entry : enchantmentsForCrafting.entrySet()) { Holder holder = entry.getKey(); @@ -110,7 +102,7 @@ index 6eaa468c90a826f9fdecf2cf672c4893122d2504..5cb69b7ffc82905e5ba8c99c76ce1434 if (item.is(Items.ENCHANTED_BOOK) && itemEnchantments.isEmpty()) { item = item.transmuteCopy(Items.BOOK); } -@@ -222,6 +284,23 @@ public class GrindstoneMenu extends AbstractContainerMenu { +@@ -222,6 +_,23 @@ } item.set(DataComponents.REPAIR_COST, i); @@ -134,7 +126,7 @@ index 6eaa468c90a826f9fdecf2cf672c4893122d2504..5cb69b7ffc82905e5ba8c99c76ce1434 return item; } -@@ -278,7 +357,9 @@ public class GrindstoneMenu extends AbstractContainerMenu { +@@ -278,7 +_,9 @@ return ItemStack.EMPTY; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch index f5a97d8d6..9899e30a5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/inventory/ItemCombinerMenu.java b/net/minecraft/world/inventory/ItemCombinerMenu.java -index 34d52c941395645e77de810855b14012c259cf02..c605bd700fd9f5a6596a2bf9648492786306b025 100644 --- a/net/minecraft/world/inventory/ItemCombinerMenu.java +++ b/net/minecraft/world/inventory/ItemCombinerMenu.java -@@ -156,7 +156,9 @@ public abstract class ItemCombinerMenu extends AbstractContainerMenu { +@@ -156,7 +_,9 @@ return ItemStack.EMPTY; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch index 8e1d944db..c87b129e2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/AxeItem.java b/net/minecraft/world/item/AxeItem.java -index bd919b9a83f9736f02783b1ba3863fd1b77c7e89..eb8d2d6f9c65185f5fe16a13ab0cdbba78a25a40 100644 --- a/net/minecraft/world/item/AxeItem.java +++ b/net/minecraft/world/item/AxeItem.java -@@ -62,13 +62,15 @@ public class AxeItem extends Item { +@@ -62,13 +_,15 @@ if (playerHasBlockingItemUseIntent(context)) { return InteractionResult.PASS; } else { @@ -26,7 +18,7 @@ index bd919b9a83f9736f02783b1ba3863fd1b77c7e89..eb8d2d6f9c65185f5fe16a13ab0cdbba return InteractionResult.PASS; } // Paper end -@@ -76,8 +78,15 @@ public class AxeItem extends Item { +@@ -76,8 +_,15 @@ CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger((ServerPlayer)player, clickedPos, itemInHand); } @@ -44,7 +36,7 @@ index bd919b9a83f9736f02783b1ba3863fd1b77c7e89..eb8d2d6f9c65185f5fe16a13ab0cdbba if (player != null) { itemInHand.hurtAndBreak(1, player, LivingEntity.getSlotForHand(context.getHand())); } -@@ -94,22 +103,24 @@ public class AxeItem extends Item { +@@ -94,22 +_,24 @@ && !player.isSecondaryUseActive(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch index 6814ca776..76068462e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/BlockItem.java b/net/minecraft/world/item/BlockItem.java -index cc363ba3bc719d8b93992141d779b4c1d1bbd2fb..571a0f27a86ab24a9f8750ce1ab802bfd64d9ccf 100644 --- a/net/minecraft/world/item/BlockItem.java +++ b/net/minecraft/world/item/BlockItem.java -@@ -145,7 +145,16 @@ public class BlockItem extends Item { +@@ -145,7 +_,16 @@ } protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, @Nullable Player player, ItemStack stack, BlockState state) { @@ -26,7 +18,7 @@ index cc363ba3bc719d8b93992141d779b4c1d1bbd2fb..571a0f27a86ab24a9f8750ce1ab802bf } @Nullable -@@ -212,6 +221,7 @@ public class BlockItem extends Item { +@@ -212,6 +_,7 @@ } if (!type.onlyOpCanSetNbt() || player != null && (player.canUseGameMasterBlocks() || (player.getAbilities().instabuild && player.getBukkitEntity().hasPermission("minecraft.nbt.place")))) { // Spigot - add permission @@ -34,7 +26,7 @@ index cc363ba3bc719d8b93992141d779b4c1d1bbd2fb..571a0f27a86ab24a9f8750ce1ab802bf return customData.loadInto(blockEntity, level.registryAccess()); } -@@ -253,6 +263,7 @@ public class BlockItem extends Item { +@@ -253,6 +_,7 @@ public void onDestroyed(ItemEntity itemEntity) { ItemContainerContents itemContainerContents = itemEntity.getItem().set(DataComponents.CONTAINER, ItemContainerContents.EMPTY); if (itemContainerContents != null) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch index e8fc5c7c2..bb43e3ee4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/BowItem.java b/net/minecraft/world/item/BowItem.java -index c4c8775de328d40bb8218d993872be5249e8174d..ce1ce18410fc1d47d999c918a8f880b43bf9797c 100644 --- a/net/minecraft/world/item/BowItem.java +++ b/net/minecraft/world/item/BowItem.java -@@ -28,6 +28,11 @@ public class BowItem extends ProjectileWeaponItem { +@@ -28,6 +_,11 @@ return false; } else { ItemStack projectile = player.getProjectile(stack); @@ -20,7 +12,7 @@ index c4c8775de328d40bb8218d993872be5249e8174d..ce1ce18410fc1d47d999c918a8f880b4 if (projectile.isEmpty()) { return false; } else { -@@ -38,7 +43,7 @@ public class BowItem extends ProjectileWeaponItem { +@@ -38,7 +_,7 @@ } else { List list = draw(stack, projectile, player); if (level instanceof ServerLevel serverLevel && !list.isEmpty()) { @@ -29,7 +21,7 @@ index c4c8775de328d40bb8218d993872be5249e8174d..ce1ce18410fc1d47d999c918a8f880b4 } level.playSound( -@@ -89,7 +94,7 @@ public class BowItem extends ProjectileWeaponItem { +@@ -89,7 +_,7 @@ public InteractionResult use(Level level, Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); boolean flag = !player.getProjectile(itemInHand).isEmpty(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch index 6b5ccc48e..a0e1bb7ac 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/BucketItem.java b/net/minecraft/world/item/BucketItem.java -index de287715568f358dd83383d68f845df9a7b5a117..8c7be8a71348a3e66c8bf6b6cb39fe002c20bdb0 100644 --- a/net/minecraft/world/item/BucketItem.java +++ b/net/minecraft/world/item/BucketItem.java -@@ -147,7 +147,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { +@@ -147,7 +_,7 @@ // CraftBukkit end if (!flag) { return hitResult != null && this.emptyContents(entity, level, hitResult.getBlockPos().relative(hitResult.getDirection()), null, direction, clicked, itemstack, hand); // CraftBukkit @@ -17,7 +9,7 @@ index de287715568f358dd83383d68f845df9a7b5a117..8c7be8a71348a3e66c8bf6b6cb39fe00 int x = pos.getX(); int y = pos.getY(); int z = pos.getZ(); -@@ -156,7 +156,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { +@@ -156,7 +_,7 @@ ); for (int i = 0; i < 8; i++) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch index b593a1770..c2e3f0e41 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/CrossbowItem.java b/net/minecraft/world/item/CrossbowItem.java -index 4c5a751bc5618a19ac6355564189cb283a01eb98..9275ba72415beaa4e495cae81674fd14ec671156 100644 --- a/net/minecraft/world/item/CrossbowItem.java +++ b/net/minecraft/world/item/CrossbowItem.java -@@ -66,7 +66,7 @@ public class CrossbowItem extends ProjectileWeaponItem { +@@ -66,7 +_,7 @@ ItemStack itemInHand = player.getItemInHand(hand); ChargedProjectiles chargedProjectiles = itemInHand.get(DataComponents.CHARGED_PROJECTILES); if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch index 580f60a58..e53cc098b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/DyeColor.java b/net/minecraft/world/item/DyeColor.java -index 63751ad67d44bb20912870df5d0d2b2fee4d8cec..6bac07817d2916c64f703586599a2cab226872e6 100644 --- a/net/minecraft/world/item/DyeColor.java +++ b/net/minecraft/world/item/DyeColor.java -@@ -126,4 +126,10 @@ public enum DyeColor implements StringRepresentable { +@@ -126,4 +_,10 @@ private static CraftingInput makeCraftColorInput(DyeColor first, DyeColor second) { return CraftingInput.of(2, 1, List.of(new ItemStack(DyeItem.byColor(first)), new ItemStack(DyeItem.byColor(second)))); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch index c9f359af2..7bd1d11bf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/EggItem.java b/net/minecraft/world/item/EggItem.java -index ccae6089cdc4fffca7d759252006a13c2c14691a..c4097bd6acf671ddf857350154e6e1a04e76d64b 100644 --- a/net/minecraft/world/item/EggItem.java +++ b/net/minecraft/world/item/EggItem.java -@@ -24,7 +24,7 @@ public class EggItem extends Item implements ProjectileItem { +@@ -24,7 +_,7 @@ public InteractionResult use(Level level, Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); // Paper start diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch index 167e505fa..baee5e0ab 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/EndCrystalItem.java b/net/minecraft/world/item/EndCrystalItem.java -index 05ec512839898f96d9769bb0d00f6ba11dda0c4b..6e4a3c9c090a68bf5785a01d815c275411859c7b 100644 --- a/net/minecraft/world/item/EndCrystalItem.java +++ b/net/minecraft/world/item/EndCrystalItem.java -@@ -24,7 +24,7 @@ public class EndCrystalItem extends Item { +@@ -24,7 +_,7 @@ Level level = context.getLevel(); BlockPos clickedPos = context.getClickedPos(); BlockState blockState = level.getBlockState(clickedPos); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch index 2e279be82..de340dafe 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/EnderpearlItem.java b/net/minecraft/world/item/EnderpearlItem.java -index 3becd19d3264fa631497e967656cc7ca39252586..f824f155549857d5205ba67eb5916e0b0b65efb4 100644 --- a/net/minecraft/world/item/EnderpearlItem.java +++ b/net/minecraft/world/item/EnderpearlItem.java -@@ -24,7 +24,7 @@ public class EnderpearlItem extends Item { +@@ -24,7 +_,7 @@ if (level instanceof ServerLevel serverLevel) { // CraftBukkit start // Paper start - PlayerLaunchProjectileEvent @@ -17,7 +9,7 @@ index 3becd19d3264fa631497e967656cc7ca39252586..f824f155549857d5205ba67eb5916e0b com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemInHand), (org.bukkit.entity.Projectile) thrownEnderpearl.projectile().getBukkitEntity()); if (event.callEvent() && thrownEnderpearl.attemptSpawn()) { if (event.shouldConsume()) { -@@ -44,6 +44,7 @@ public class EnderpearlItem extends Item { +@@ -44,6 +_,7 @@ 0.4F / (level.getRandom().nextFloat() * 0.4F + 0.8F) ); player.awardStat(Stats.ITEM_USED.get(this)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch index 793ea8ce7..cebe3180e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/HoeItem.java b/net/minecraft/world/item/HoeItem.java -index 3bf3d4030c4da65fa386a8b8083d259a6046d15e..77a8d5d334cd93d23149afa8e58f4114412632df 100644 --- a/net/minecraft/world/item/HoeItem.java +++ b/net/minecraft/world/item/HoeItem.java -@@ -45,15 +45,25 @@ public class HoeItem extends Item { +@@ -45,15 +_,25 @@ public InteractionResult useOn(UseOnContext context) { Level level = context.getLevel(); BlockPos clickedPos = context.getClickedPos(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch index 042194dc7..b076f46e7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java -index 24ecca78dc1140b6fc47d59f2acefca6bc2b0220..6de42886ed681b5e00903f0d213e4d2fcaea1482 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java -@@ -458,6 +458,7 @@ public final class ItemStack implements DataComponentHolder { +@@ -450,6 +_,7 @@ // revert back all captured blocks for (org.bukkit.block.BlockState blockstate : blocks) { ((org.bukkit.craftbukkit.block.CraftBlockState) blockstate).revertPlace(); @@ -16,7 +8,7 @@ index 24ecca78dc1140b6fc47d59f2acefca6bc2b0220..6de42886ed681b5e00903f0d213e4d2f } SignItem.openSign = null; // SPIGOT-6758 - Reset on early return -@@ -481,6 +482,7 @@ public final class ItemStack implements DataComponentHolder { +@@ -473,6 +_,7 @@ if (!(block.getBlock() instanceof net.minecraft.world.level.block.BaseEntityBlock)) { // Containers get placed automatically block.onPlace(serverLevel, newPos, oldBlock, true, context); } @@ -24,7 +16,7 @@ index 24ecca78dc1140b6fc47d59f2acefca6bc2b0220..6de42886ed681b5e00903f0d213e4d2f serverLevel.notifyAndUpdatePhysics(newPos, null, oldBlock, block, serverLevel.getBlockState(newPos), updateFlags, net.minecraft.world.level.block.Block.UPDATE_LIMIT); // send null chunk as chunk.k() returns false by this point } -@@ -617,6 +619,26 @@ public final class ItemStack implements DataComponentHolder { +@@ -593,6 +_,26 @@ return this.isDamageableItem() && this.getDamageValue() > 0; } @@ -51,16 +43,16 @@ index 24ecca78dc1140b6fc47d59f2acefca6bc2b0220..6de42886ed681b5e00903f0d213e4d2f public int getDamageValue() { return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage()); } -@@ -1280,6 +1302,12 @@ public final class ItemStack implements DataComponentHolder { +@@ -1203,6 +_,12 @@ + public boolean isEnchanted() { return !this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).isEmpty(); } - ++ + // Purpur start - Config to allow unsafe enchants + public boolean hasEnchantment(Holder enchantment) { + return this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).getLevel(enchantment) > 0; + } + // Purpur end - Config to allow unsafe enchants -+ + public ItemEnchantments getEnchantments() { return this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY); - } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch index 7bd60664e..bc5336ab0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/Items.java b/net/minecraft/world/item/Items.java -index ae228cd15342ac159dd61bf4d09c2d80b7f44fee..4afa2d9f5825ccc70492b9c3d82ac5616d6f7faa 100644 --- a/net/minecraft/world/item/Items.java +++ b/net/minecraft/world/item/Items.java -@@ -382,7 +382,7 @@ public class Items { +@@ -383,7 +_,7 @@ 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); @@ -17,7 +9,7 @@ index ae228cd15342ac159dd61bf4d09c2d80b7f44fee..4afa2d9f5825ccc70492b9c3d82ac561 public static final Item CREAKING_HEART = registerBlock(Blocks.CREAKING_HEART); public static final Item CHEST = registerBlock(Blocks.CHEST, properties -> properties.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE); -@@ -2034,7 +2034,7 @@ public class Items { +@@ -2089,7 +_,7 @@ "sweet_berries", createBlockItemWithCustomItemName(Blocks.SWEET_BERRY_BUSH), new Item.Properties().food(Foods.SWEET_BERRIES) ); public static final Item GLOW_BERRIES = registerItem( diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch index 6ac81faf2..e4abe0ae9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/MapItem.java b/net/minecraft/world/item/MapItem.java -index ba0b254d43651bca1f29b5272af05d068fc37ba8..780793750c99185e8139a1cd0ad52bc7b80899a9 100644 --- a/net/minecraft/world/item/MapItem.java +++ b/net/minecraft/world/item/MapItem.java -@@ -194,6 +194,7 @@ public class MapItem extends Item { +@@ -194,6 +_,7 @@ public static void renderBiomePreviewMap(ServerLevel serverLevel, ItemStack stack) { MapItemSavedData savedData = getSavedData(stack, serverLevel); if (savedData != null) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch index e3f683a3a..2a8639361 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/NameTagItem.java b/net/minecraft/world/item/NameTagItem.java -index a928124ee46a10e9033f771970198e36712917a6..65ff8078474d5039238e9398d8cfc12e79cc6524 100644 --- a/net/minecraft/world/item/NameTagItem.java +++ b/net/minecraft/world/item/NameTagItem.java -@@ -24,6 +24,7 @@ public class NameTagItem extends Item { +@@ -24,6 +_,7 @@ LivingEntity newEntity = ((org.bukkit.craftbukkit.entity.CraftLivingEntity) event.getEntity()).getHandle(); newEntity.setCustomName(event.getName() != null ? io.papermc.paper.adventure.PaperAdventure.asVanilla(event.getName()) : null); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch index 325dcb796..76145281c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/ProjectileWeaponItem.java b/net/minecraft/world/item/ProjectileWeaponItem.java -index 1a9f91f3ee9c4d3902106eebd2639cc85a0dc34c..fb5077450aa9f7b7a03dd20c27a68dfdaab5ef06 100644 --- a/net/minecraft/world/item/ProjectileWeaponItem.java +++ b/net/minecraft/world/item/ProjectileWeaponItem.java -@@ -109,6 +109,8 @@ public abstract class ProjectileWeaponItem extends Item { +@@ -109,6 +_,8 @@ abstractArrow.setCritArrow(true); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch index ff77bd88c..c583f3853 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/ShovelItem.java b/net/minecraft/world/item/ShovelItem.java -index 887ac9f547ceaf76fd533ae47239a64c29a64b18..a290ad578498da07093ea31080cc3fbc87aa3778 100644 --- a/net/minecraft/world/item/ShovelItem.java +++ b/net/minecraft/world/item/ShovelItem.java -@@ -46,9 +46,12 @@ public class ShovelItem extends Item { +@@ -46,9 +_,12 @@ BlockState blockState1 = FLATTENABLES.get(blockState.getBlock()); BlockState blockState2 = null; Runnable afterAction = null; // Paper diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch index be4c390e9..9c09ecb72 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/SnowballItem.java b/net/minecraft/world/item/SnowballItem.java -index 8eec16040fb9ae6bcccbd71bbe93521cdce5ccce..38b82537209449407922491506a7ca6224229ca9 100644 --- a/net/minecraft/world/item/SnowballItem.java +++ b/net/minecraft/world/item/SnowballItem.java -@@ -26,7 +26,7 @@ public class SnowballItem extends Item implements ProjectileItem { +@@ -26,7 +_,7 @@ // CraftBukkit start - moved down if (level instanceof ServerLevel serverLevel) { // Paper start - PlayerLaunchProjectileEvent diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch index 0356fec46..7a0553a75 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/SpawnEggItem.java b/net/minecraft/world/item/SpawnEggItem.java -index 7a961e5ebbdac061f6e73e4ed07fe957ba759066..d48c1dedbd39770ccf3c9c3ff3351b391601cd77 100644 --- a/net/minecraft/world/item/SpawnEggItem.java +++ b/net/minecraft/world/item/SpawnEggItem.java -@@ -57,6 +57,23 @@ public class SpawnEggItem extends Item { +@@ -57,6 +_,23 @@ if (level.getBlockEntity(clickedPos) instanceof Spawner spawner) { if (level.paperConfig().entities.spawning.disableMobSpawnerSpawnEggTransformation) return InteractionResult.FAIL; // Paper - Allow disabling mob spawner spawn egg transformation EntityType type = this.getType(level.registryAccess(), itemInHand); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch index d6c7d3447..5cf5ead6e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/ThrowablePotionItem.java b/net/minecraft/world/item/ThrowablePotionItem.java -index 86198fb3150409b4b3e123982d8d3ba40b774621..6495c82fb88062875024c59a7c29d6d18b7a2f41 100644 --- a/net/minecraft/world/item/ThrowablePotionItem.java +++ b/net/minecraft/world/item/ThrowablePotionItem.java -@@ -24,7 +24,7 @@ public abstract class ThrowablePotionItem extends PotionItem implements Projecti +@@ -24,7 +_,7 @@ ItemStack itemInHand = player.getItemInHand(hand); if (level instanceof ServerLevel serverLevel) { // Paper start - PlayerLaunchProjectileEvent diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch index dc1841027..dccf0bfa8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/TridentItem.java b/net/minecraft/world/item/TridentItem.java -index df629e3f2defce5e65aaf874d7c5ddff71f39c28..122e24ed6fb319c951841ac8ef328c5eb70514d4 100644 --- a/net/minecraft/world/item/TridentItem.java +++ b/net/minecraft/world/item/TridentItem.java -@@ -83,7 +83,7 @@ public class TridentItem extends Item implements ProjectileItem { +@@ -83,7 +_,7 @@ if (tridentSpinAttackStrength == 0.0F) { ItemStack itemStack = stack.copyWithCount(1); // Paper Projectile.Delayed tridentDelayed = Projectile.spawnProjectileFromRotationDelayed( // Paper - PlayerLaunchProjectileEvent( @@ -17,7 +9,7 @@ index df629e3f2defce5e65aaf874d7c5ddff71f39c28..122e24ed6fb319c951841ac8ef328c5e ); // Paper start - PlayerLaunchProjectileEvent com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) tridentDelayed.projectile().getBukkitEntity()); -@@ -94,6 +94,7 @@ public class TridentItem extends Item implements ProjectileItem { +@@ -94,6 +_,7 @@ return false; } ThrownTrident thrownTrident = tridentDelayed.projectile(); // Paper - PlayerLaunchProjectileEvent diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch index e7ef153a0..65243f097 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java b/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java -index 41e1e076a4567d3d3202cf8e426a1ebb391d85e8..2d710dd3f20cbea06c16f14a558b575b369c6ca2 100644 --- a/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java +++ b/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java -@@ -20,6 +20,12 @@ public record ClearAllStatusEffectsConsumeEffect() implements ConsumeEffect { +@@ -20,6 +_,12 @@ @Override // CraftBukkit start public boolean apply(Level level, ItemStack stack, LivingEntity entity, org.bukkit.event.entity.EntityPotionEffectEvent.Cause cause) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch index 554e25a85..0a9b7d077 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/net/minecraft/world/item/enchantment/EnchantmentHelper.java -index b86bc2e0aca5a7ef5b01be6a21c3a8bcd1ebcca0..7afb0ee8f92f4241ce3ebcd8e5fd9f50033e3a42 100644 --- a/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/net/minecraft/world/item/enchantment/EnchantmentHelper.java -@@ -608,4 +608,58 @@ public class EnchantmentHelper { +@@ -606,4 +_,58 @@ interface EnchantmentVisitor { void accept(Holder enchantment, int level); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch index 73ae134ab..9671562b1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/enchantment/ItemEnchantments.java b/net/minecraft/world/item/enchantment/ItemEnchantments.java -index 6040b73a5351c3eb166250566b5c2385cee39ee0..29619b87fe19c66934fe5aaee8a9641960091bf5 100644 --- a/net/minecraft/world/item/enchantment/ItemEnchantments.java +++ b/net/minecraft/world/item/enchantment/ItemEnchantments.java -@@ -32,7 +32,7 @@ public class ItemEnchantments implements TooltipProvider { +@@ -32,7 +_,7 @@ private static final java.util.Comparator> ENCHANTMENT_ORDER = java.util.Comparator.comparing(Holder::getRegisteredName); public static final ItemEnchantments EMPTY = new ItemEnchantments(new it.unimi.dsi.fastutil.objects.Object2IntAVLTreeMap<>(ENCHANTMENT_ORDER)); // Paper end - sort enchantments @@ -17,7 +9,7 @@ index 6040b73a5351c3eb166250566b5c2385cee39ee0..29619b87fe19c66934fe5aaee8a96419 public static final Codec CODEC = Codec.unboundedMap(Enchantment.CODEC, LEVEL_CODEC) .xmap( map -> new net.minecraft.world.item.enchantment.ItemEnchantments(net.minecraft.Util.make(new it.unimi.dsi.fastutil.objects.Object2IntAVLTreeMap<>(ENCHANTMENT_ORDER), m -> m.putAll(map))), // Paper - sort enchantments -@@ -50,7 +50,7 @@ public class ItemEnchantments implements TooltipProvider { +@@ -50,7 +_,7 @@ for (Entry> entry : enchantments.object2IntEntrySet()) { int intValue = entry.getIntValue(); @@ -26,7 +18,7 @@ index 6040b73a5351c3eb166250566b5c2385cee39ee0..29619b87fe19c66934fe5aaee8a96419 throw new IllegalArgumentException("Enchantment " + entry.getKey() + " has invalid level " + intValue); } } -@@ -133,13 +133,13 @@ public class ItemEnchantments implements TooltipProvider { +@@ -133,13 +_,13 @@ if (level <= 0) { this.enchantments.removeInt(enchantment); } else { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch index fbbc45aec..6a3b114a8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/trading/MerchantOffer.java b/net/minecraft/world/item/trading/MerchantOffer.java -index 9333c63f217e1207eced37c5be150e192f2fcc3e..156cee58134ada34d249aab948c02adac4f6745a 100644 --- a/net/minecraft/world/item/trading/MerchantOffer.java +++ b/net/minecraft/world/item/trading/MerchantOffer.java -@@ -143,7 +143,12 @@ public class MerchantOffer { +@@ -143,7 +_,12 @@ } public void updateDemand() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch index 397967bd8..e1a0fd757 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/EntityGetter.java b/net/minecraft/world/level/EntityGetter.java -index 892a7c1eb1b321ca6d5ca709142e7feae1220815..7719bc8ff1fbbc67cdf15e1fec28dc9233cea207 100644 --- a/net/minecraft/world/level/EntityGetter.java +++ b/net/minecraft/world/level/EntityGetter.java -@@ -185,7 +185,7 @@ public interface EntityGetter extends ca.spottedleaf.moonrise.patches.chunk_syst +@@ -144,7 +_,7 @@ default boolean hasNearbyAlivePlayer(double x, double y, double z, double distance) { for (Player player : this.players()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch index 0efa2b695..ad592b936 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java -index 418d3958b7510d469142178f9427c829b6387d83..801c4e8e01590beeb3633275f58d436d87ad746e 100644 --- a/net/minecraft/world/level/Level.java +++ b/net/minecraft/world/level/Level.java -@@ -160,11 +160,55 @@ public abstract class Level implements LevelAccessor, UUIDLookup, AutoCl +@@ -152,11 +_,55 @@ } // Paper end - add paper world config @@ -64,8 +56,8 @@ index 418d3958b7510d469142178f9427c829b6387d83..801c4e8e01590beeb3633275f58d436d public CraftWorld getWorld() { return this.world; } -@@ -840,6 +884,8 @@ public abstract class Level implements LevelAccessor, UUIDLookup, AutoCl - // Paper end - getblock optimisations - cache world height/sections +@@ -199,6 +_,8 @@ + ) { this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).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) levelData).getLevelName(), environment); // Purpur - Purpur config files @@ -73,7 +65,7 @@ index 418d3958b7510d469142178f9427c829b6387d83..801c4e8e01590beeb3633275f58d436d this.generator = generator; this.world = new CraftWorld((ServerLevel) this, generator, biomeProvider, environment); -@@ -2127,4 +2173,14 @@ public abstract class Level implements LevelAccessor, UUIDLookup, AutoCl +@@ -1407,4 +_,14 @@ return this.id; } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch index 8cf028224..67708c82c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/NaturalSpawner.java b/net/minecraft/world/level/NaturalSpawner.java -index 14a2514a408a66a83f7b5fb43b4c4dc8f23fd5f4..fa06ecacc27f619853c8db76d909ab4ba75dc529 100644 --- a/net/minecraft/world/level/NaturalSpawner.java +++ b/net/minecraft/world/level/NaturalSpawner.java -@@ -261,7 +261,7 @@ public final class NaturalSpawner { +@@ -206,7 +_,7 @@ mutableBlockPos.set(x, y, z); double d = x + 0.5; double d1 = z + 0.5; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch index 10a201515..a21b8a6a3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/AnvilBlock.java b/net/minecraft/world/level/block/AnvilBlock.java -index e8bac6deb63e0f94fb5f8b38602b2e3333e5fa8d..b14736c25cfdd94c6e3f159e53865150b06edef6 100644 --- a/net/minecraft/world/level/block/AnvilBlock.java +++ b/net/minecraft/world/level/block/AnvilBlock.java -@@ -54,6 +54,53 @@ public class AnvilBlock extends FallingBlock { +@@ -54,6 +_,53 @@ return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getClockWise()); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch index efd21fc9b..066e2cfd6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/AzaleaBlock.java b/net/minecraft/world/level/block/AzaleaBlock.java -index 435a455ad2ec3dfb142d570a51a720bc6c49dac3..32a1dc20202bad7a15794e98cdc1bf2fb2ad5308 100644 --- a/net/minecraft/world/level/block/AzaleaBlock.java +++ b/net/minecraft/world/level/block/AzaleaBlock.java -@@ -50,6 +50,20 @@ public class AzaleaBlock extends VegetationBlock implements BonemealableBlock { +@@ -50,6 +_,20 @@ @Override public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch index 592a0cdb1..fd6497469 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java b/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java -index fb6e9194440b85487660f91aea7e34fdf086187b..2653ae5bf66f2b117f86e4df04d9cc307ba09011 100644 --- a/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java +++ b/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java -@@ -39,6 +39,7 @@ public abstract class BaseCoralPlantTypeBlock extends Block implements SimpleWat +@@ -39,6 +_,7 @@ } protected static boolean scanForWater(BlockState state, BlockGetter level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch index 87006b24f..e0980cdaf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/BedBlock.java b/net/minecraft/world/level/block/BedBlock.java -index e72ead9ff6541f821a61ad3c50fe068a8c8bb69d..a6f4db5c99d332ac26a52d5174f75e7dc9f51fe5 100644 --- a/net/minecraft/world/level/block/BedBlock.java +++ b/net/minecraft/world/level/block/BedBlock.java -@@ -98,7 +98,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -98,7 +_,7 @@ } Vec3 center = pos.getCenter(); @@ -17,7 +9,7 @@ index e72ead9ff6541f821a61ad3c50fe068a8c8bb69d..a6f4db5c99d332ac26a52d5174f75e7d return InteractionResult.SUCCESS_SERVER; } else if (state.getValue(OCCUPIED)) { if (!BedBlock.canSetSpawn(level)) return this.explodeBed(state, level, pos); // Paper - check explode first -@@ -146,7 +146,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -146,7 +_,7 @@ } Vec3 center = pos.getCenter(); @@ -26,7 +18,7 @@ index e72ead9ff6541f821a61ad3c50fe068a8c8bb69d..a6f4db5c99d332ac26a52d5174f75e7d return InteractionResult.SUCCESS_SERVER; } // CraftBukkit end -@@ -167,7 +167,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -167,7 +_,7 @@ @Override public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch index eeb7a8921..20fb7e9e1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/BigDripleafBlock.java b/net/minecraft/world/level/block/BigDripleafBlock.java -index e1193bcb666b7d38c511df7c1ebddb5897cefa8f..29248afa290b3143375f0538b4dfc80a63f8945f 100644 --- a/net/minecraft/world/level/block/BigDripleafBlock.java +++ b/net/minecraft/world/level/block/BigDripleafBlock.java -@@ -254,7 +254,7 @@ public class BigDripleafBlock extends HorizontalDirectionalBlock implements Bone +@@ -254,7 +_,7 @@ playTiltSound(level, pos, sound); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch index 5cd89fa0f..aee7753ae 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/Block.java b/net/minecraft/world/level/block/Block.java -index ae3e6e31171b1bcfba1ae51a0941b52dda270acd..5613b7366bdb1d444309967bd522eac4edc1feef 100644 --- a/net/minecraft/world/level/block/Block.java +++ b/net/minecraft/world/level/block/Block.java -@@ -99,6 +99,10 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -99,6 +_,10 @@ public static final int UPDATE_LIMIT = 512; protected final StateDefinition stateDefinition; private BlockState defaultBlockState; @@ -19,7 +11,7 @@ index ae3e6e31171b1bcfba1ae51a0941b52dda270acd..5613b7366bdb1d444309967bd522eac4 // Paper start - Protect Bedrock and End Portal/Frames from being destroyed public final boolean isDestroyable() { return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits || -@@ -345,7 +349,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -345,7 +_,7 @@ 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()) { @@ -28,7 +20,7 @@ index ae3e6e31171b1bcfba1ae51a0941b52dda270acd..5613b7366bdb1d444309967bd522eac4 } state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, false); // Paper - Properly handle xp dropping block.popExperience(serverLevel, pos, event.getExpToDrop()); // Paper - Properly handle xp dropping -@@ -363,7 +367,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -363,7 +_,7 @@ public static void dropResources(BlockState state, LevelAccessor level, BlockPos pos, @Nullable BlockEntity blockEntity) { if (level instanceof ServerLevel) { @@ -37,7 +29,7 @@ index ae3e6e31171b1bcfba1ae51a0941b52dda270acd..5613b7366bdb1d444309967bd522eac4 state.spawnAfterBreak((ServerLevel)level, pos, ItemStack.EMPTY, true); } } -@@ -375,11 +379,30 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -375,11 +_,30 @@ public static void dropResources(BlockState state, Level level, BlockPos pos, @Nullable BlockEntity blockEntity, @Nullable Entity entity, ItemStack tool, boolean dropExperience) { // Paper end - Properly handle xp dropping if (level instanceof ServerLevel) { @@ -69,10 +61,11 @@ index ae3e6e31171b1bcfba1ae51a0941b52dda270acd..5613b7366bdb1d444309967bd522eac4 public static void popResource(Level level, BlockPos pos, ItemStack stack) { double d = EntityType.ITEM.getHeight() / 2.0; double d1 = pos.getX() + 0.5 + Mth.nextDouble(level.random, -0.25, 0.25); -@@ -460,7 +483,15 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -460,7 +_,15 @@ } public void setPlacedBy(Level level, BlockPos pos, BlockState state, @Nullable LivingEntity placer, ItemStack stack) { +- } + this.placer = placer; // Purpur - Store placer on Block when placed + } + @@ -80,12 +73,12 @@ index ae3e6e31171b1bcfba1ae51a0941b52dda270acd..5613b7366bdb1d444309967bd522eac4 + @Nullable protected LivingEntity placer = null; + public void forgetPlacer() { + this.placer = null; - } ++ } + // Purpur end - Store placer on Block when placed public boolean isPossibleToRespawnInThis(BlockState state) { return !state.isSolid() && !state.liquid(); -@@ -471,7 +502,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -471,7 +_,7 @@ } public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch index 9bedeb7ba..5459a3f25 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/Blocks.java b/net/minecraft/world/level/block/Blocks.java -index cea1e405c940cd51cf830f28bfc6ce72c0c36a12..4941bf9df0c8ed6316572920323f7c5f6791b002 100644 --- a/net/minecraft/world/level/block/Blocks.java +++ b/net/minecraft/world/level/block/Blocks.java -@@ -6583,6 +6583,7 @@ public class Blocks { +@@ -6571,6 +_,7 @@ BlockBehaviour.Properties.of() .mapColor(MapColor.PLANT) .forceSolidOff() @@ -16,7 +8,7 @@ index cea1e405c940cd51cf830f28bfc6ce72c0c36a12..4941bf9df0c8ed6316572920323f7c5f .instabreak() .sound(SoundType.AZALEA) .noOcclusion() -@@ -6594,6 +6595,7 @@ public class Blocks { +@@ -6582,6 +_,7 @@ BlockBehaviour.Properties.of() .mapColor(MapColor.PLANT) .forceSolidOff() diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch index e93e4521d..86ef53933 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/BubbleColumnBlock.java b/net/minecraft/world/level/block/BubbleColumnBlock.java -index ab93da06d9e9858668aa796db497f282afa7020a..23a9c30baf8d33855703d45c2739fd5072d81adc 100644 --- a/net/minecraft/world/level/block/BubbleColumnBlock.java +++ b/net/minecraft/world/level/block/BubbleColumnBlock.java -@@ -98,9 +98,9 @@ public class BubbleColumnBlock extends Block implements BucketPickup { +@@ -98,9 +_,9 @@ if (blockState.is(Blocks.BUBBLE_COLUMN)) { return blockState; } else if (blockState.is(Blocks.SOUL_SAND)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch index e2478a57c..4fec7e3b9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/CactusBlock.java b/net/minecraft/world/level/block/CactusBlock.java -index 8f6878cc8e72513446895bfc79886075bfcd5565..0f8cfa5423cd1813c655237aa544dad2dc56ba4d 100644 --- a/net/minecraft/world/level/block/CactusBlock.java +++ b/net/minecraft/world/level/block/CactusBlock.java -@@ -22,7 +22,7 @@ import net.minecraft.world.level.pathfinder.PathComputationType; +@@ -22,7 +_,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -17,7 +9,7 @@ index 8f6878cc8e72513446895bfc79886075bfcd5565..0f8cfa5423cd1813c655237aa544dad2 public static final MapCodec CODEC = simpleCodec(CactusBlock::new); public static final IntegerProperty AGE = BlockStateProperties.AGE_15; public static final int MAX_AGE = 15; -@@ -117,7 +117,7 @@ public class CactusBlock extends Block { +@@ -117,7 +_,7 @@ protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { for (Direction direction : Direction.Plane.HORIZONTAL) { BlockState blockState = level.getBlockState(pos.relative(direction)); @@ -26,7 +18,7 @@ index 8f6878cc8e72513446895bfc79886075bfcd5565..0f8cfa5423cd1813c655237aa544dad2 return false; } } -@@ -141,4 +141,34 @@ public class CactusBlock extends Block { +@@ -141,4 +_,34 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return false; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch index 40bf97d83..c78b443f8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/CakeBlock.java b/net/minecraft/world/level/block/CakeBlock.java -index 72236993ebc4fbfc8b6316577caaa9c780bd447b..7c3b5170690af3bbdc856af96c3e01b0e55d6412 100644 --- a/net/minecraft/world/level/block/CakeBlock.java +++ b/net/minecraft/world/level/block/CakeBlock.java -@@ -109,6 +109,7 @@ public class CakeBlock extends Block { +@@ -109,6 +_,7 @@ org.bukkit.event.entity.FoodLevelChangeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(player, 2 + oldFoodLevel); if (!event.isCancelled()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch index 335819edf..6557f2a69 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/CampfireBlock.java b/net/minecraft/world/level/block/CampfireBlock.java -index 028e2ad8bcb23b3f9f80a5ec551204bb2d7db1ae..642550d59e17330437028a84830520f394a41728 100644 --- a/net/minecraft/world/level/block/CampfireBlock.java +++ b/net/minecraft/world/level/block/CampfireBlock.java -@@ -124,7 +124,7 @@ public class CampfireBlock extends BaseEntityBlock implements SimpleWaterloggedB +@@ -124,7 +_,7 @@ return this.defaultBlockState() .setValue(WATERLOGGED, flag) .setValue(SIGNAL_FIRE, this.isSmokeSource(level.getBlockState(clickedPos.below()))) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch index efd17f560..3ab8cbc0e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/CarvedPumpkinBlock.java b/net/minecraft/world/level/block/CarvedPumpkinBlock.java -index 7cdf16c7216878350537b5331081cb30f44d6dbb..a4854370dfdcbc7ec4c27975e4feb69d4cb48a11 100644 --- a/net/minecraft/world/level/block/CarvedPumpkinBlock.java +++ b/net/minecraft/world/level/block/CarvedPumpkinBlock.java -@@ -64,7 +64,7 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { +@@ -64,7 +_,7 @@ if (blockPatternMatch != null) { SnowGolem snowGolem = EntityType.SNOW_GOLEM.create(level, EntitySpawnReason.TRIGGERED); if (snowGolem != null) { @@ -17,7 +9,7 @@ index 7cdf16c7216878350537b5331081cb30f44d6dbb..a4854370dfdcbc7ec4c27975e4feb69d } } else { BlockPattern.BlockPatternMatch blockPatternMatch1 = this.getOrCreateIronGolemFull().find(level, pos); -@@ -72,13 +72,23 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { +@@ -72,13 +_,23 @@ IronGolem ironGolem = EntityType.IRON_GOLEM.create(level, EntitySpawnReason.TRIGGERED); if (ironGolem != null) { ironGolem.setPlayerCreated(true); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch index 8d906bdba..6ead2196b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/CauldronBlock.java b/net/minecraft/world/level/block/CauldronBlock.java -index d58b49e550cfa683f753db2a913fddf307a1bba2..62ee64b97dfb2f1426d43cf1f8b0b0b6ec63b5b1 100644 --- a/net/minecraft/world/level/block/CauldronBlock.java +++ b/net/minecraft/world/level/block/CauldronBlock.java -@@ -32,8 +32,8 @@ public class CauldronBlock extends AbstractCauldronBlock { +@@ -32,8 +_,8 @@ protected static boolean shouldHandlePrecipitation(Level level, Biome.Precipitation precipitation) { return precipitation == Biome.Precipitation.RAIN diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch index 5ea4fd0b7..631c2fafe 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/CaveVinesBlock.java b/net/minecraft/world/level/block/CaveVinesBlock.java -index 4e1a81c01a5c51a977e4fe9d2465e4ef20aab6d4..d67f278e8cb630b680cad22f4117a9545576bf0f 100644 --- a/net/minecraft/world/level/block/CaveVinesBlock.java +++ b/net/minecraft/world/level/block/CaveVinesBlock.java -@@ -92,4 +92,11 @@ public class CaveVinesBlock extends GrowingPlantHeadBlock implements CaveVines { +@@ -92,4 +_,11 @@ public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { level.setBlock(pos, state.setValue(BERRIES, true), 2); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch index 8dbb7fd3c..54d2fa463 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/ChangeOverTimeBlock.java b/net/minecraft/world/level/block/ChangeOverTimeBlock.java -index ba7dbfa3f95bf93f3e50b17aa48b772a3047b74d..d42062a86c1278b71bc085cc3fb29a69039873de 100644 --- a/net/minecraft/world/level/block/ChangeOverTimeBlock.java +++ b/net/minecraft/world/level/block/ChangeOverTimeBlock.java -@@ -51,7 +51,7 @@ public interface ChangeOverTimeBlock> { +@@ -51,7 +_,7 @@ } float f = (float)(i1 + 1) / (i1 + i + 1); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch index 981c5fd5a..92f2abf28 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/ChestBlock.java b/net/minecraft/world/level/block/ChestBlock.java -index c4937d1b482e2ec60961bda62ad6cc155f0ce8f7..43f9d4b8a7ab4cd0a1a5dee9d0c0c7790894a2ae 100644 --- a/net/minecraft/world/level/block/ChestBlock.java +++ b/net/minecraft/world/level/block/ChestBlock.java -@@ -337,6 +337,7 @@ public class ChestBlock extends AbstractChestBlock implements +@@ -337,6 +_,7 @@ } public static boolean isBlockedChestByBlock(BlockGetter level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch index cd3e2d96f..8ee18624a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/ComposterBlock.java b/net/minecraft/world/level/block/ComposterBlock.java -index a647d76d365a60b95a3eb7927ac426bf70d417f3..3eb11df5d14ec63911be630ca99d8d9903723f9b 100644 --- a/net/minecraft/world/level/block/ComposterBlock.java +++ b/net/minecraft/world/level/block/ComposterBlock.java -@@ -250,17 +250,27 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { +@@ -250,23 +_,52 @@ ) { int levelValue = state.getValue(LEVEL); if (levelValue < 8 && COMPOSTABLES.containsKey(stack.getItem())) { @@ -22,6 +14,7 @@ index a647d76d365a60b95a3eb7927ac426bf70d417f3..3eb11df5d14ec63911be630ca99d8d99 - level.levelEvent(1500, pos, state != blockState ? 1 : 0); - player.awardStat(Stats.ITEM_USED.get(stack.getItem())); - stack.consume(1, player); +- } + // Purpur start - sneak to bulk process composter + BlockState newState = process(levelValue, player, state, level, pos, stack); + if (newState == null) { @@ -41,15 +34,15 @@ index a647d76d365a60b95a3eb7927ac426bf70d417f3..3eb11df5d14ec63911be630ca99d8d99 + newCount = stack.getCount(); + newLevel = newState.getValue(ComposterBlock.LEVEL); + } while (newCount > 0 && (newCount != oldCount || newLevel != oldLevel || newState != oldState)); - } ++ } + // Purpur end - Sneak to bulk process composter return InteractionResult.SUCCESS; } else { -@@ -268,6 +278,25 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { + return super.useItemOn(stack, state, level, pos, player, hand, hitResult); } } - ++ + // Purpur start - sneak to bulk process composter + private static @Nullable BlockState process(int levelValue, Player player, BlockState state, Level level, BlockPos pos, ItemStack stack) { + if (levelValue < 7 && !level.isClientSide) { @@ -68,7 +61,6 @@ index a647d76d365a60b95a3eb7927ac426bf70d417f3..3eb11df5d14ec63911be630ca99d8d99 + return state; + } + // Purpur end - Sneak to bulk process composter -+ + @Override protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { - int levelValue = state.getValue(LEVEL); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch index cf2a8750a..690cfe031 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/CoralBlock.java b/net/minecraft/world/level/block/CoralBlock.java -index e0be02eaa07d40d0738931383426517d20fe3b0b..b747af5f3c65f4b79a304b0e903f7b824fb03d8d 100644 --- a/net/minecraft/world/level/block/CoralBlock.java +++ b/net/minecraft/world/level/block/CoralBlock.java -@@ -65,6 +65,7 @@ public class CoralBlock extends Block { +@@ -65,6 +_,7 @@ } protected boolean scanForWater(BlockGetter level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch index 33e4c3e6d..667d7f96f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/CropBlock.java b/net/minecraft/world/level/block/CropBlock.java -index a38ce03a4dab6c83a0b54f47fd3c36d6da46fa24..b370b955ac8636275dfada4f38a7ca10297f7dac 100644 --- a/net/minecraft/world/level/block/CropBlock.java +++ b/net/minecraft/world/level/block/CropBlock.java -@@ -169,7 +169,7 @@ public class CropBlock extends VegetationBlock implements BonemealableBlock { +@@ -169,7 +_,7 @@ @Override protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent @@ -17,7 +9,7 @@ index a38ce03a4dab6c83a0b54f47fd3c36d6da46fa24..b370b955ac8636275dfada4f38a7ca10 serverLevel.destroyBlock(pos, true, entity); } -@@ -204,4 +204,15 @@ public class CropBlock extends VegetationBlock implements BonemealableBlock { +@@ -204,4 +_,15 @@ protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch index e425ca7a7..235a738f9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/DoorBlock.java b/net/minecraft/world/level/block/DoorBlock.java -index 7f40ccfe379ab284424d730213b343e17239dc0c..2fa6a85b0f1694d0989905a421198c6495271beb 100644 --- a/net/minecraft/world/level/block/DoorBlock.java +++ b/net/minecraft/world/level/block/DoorBlock.java -@@ -199,6 +199,7 @@ public class DoorBlock extends Block { +@@ -199,6 +_,7 @@ protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { if (!this.type.canOpenByHand()) { return InteractionResult.PASS; @@ -16,7 +8,7 @@ index 7f40ccfe379ab284424d730213b343e17239dc0c..2fa6a85b0f1694d0989905a421198c64 } else { state = state.cycle(OPEN); level.setBlock(pos, state, 10); -@@ -287,4 +288,18 @@ public class DoorBlock extends Block { +@@ -287,4 +_,18 @@ public static boolean isWoodenDoor(BlockState state) { return state.getBlock() instanceof DoorBlock doorBlock && doorBlock.type().canOpenByHand(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch index cf6af618a..d08f61da6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/DragonEggBlock.java b/net/minecraft/world/level/block/DragonEggBlock.java -index 5c2f10486e3aed090c6545a86276e6927e424cb2..9ed7ffb10e0a172fe5f3dd4613922428af82e5db 100644 --- a/net/minecraft/world/level/block/DragonEggBlock.java +++ b/net/minecraft/world/level/block/DragonEggBlock.java -@@ -46,6 +46,7 @@ public class DragonEggBlock extends FallingBlock { +@@ -46,6 +_,7 @@ } private void teleport(BlockState state, Level level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch index 7108b7ee4..30d849778 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/EnchantingTableBlock.java b/net/minecraft/world/level/block/EnchantingTableBlock.java -index 523082c69aad8269cd058ad6864184c3ab51dbeb..4f4e81a845c4d3dc0e7d82ba323a8595581535e2 100644 --- a/net/minecraft/world/level/block/EnchantingTableBlock.java +++ b/net/minecraft/world/level/block/EnchantingTableBlock.java -@@ -119,4 +119,16 @@ public class EnchantingTableBlock extends BaseEntityBlock { +@@ -119,4 +_,16 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return false; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch index 5fa666020..c04018815 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/FarmBlock.java b/net/minecraft/world/level/block/FarmBlock.java -index a31ac95237515b874f59941ec24c74e2c357b3d8..9883e6d1a1b76155c8ba1817fda6615b4742e18e 100644 --- a/net/minecraft/world/level/block/FarmBlock.java +++ b/net/minecraft/world/level/block/FarmBlock.java -@@ -112,7 +112,7 @@ public class FarmBlock extends Block { +@@ -112,7 +_,7 @@ public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { super.fallOn(level, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. if (level instanceof ServerLevel serverLevel @@ -17,7 +9,7 @@ index a31ac95237515b874f59941ec24c74e2c357b3d8..9883e6d1a1b76155c8ba1817fda6615b && entity instanceof LivingEntity && (entity instanceof Player || serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) { -@@ -129,6 +129,28 @@ public class FarmBlock extends Block { +@@ -129,6 +_,28 @@ return; } @@ -46,7 +38,7 @@ index a31ac95237515b874f59941ec24c74e2c357b3d8..9883e6d1a1b76155c8ba1817fda6615b if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; } -@@ -177,7 +199,7 @@ public class FarmBlock extends Block { +@@ -177,7 +_,7 @@ } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch index 6a39da4c0..7dd50302a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/GrowingPlantHeadBlock.java b/net/minecraft/world/level/block/GrowingPlantHeadBlock.java -index fe11f3ec82ebdbdf3d024d7273fb16b6823b1ece..daaf0ddee9192fa24a70954ce52b381560fcbc1f 100644 --- a/net/minecraft/world/level/block/GrowingPlantHeadBlock.java +++ b/net/minecraft/world/level/block/GrowingPlantHeadBlock.java -@@ -34,12 +34,12 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -34,12 +_,12 @@ @Override public BlockState getStateForPlacement(RandomSource random) { @@ -23,7 +15,7 @@ index fe11f3ec82ebdbdf3d024d7273fb16b6823b1ece..daaf0ddee9192fa24a70954ce52b3815 } @Override -@@ -55,7 +55,7 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -55,7 +_,7 @@ } else if (this == Blocks.CAVE_VINES) { modifier = level.spigotConfig.caveVinesModifier; } @@ -32,7 +24,7 @@ index fe11f3ec82ebdbdf3d024d7273fb16b6823b1ece..daaf0ddee9192fa24a70954ce52b3815 // Spigot end BlockPos blockPos = pos.relative(this.growthDirection); if (this.canGrowInto(level.getBlockState(blockPos))) { -@@ -75,11 +75,11 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -75,11 +_,11 @@ } public BlockState getMaxAgeState(BlockState state) { @@ -46,7 +38,7 @@ index fe11f3ec82ebdbdf3d024d7273fb16b6823b1ece..daaf0ddee9192fa24a70954ce52b3815 } protected BlockState updateBodyAfterConvertedFromHead(BlockState head, BlockState body) { -@@ -137,13 +137,13 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -137,13 +_,13 @@ @Override public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { BlockPos blockPos = pos.relative(this.growthDirection); @@ -62,7 +54,7 @@ index fe11f3ec82ebdbdf3d024d7273fb16b6823b1ece..daaf0ddee9192fa24a70954ce52b3815 } } -@@ -155,4 +155,6 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -155,4 +_,6 @@ protected GrowingPlantHeadBlock getHeadBlock() { return this; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch index 69beead50..1b21c6e0a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/HayBlock.java b/net/minecraft/world/level/block/HayBlock.java -index cdde0a25e0a499d7575c00796143a033feb1f22f..999ecf16180b0a862cf8527ce532acf725ba869a 100644 --- a/net/minecraft/world/level/block/HayBlock.java +++ b/net/minecraft/world/level/block/HayBlock.java -@@ -23,6 +23,6 @@ public class HayBlock extends RotatedPillarBlock { +@@ -23,6 +_,6 @@ @Override public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch index 0769e8a2b..0f5251d57 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/IceBlock.java b/net/minecraft/world/level/block/IceBlock.java -index be7141a4009036bcf3f92bba5d0ad74459e99bfa..a4d735a4365fdaf9e602315aa1176dfd5db77ff5 100644 --- a/net/minecraft/world/level/block/IceBlock.java +++ b/net/minecraft/world/level/block/IceBlock.java -@@ -40,7 +40,7 @@ public class IceBlock extends HalfTransparentBlock { +@@ -40,7 +_,7 @@ public void afterDestroy(Level level, BlockPos pos, ItemStack stack) { // Paper end - Improve Block#breakNaturally API if (!EnchantmentHelper.hasTag(stack, EnchantmentTags.PREVENTS_ICE_MELTING)) { @@ -17,7 +9,7 @@ index be7141a4009036bcf3f92bba5d0ad74459e99bfa..a4d735a4365fdaf9e602315aa1176dfd level.removeBlock(pos, false); return; } -@@ -65,7 +65,7 @@ public class IceBlock extends HalfTransparentBlock { +@@ -65,7 +_,7 @@ return; } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch index 083e1a29f..b0ce9ac1a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/KelpBlock.java b/net/minecraft/world/level/block/KelpBlock.java -index 8e3f2518e705a4b8988a1c9da730f0c89f21bdce..6e6212fd891dcaea0d0a398a73416f31d2cb2406 100644 --- a/net/minecraft/world/level/block/KelpBlock.java +++ b/net/minecraft/world/level/block/KelpBlock.java -@@ -72,4 +72,11 @@ public class KelpBlock extends GrowingPlantHeadBlock implements LiquidBlockConta +@@ -72,4 +_,11 @@ protected FluidState getFluidState(BlockState state) { return Fluids.WATER.getSource(false); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch index d0b3b3b22..ef0559942 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/LiquidBlock.java b/net/minecraft/world/level/block/LiquidBlock.java -index 7320b416e8d660419018b0699f49ab6f45a3373b..ae609e0603a78423c4c89b7efb9c41ab8fe7aa52 100644 --- a/net/minecraft/world/level/block/LiquidBlock.java +++ b/net/minecraft/world/level/block/LiquidBlock.java -@@ -134,7 +134,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -134,7 +_,7 @@ @Override protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean isMoving) { @@ -17,7 +9,7 @@ index 7320b416e8d660419018b0699f49ab6f45a3373b..ae609e0603a78423c4c89b7efb9c41ab level.scheduleTick(pos, state.getFluidState().getType(), this.getFlowSpeed(level, pos)); // Paper - Configurable speed for water flowing over lava } } -@@ -169,7 +169,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -169,7 +_,7 @@ BlockState neighborState, RandomSource random ) { @@ -26,7 +18,7 @@ index 7320b416e8d660419018b0699f49ab6f45a3373b..ae609e0603a78423c4c89b7efb9c41ab scheduledTickAccess.scheduleTick(pos, state.getFluidState().getType(), this.fluid.getTickDelay(level)); } -@@ -178,7 +178,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -178,7 +_,7 @@ @Override protected void neighborChanged(BlockState state, Level level, BlockPos pos, Block neighborBlock, @Nullable Orientation orientation, boolean movedByPiston) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch index 9ccd412f1..f9d8ca928 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/MagmaBlock.java b/net/minecraft/world/level/block/MagmaBlock.java -index db83c3630064a6875b477021a1f78bdf59c4ddc3..bbf8447cf986015f8a2e55f39d7b4f0dd9abcb23 100644 --- a/net/minecraft/world/level/block/MagmaBlock.java +++ b/net/minecraft/world/level/block/MagmaBlock.java -@@ -28,7 +28,7 @@ public class MagmaBlock extends Block { +@@ -28,7 +_,7 @@ @Override public void stepOn(Level level, BlockPos pos, BlockState state, Entity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch index 35c15d57f..f3f45c58f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/NetherPortalBlock.java b/net/minecraft/world/level/block/NetherPortalBlock.java -index 2f08780430fc643991ffb4aeba1f1ae8e78944d2..fa0d6baa40c6052c993d870d124af911e8621f0a 100644 --- a/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/net/minecraft/world/level/block/NetherPortalBlock.java -@@ -72,7 +72,7 @@ public class NetherPortalBlock extends Block implements Portal { +@@ -67,7 +_,7 @@ protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { if (level.spigotConfig.enableZombiePigmenPortalSpawns && level.dimensionType().natural() // Spigot && level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) @@ -17,7 +9,7 @@ index 2f08780430fc643991ffb4aeba1f1ae8e78944d2..fa0d6baa40c6052c993d870d124af911 && level.anyPlayerCloseEnoughForSpawning(pos)) { while (level.getBlockState(pos).is(this)) { pos = pos.below(); -@@ -130,7 +130,7 @@ public class NetherPortalBlock extends Block implements Portal { +@@ -125,7 +_,7 @@ @Override public int getPortalTransitionTime(ServerLevel level, Entity entity) { return entity instanceof Player player diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch index ba5fa07fd..362dae20a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/NetherWartBlock.java b/net/minecraft/world/level/block/NetherWartBlock.java -index a8cb58de6223006150bc49b95e5964b8fc42cecc..d25e2a37abb5e4c98116048fe2e96194149763ca 100644 --- a/net/minecraft/world/level/block/NetherWartBlock.java +++ b/net/minecraft/world/level/block/NetherWartBlock.java -@@ -16,7 +16,7 @@ import net.minecraft.world.level.block.state.properties.IntegerProperty; +@@ -16,7 +_,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -17,7 +9,7 @@ index a8cb58de6223006150bc49b95e5964b8fc42cecc..d25e2a37abb5e4c98116048fe2e96194 public static final MapCodec CODEC = simpleCodec(NetherWartBlock::new); public static final int MAX_AGE = 3; public static final IntegerProperty AGE = BlockStateProperties.AGE_3; -@@ -65,4 +65,34 @@ public class NetherWartBlock extends VegetationBlock { +@@ -65,4 +_,34 @@ protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch index 3593406fe..42c3d0b22 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/NoteBlock.java b/net/minecraft/world/level/block/NoteBlock.java -index 9467d5226797f67565edf8a46fd5b48135337410..7560d49b1952dba22e88758b15a24540ca576bbb 100644 --- a/net/minecraft/world/level/block/NoteBlock.java +++ b/net/minecraft/world/level/block/NoteBlock.java -@@ -101,7 +101,7 @@ public class NoteBlock extends Block { +@@ -101,7 +_,7 @@ } private void playNote(@Nullable Entity entity, BlockState state, Level level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch index 60fd570e0..3202a8cee 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/ObserverBlock.java b/net/minecraft/world/level/block/ObserverBlock.java -index bd2aa00ce8b78c16f6107064dd00bfbb072df0df..9fa1ed439ef9adba44f3d4738688a95fb4625b68 100644 --- a/net/minecraft/world/level/block/ObserverBlock.java +++ b/net/minecraft/world/level/block/ObserverBlock.java -@@ -81,6 +81,7 @@ public class ObserverBlock extends DirectionalBlock { +@@ -81,6 +_,7 @@ RandomSource random ) { if (state.getValue(FACING) == direction && !state.getValue(POWERED)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch index 1541f5d80..cad7d9a3c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/PointedDripstoneBlock.java b/net/minecraft/world/level/block/PointedDripstoneBlock.java -index ef164fb4f24412e506b8abce74d509e8be6c4676..85e9aecc2045e1599488d6a137f5f9713fb1a245 100644 --- a/net/minecraft/world/level/block/PointedDripstoneBlock.java +++ b/net/minecraft/world/level/block/PointedDripstoneBlock.java -@@ -193,20 +193,20 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate +@@ -193,20 +_,20 @@ @VisibleForTesting public static void maybeTransferFluid(BlockState state, ServerLevel level, BlockPos pos, float randChance) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch index c3a89dac5..f6c12cc4c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/PoweredRailBlock.java b/net/minecraft/world/level/block/PoweredRailBlock.java -index 5ec12356e9f044d99762bf64a6d3bf74856d97a6..e80069d27ff60e0967d9333e2a0d6c8bf2f20a16 100644 --- a/net/minecraft/world/level/block/PoweredRailBlock.java +++ b/net/minecraft/world/level/block/PoweredRailBlock.java -@@ -28,7 +28,7 @@ public class PoweredRailBlock extends BaseRailBlock { +@@ -28,7 +_,7 @@ } protected boolean findPoweredRailSignal(Level level, BlockPos pos, BlockState state, boolean searchForward, int recursionCount) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch index 3a08de050..c5ac40711 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/RespawnAnchorBlock.java b/net/minecraft/world/level/block/RespawnAnchorBlock.java -index 5b9d67d671ea70d4a8920a7f190d240c920971ac..f0b4ea2065f98f5430bba89f1a86ea5e8791aa1f 100644 --- a/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/net/minecraft/world/level/block/RespawnAnchorBlock.java -@@ -160,7 +160,7 @@ public class RespawnAnchorBlock extends Block { +@@ -160,7 +_,7 @@ }; Vec3 center = pos2.getCenter(); level.explode( diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch index ca6ae5c67..aa23616be 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/SculkShriekerBlock.java b/net/minecraft/world/level/block/SculkShriekerBlock.java -index 757f8453e147875ab9f14d9726bb734ef27447c9..f8c9a6d7c9f1a9d2afd820244017a709db79e080 100644 --- a/net/minecraft/world/level/block/SculkShriekerBlock.java +++ b/net/minecraft/world/level/block/SculkShriekerBlock.java -@@ -118,7 +118,7 @@ public class SculkShriekerBlock extends BaseEntityBlock implements SimpleWaterlo +@@ -118,7 +_,7 @@ @Nullable @Override public BlockState getStateForPlacement(BlockPlaceContext context) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch index c7b485152..9e9c9b817 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/SlabBlock.java b/net/minecraft/world/level/block/SlabBlock.java -index a71d72147db9766fa16bdb6254d8eb6f2f7dba7b..66b9862563932faf0044810bde7bd3fb522c109b 100644 --- a/net/minecraft/world/level/block/SlabBlock.java +++ b/net/minecraft/world/level/block/SlabBlock.java -@@ -144,4 +144,25 @@ public class SlabBlock extends Block implements SimpleWaterloggedBlock { +@@ -144,4 +_,25 @@ return false; } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch index 488baec79..ca87324a4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/SnowLayerBlock.java b/net/minecraft/world/level/block/SnowLayerBlock.java -index 9131098e3ae4e6ffdf1491eb62537e385f75b6b2..ddedc08a96e500a390421d39be36590f37f49d24 100644 --- a/net/minecraft/world/level/block/SnowLayerBlock.java +++ b/net/minecraft/world/level/block/SnowLayerBlock.java -@@ -76,6 +76,7 @@ public class SnowLayerBlock extends Block { +@@ -76,6 +_,7 @@ @Override protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { BlockState blockState = level.getBlockState(pos.below()); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch index 118c01899..9c1015ed7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/SpawnerBlock.java b/net/minecraft/world/level/block/SpawnerBlock.java -index e8d7b6adbcb84e8d89067b54318e0feb3c3276a6..2076474168410f376beebc072af4959e5d08c101 100644 --- a/net/minecraft/world/level/block/SpawnerBlock.java +++ b/net/minecraft/world/level/block/SpawnerBlock.java -@@ -38,6 +38,59 @@ public class SpawnerBlock extends BaseEntityBlock { +@@ -38,6 +_,59 @@ ); } @@ -68,7 +60,7 @@ index e8d7b6adbcb84e8d89067b54318e0feb3c3276a6..2076474168410f376beebc072af4959e @Override protected void spawnAfterBreak(BlockState state, ServerLevel level, BlockPos pos, ItemStack stack, boolean dropExperience) { super.spawnAfterBreak(state, level, pos, stack, dropExperience); -@@ -46,6 +99,7 @@ public class SpawnerBlock extends BaseEntityBlock { +@@ -46,6 +_,7 @@ @Override public int getExpDrop(BlockState state, ServerLevel level, BlockPos pos, ItemStack stack, boolean dropExperience) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch index 942f9280a..ab343ffb3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/SpongeBlock.java b/net/minecraft/world/level/block/SpongeBlock.java -index 5d1b8c55bffc42924c4a95b1b4bd2e1e0b064af3..69822d21d0e71f4b29349af0bee2d80fa0802a3b 100644 --- a/net/minecraft/world/level/block/SpongeBlock.java +++ b/net/minecraft/world/level/block/SpongeBlock.java -@@ -53,8 +53,8 @@ public class SpongeBlock extends Block { +@@ -53,8 +_,8 @@ org.bukkit.craftbukkit.util.BlockStateListPopulator blockList = new org.bukkit.craftbukkit.util.BlockStateListPopulator(level); // CraftBukkit - Use BlockStateListPopulator BlockPos.breadthFirstTraversal( pos, @@ -19,7 +11,7 @@ index 5d1b8c55bffc42924c4a95b1b4bd2e1e0b064af3..69822d21d0e71f4b29349af0bee2d80f (validPos, queueAdder) -> { for (Direction direction : ALL_DIRECTIONS) { queueAdder.accept(validPos.relative(direction)); -@@ -68,7 +68,7 @@ public class SpongeBlock extends Block { +@@ -68,7 +_,7 @@ BlockState blockState = blockList.getBlockState(blockPos); FluidState fluidState = blockList.getFluidState(blockPos); // CraftBukkit end @@ -28,7 +20,7 @@ index 5d1b8c55bffc42924c4a95b1b4bd2e1e0b064af3..69822d21d0e71f4b29349af0bee2d80f return BlockPos.TraversalNodeStatus.SKIP; } else if (blockState.getBlock() instanceof BucketPickup bucketPickup && !bucketPickup.pickupBlock(null, blockList, blockPos, blockState).isEmpty()) { // CraftBukkit -@@ -76,6 +76,10 @@ public class SpongeBlock extends Block { +@@ -76,6 +_,10 @@ } else { if (blockState.getBlock() instanceof LiquidBlock) { blockList.setBlock(blockPos, Blocks.AIR.defaultBlockState(), 3); // CraftBukkit diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch index 4d34c5757..8cfd145db 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/StonecutterBlock.java b/net/minecraft/world/level/block/StonecutterBlock.java -index 6d1ab251e7d09ada7edcde7f52ca49ae5efe16b6..a58c94a40bad1d60b970b06decde9851692a8b63 100644 --- a/net/minecraft/world/level/block/StonecutterBlock.java +++ b/net/minecraft/world/level/block/StonecutterBlock.java -@@ -93,4 +93,14 @@ public class StonecutterBlock extends Block { +@@ -93,4 +_,14 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return false; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch index 5a7b2b373..f388f13ce 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/SugarCaneBlock.java b/net/minecraft/world/level/block/SugarCaneBlock.java -index a8de37e173e244d7a16c19ac8805e0e4327c837a..baa56c6422c0924bb8b7c5a78db17acf784f28d6 100644 --- a/net/minecraft/world/level/block/SugarCaneBlock.java +++ b/net/minecraft/world/level/block/SugarCaneBlock.java -@@ -19,7 +19,7 @@ import net.minecraft.world.level.material.FluidState; +@@ -19,7 +_,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -17,7 +9,7 @@ index a8de37e173e244d7a16c19ac8805e0e4327c837a..baa56c6422c0924bb8b7c5a78db17acf public static final MapCodec CODEC = simpleCodec(SugarCaneBlock::new); public static final IntegerProperty AGE = BlockStateProperties.AGE_15; private static final VoxelShape SHAPE = Block.column(12.0, 0.0, 16.0); -@@ -112,4 +112,34 @@ public class SugarCaneBlock extends Block { +@@ -112,4 +_,34 @@ protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch index f2062adca..165f005db 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/TurtleEggBlock.java b/net/minecraft/world/level/block/TurtleEggBlock.java -index 8ee103e2752290db4cb4b22bb3552bf80e2ceb92..a23626dbfacf98ef1bc7918ca35406fa71307bed 100644 --- a/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -156,7 +156,7 @@ public class TurtleEggBlock extends Block { +@@ -156,7 +_,7 @@ private boolean shouldUpdateHatchLevel(Level level) { float timeOfDay = level.getTimeOfDay(1.0F); @@ -17,7 +9,7 @@ index 8ee103e2752290db4cb4b22bb3552bf80e2ceb92..a23626dbfacf98ef1bc7918ca35406fa } @Override -@@ -189,9 +189,32 @@ public class TurtleEggBlock extends Block { +@@ -189,9 +_,32 @@ } private boolean canDestroyEgg(ServerLevel level, Entity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch index 386e0cae4..89633d8f7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/TwistingVinesBlock.java b/net/minecraft/world/level/block/TwistingVinesBlock.java -index afb77747ea6966c435aca4b667bfbbc909f52232..361aaca76ae0375782310af0e03241625f08f7bd 100644 --- a/net/minecraft/world/level/block/TwistingVinesBlock.java +++ b/net/minecraft/world/level/block/TwistingVinesBlock.java -@@ -34,4 +34,11 @@ public class TwistingVinesBlock extends GrowingPlantHeadBlock { +@@ -34,4 +_,11 @@ protected boolean canGrowInto(BlockState state) { return NetherVines.isValidGrowthState(state); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch index 659724a69..af22ad6c3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/VegetationBlock.java b/net/minecraft/world/level/block/VegetationBlock.java -index 0aa7c1084fd6ed35260469572cdd914d87f3922a..a1b5e815425fccbc601c8062fcc24598512e47dd 100644 --- a/net/minecraft/world/level/block/VegetationBlock.java +++ b/net/minecraft/world/level/block/VegetationBlock.java -@@ -61,4 +61,24 @@ public abstract class VegetationBlock extends Block { +@@ -61,4 +_,24 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return pathComputationType == PathComputationType.AIR && !this.hasCollision || super.isPathfindable(state, pathComputationType); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch index a3f4f6440..be28707f2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/WeepingVinesBlock.java b/net/minecraft/world/level/block/WeepingVinesBlock.java -index f4ff810cdd4206711312a4fffba18f4b30a5701f..96fb69aaf9ed020a328ff609d49f88ab29a69952 100644 --- a/net/minecraft/world/level/block/WeepingVinesBlock.java +++ b/net/minecraft/world/level/block/WeepingVinesBlock.java -@@ -34,4 +34,11 @@ public class WeepingVinesBlock extends GrowingPlantHeadBlock { +@@ -34,4 +_,11 @@ protected boolean canGrowInto(BlockState state) { return NetherVines.isValidGrowthState(state); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch index dcca700b9..d92c3e43b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/WitherSkullBlock.java b/net/minecraft/world/level/block/WitherSkullBlock.java -index 0b6debe0e55e404e6f34b3bc437fe7c7a30cec7c..a70f552fddc58efdce770c36abb548ef8359d939 100644 --- a/net/minecraft/world/level/block/WitherSkullBlock.java +++ b/net/minecraft/world/level/block/WitherSkullBlock.java -@@ -71,6 +71,7 @@ public class WitherSkullBlock extends SkullBlock { +@@ -71,6 +_,7 @@ ); witherBoss.yBodyRot = blockPatternMatch.getForwards().getAxis() == Direction.Axis.X ? 0.0F : 90.0F; witherBoss.makeInvulnerable(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch index 67bd2f988..4cb4b65da 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -index c5b3b5e5f621f8db152aa190374ae0fe567d6828..4e0fa0a7c639f2c0ded1bfbc8dd01da142043505 100644 --- a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -@@ -186,6 +186,21 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit +@@ -186,6 +_,21 @@ } ItemStack itemStack = furnace.items.get(1); @@ -30,7 +22,7 @@ index c5b3b5e5f621f8db152aa190374ae0fe567d6828..4e0fa0a7c639f2c0ded1bfbc8dd01da1 ItemStack itemStack1 = furnace.items.get(0); boolean flag1 = !itemStack1.isEmpty(); boolean flag2 = !itemStack.isEmpty(); -@@ -269,6 +284,8 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit +@@ -269,6 +_,8 @@ if (flag) { setChanged(level, pos, state); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch index 0d938086a..f196366ed 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -index b77cdbf3e8cf0e9d66c9e5288ebae38c79dae1fe..bc7b9d6faded66e95c38cfc5571b09c05af30deb 100644 --- a/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -@@ -142,6 +142,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name +@@ -143,6 +_,16 @@ public double getEffectRange() { if (this.effectRange < 0) { @@ -25,7 +17,7 @@ index b77cdbf3e8cf0e9d66c9e5288ebae38c79dae1fe..bc7b9d6faded66e95c38cfc5571b09c0 return this.levels * 10 + 10; } else { return effectRange; -@@ -171,6 +181,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name +@@ -172,6 +_,7 @@ int y = pos.getY(); int z = pos.getZ(); BlockPos blockPos; @@ -33,7 +25,7 @@ index b77cdbf3e8cf0e9d66c9e5288ebae38c79dae1fe..bc7b9d6faded66e95c38cfc5571b09c0 if (blockEntity.lastCheckY < y) { blockPos = pos; blockEntity.checkingBeamSections = Lists.newArrayList(); -@@ -200,6 +211,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name +@@ -201,6 +_,7 @@ } } } else { @@ -41,7 +33,7 @@ index b77cdbf3e8cf0e9d66c9e5288ebae38c79dae1fe..bc7b9d6faded66e95c38cfc5571b09c0 if (section == null || blockState.getLightBlock() >= 15 && !blockState.is(Blocks.BEDROCK)) { blockEntity.checkingBeamSections.clear(); blockEntity.lastCheckY = height; -@@ -219,7 +231,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name +@@ -220,7 +_,7 @@ blockEntity.levels = updateBase(level, x, y, z); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch index 7f8a49909..9369902be 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index 331eb5416307378162e39e20192ba06a047b70ea..129e63c18e8c641ad2413111632c8a54b1385d1d 100644 --- a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -@@ -72,7 +72,7 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -75,7 +_,7 @@ "leash", "UUID" ); @@ -17,7 +9,7 @@ index 331eb5416307378162e39e20192ba06a047b70ea..129e63c18e8c641ad2413111632c8a54 private static final int MIN_TICKS_BEFORE_REENTERING_HIVE = 400; private static final int MIN_OCCUPATION_TICKS_NECTAR = 2400; public static final int MIN_OCCUPATION_TICKS_NECTARLESS = 600; -@@ -147,11 +147,33 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -150,11 +_,33 @@ return list; } @@ -51,7 +43,7 @@ index 331eb5416307378162e39e20192ba06a047b70ea..129e63c18e8c641ad2413111632c8a54 // Paper start - Add EntityBlockStorage clearEntities public void clearBees() { this.stored.clear(); -@@ -389,8 +411,8 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -392,8 +_,8 @@ return this.stored.stream().map(BeehiveBlockEntity.BeeData::toOccupant).toList(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch index 1d9fb2255..940a560fc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/entity/SignBlockEntity.java b/net/minecraft/world/level/block/entity/SignBlockEntity.java -index 8f87248a77c2083541105cfd1da1bc87bd122ba4..4c5de8783b2fc87a442e194e0069ce9cd5b5fd6c 100644 --- a/net/minecraft/world/level/block/entity/SignBlockEntity.java +++ b/net/minecraft/world/level/block/entity/SignBlockEntity.java -@@ -151,16 +151,32 @@ public class SignBlockEntity extends BlockEntity { +@@ -148,16 +_,32 @@ return this.setText(updater.apply(text), isFrontText); } @@ -43,10 +35,11 @@ index 8f87248a77c2083541105cfd1da1bc87bd122ba4..4c5de8783b2fc87a442e194e0069ce9c ); } } -@@ -298,6 +314,24 @@ public class SignBlockEntity extends BlockEntity { - return new CommandSourceStack(commandSource, Vec3.atCenterOf(pos), Vec2.ZERO, (ServerLevel)level, 2, string, component, level.getServer(), player); // Paper - Fix commands from signs not firing command events +@@ -306,6 +_,24 @@ + // CraftBukkit - this + return new CommandSourceStack(commandSource, Vec3.atCenterOf(pos), Vec2.ZERO, level, 2, string, component, level.getServer(), player); // Paper - Fix commands from signs not firing command events } - ++ + // Purpur start - Signs allow color codes + public ClientboundBlockEntityDataPacket getTranslatedUpdatePacket(boolean filtered, boolean front) { + final CompoundTag nbt = new CompoundTag(); @@ -64,7 +57,6 @@ index 8f87248a77c2083541105cfd1da1bc87bd122ba4..4c5de8783b2fc87a442e194e0069ce9c + return ClientboundBlockEntityDataPacket.create(this, (blockEntity, registryAccess) -> nbt); + } + // Purpur end - Signs allow color codes -+ + @Override public ClientboundBlockEntityDataPacket getUpdatePacket() { - return ClientboundBlockEntityDataPacket.create(this); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch index 14e1d2ad5..bc6293606 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/piston/PistonStructureResolver.java b/net/minecraft/world/level/block/piston/PistonStructureResolver.java -index ad143a92569f5b420ccaa2089758b2fb3b4ab7c5..5a3660e02bc805e9a35a81b8a61f07b3f20b5ba9 100644 --- a/net/minecraft/world/level/block/piston/PistonStructureResolver.java +++ b/net/minecraft/world/level/block/piston/PistonStructureResolver.java -@@ -81,7 +81,7 @@ public class PistonStructureResolver { +@@ -81,7 +_,7 @@ return true; } else { int i = 1; @@ -17,7 +9,7 @@ index ad143a92569f5b420ccaa2089758b2fb3b4ab7c5..5a3660e02bc805e9a35a81b8a61f07b3 return false; } else { while (isSticky(blockState)) { -@@ -95,7 +95,7 @@ public class PistonStructureResolver { +@@ -95,7 +_,7 @@ break; } @@ -26,7 +18,7 @@ index ad143a92569f5b420ccaa2089758b2fb3b4ab7c5..5a3660e02bc805e9a35a81b8a61f07b3 return false; } } -@@ -140,7 +140,7 @@ public class PistonStructureResolver { +@@ -140,7 +_,7 @@ return true; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch index 3eee25292..51e0ad919 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/levelgen/DensityFunctions.java b/net/minecraft/world/level/levelgen/DensityFunctions.java -index 04527a5c65ad630f794fed9071d485aedd02257a..77731406cb3dc417aa2fe1cb4352f3d2d7d498aa 100644 --- a/net/minecraft/world/level/levelgen/DensityFunctions.java +++ b/net/minecraft/world/level/levelgen/DensityFunctions.java -@@ -528,7 +528,7 @@ public final class DensityFunctions { +@@ -528,7 +_,7 @@ int i1 = z / 2; int i2 = x % 2; int i3 = z % 2; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch index e7540fa93..5652d79c6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/levelgen/PhantomSpawner.java b/net/minecraft/world/level/levelgen/PhantomSpawner.java -index d2e674b046bcf82a239b4706c3b89197ec6749c8..73c038c026b20af3d8719b42470ee006d8ec5896 100644 --- a/net/minecraft/world/level/levelgen/PhantomSpawner.java +++ b/net/minecraft/world/level/levelgen/PhantomSpawner.java -@@ -38,13 +38,13 @@ public class PhantomSpawner implements CustomSpawner { +@@ -38,13 +_,13 @@ int spawnAttemptMaxSeconds = level.paperConfig().entities.behavior.phantomsSpawnAttemptMaxSeconds; this.nextTick += (spawnAttemptMinSeconds + randomSource.nextInt(spawnAttemptMaxSeconds - spawnAttemptMinSeconds + 1)) * 20; // Paper end - Ability to control player's insomnia and phantoms @@ -25,7 +17,7 @@ index d2e674b046bcf82a239b4706c3b89197ec6749c8..73c038c026b20af3d8719b42470ee006 ServerStatsCounter stats = serverPlayer.getStats(); int i = Mth.clamp(stats.getValue(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE); int i1 = 24000; -@@ -56,7 +56,7 @@ public class PhantomSpawner implements CustomSpawner { +@@ -56,7 +_,7 @@ FluidState fluidState = level.getFluidState(blockPos1); if (NaturalSpawner.isValidEmptySpawnBlock(level, blockPos1, blockState, fluidState, EntityType.PHANTOM)) { SpawnGroupData spawnGroupData = null; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch index 713701fc1..a2b76868b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/material/FlowingFluid.java b/net/minecraft/world/level/material/FlowingFluid.java -index ace1099a12c762b2e73b71dd3551cf351fedf067..1b06e44a267d2d4af844997ac0c557f30aaf9b15 100644 --- a/net/minecraft/world/level/material/FlowingFluid.java +++ b/net/minecraft/world/level/material/FlowingFluid.java -@@ -232,7 +232,7 @@ public abstract class FlowingFluid extends Fluid { +@@ -190,7 +_,7 @@ } } @@ -17,16 +9,16 @@ index ace1099a12c762b2e73b71dd3551cf351fedf067..1b06e44a267d2d4af844997ac0c557f3 BlockState blockState1 = level.getBlockState(mutableBlockPos.setWithOffset(pos, Direction.DOWN)); FluidState fluidState1 = blockState1.getFluidState(); if (blockState1.isSolid() || this.isSourceBlockOfThisType(fluidState1)) { -@@ -320,6 +320,12 @@ public abstract class FlowingFluid extends Fluid { +@@ -267,6 +_,12 @@ + } protected abstract boolean canConvertToSource(ServerLevel level); - ++ + // Purpur start - Implement infinite liquids + protected int getRequiredSources(Level level) { + return 2; + } + // Purpur end - Implement infinite liquids -+ + protected void spreadTo(LevelAccessor level, BlockPos pos, BlockState blockState, Direction direction, FluidState fluidState) { if (blockState.getBlock() instanceof LiquidBlockContainer liquidBlockContainer) { - liquidBlockContainer.placeLiquid(level, pos, blockState, fluidState); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch index a52e8b32b..502b87bdc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/material/LavaFluid.java b/net/minecraft/world/level/material/LavaFluid.java -index 033f252248b671e35135269dd2df6e7ca4585604..43cdc2f8fdfdeb1426e386e0084087779ef62754 100644 --- a/net/minecraft/world/level/material/LavaFluid.java +++ b/net/minecraft/world/level/material/LavaFluid.java -@@ -189,7 +189,7 @@ public abstract class LavaFluid extends FlowingFluid { +@@ -189,7 +_,7 @@ @Override public int getTickDelay(LevelReader level) { @@ -17,17 +9,17 @@ index 033f252248b671e35135269dd2df6e7ca4585604..43cdc2f8fdfdeb1426e386e008408777 } @Override -@@ -211,6 +211,13 @@ public abstract class LavaFluid extends FlowingFluid { +@@ -210,6 +_,13 @@ + private void fizz(LevelAccessor level, BlockPos pos) { level.levelEvent(1501, pos, 0); } - ++ + // Purpur start - Implement infinite liquids + @Override + protected int getRequiredSources(Level level) { + return level.purpurConfig.lavaInfiniteRequiredSources; + } + // Purpur end - Implement infinite liquids -+ + @Override protected boolean canConvertToSource(ServerLevel level) { - return level.getGameRules().getBoolean(GameRules.RULE_LAVA_SOURCE_CONVERSION); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch index 65da285fe..3bc14791b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/material/WaterFluid.java b/net/minecraft/world/level/material/WaterFluid.java -index 10e3c644e31650b0e1aad6349a83a763cf744ec8..b248fe1d66940c05d56fc322df61c52ece72e77f 100644 --- a/net/minecraft/world/level/material/WaterFluid.java +++ b/net/minecraft/world/level/material/WaterFluid.java -@@ -78,6 +78,13 @@ public abstract class WaterFluid extends FlowingFluid { +@@ -78,6 +_,13 @@ return level.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch index 88f8cb69f..ef04724ea 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -index 9e6b2bbc1f83d32d0332f036be4f1a0e18b826bf..db6baaa698fe93aba3fbd595158b568badd6cb8a 100644 --- a/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -@@ -240,7 +240,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { +@@ -240,7 +_,7 @@ if ((node == null || node.costMalus < 0.0F) && verticalDeltaLimit > 0 && (cachedPathType != PathType.FENCE || this.canWalkOverFences()) @@ -17,7 +9,7 @@ index 9e6b2bbc1f83d32d0332f036be4f1a0e18b826bf..db6baaa698fe93aba3fbd595158b568b && cachedPathType != PathType.TRAPDOOR && cachedPathType != PathType.POWDER_SNOW) { node = this.tryJumpOn(x, y, z, verticalDeltaLimit, nodeFloorLevel, direction, pathType, mutableBlockPos); -@@ -493,7 +493,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { +@@ -493,7 +_,7 @@ return PathType.TRAPDOOR; } else if (blockState.is(Blocks.POWDER_SNOW)) { return PathType.POWDER_SNOW; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch index 0bdcf618d..925647acc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/portal/PortalShape.java b/net/minecraft/world/level/portal/PortalShape.java -index 21e3d5702fae0b1d94739744228c4cab608adb6b..07140dddebca268c25a243f6c6e082c3adf919e2 100644 --- a/net/minecraft/world/level/portal/PortalShape.java +++ b/net/minecraft/world/level/portal/PortalShape.java -@@ -28,7 +28,7 @@ public class PortalShape { +@@ -28,7 +_,7 @@ public static final int MAX_WIDTH = 21; private static final int MIN_HEIGHT = 3; public static final int MAX_HEIGHT = 21; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch index c32a782c0..138758dfe 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -index c8f23011a8942a5be970c606f67142cbd202b97e..7bbeed6c998c91e68376d3f17a510d68e3cd0b27 100644 --- a/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java +++ b/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -@@ -81,6 +81,7 @@ public class MapItemSavedData extends SavedData { +@@ -81,6 +_,7 @@ public final Map decorations = Maps.newLinkedHashMap(); private final Map frameMarkers = Maps.newHashMap(); private int trackedDecorationCount; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch index c2e5d779e..bc7b09181 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java b/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java -index c4f29da30d63deb3f9eabafcf62a946ff148b6b7..f3083702286dfb7932f08e0b811eded7988cbab4 100644 --- a/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java +++ b/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java -@@ -66,6 +66,11 @@ public class EnchantedCountIncreaseFunction extends LootItemConditionalFunction +@@ -66,6 +_,11 @@ Entity entity = context.getOptionalParameter(LootContextParams.ATTACKING_ENTITY); if (entity instanceof LivingEntity livingEntity) { int enchantmentLevel = EnchantmentHelper.getEnchantmentLevel(this.enchantment, livingEntity); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch index 3217dcfc3..1545fd15f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/phys/AABB.java b/net/minecraft/world/phys/AABB.java -index c22acc8889fbb3c9ee698624189c195ee4b5eefb..5767fbfd7f33c5276fb4335ce473b2e1baca411c 100644 --- a/net/minecraft/world/phys/AABB.java +++ b/net/minecraft/world/phys/AABB.java -@@ -465,4 +465,10 @@ public class AABB { +@@ -476,4 +_,10 @@ return new AABB(this.minX, this.minY, this.minZ, this.maxX, this.maxY, this.maxZ); } } From cfd1e070a2bbfa19b3c0e5c21a6360daa5da548b Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 30 May 2025 19:51:05 -0700 Subject: [PATCH 111/289] Updated Upstream (Paper) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@ca8da0e3 Commands PaperMC/Paper@e0437448 /net/minecraft/world/entity/decoration/ PaperMC/Paper@d251511d net\minecraft\worldntity\projectile\ PaperMC/Paper@62c4dda5 /net/minecraft/world/entity/monster PaperMC/Paper@4a821685 ServerPlayer, ServerLevel, ServerEntity PaperMC/Paper@6d71abd2 Other random classes PaperMC/Paper@f44197c4 net/minecraft/world/entity/item PaperMC/Paper@2f152e01 Fix some compile errors PaperMC/Paper@92ece7b6 Fix dropped diff PaperMC/Paper@8c974745 readd dropped ack diff --- gradle.properties | 2 +- .../net/minecraft/commands/CommandSourceStack.java.patch | 0 .../net/minecraft/server/Main.java.patch | 0 .../net/minecraft/server/dedicated/DedicatedServer.java.patch | 0 .../net/minecraft/server/level/ServerLevel.java.patch | 0 .../server/network/ServerCommonPacketListenerImpl.java.patch | 0 .../net/minecraft/world/entity/ExperienceOrb.java.patch | 0 .../net/minecraft/world/entity/LivingEntity.java.patch | 0 .../net/minecraft/world/entity/item/ItemEntity.java.patch | 0 .../net/minecraft/world/entity/player/Player.java.patch | 0 .../net/minecraft/world/inventory/AnvilMenu.java.patch | 0 .../net/minecraft/world/level/BaseSpawner.java.patch | 0 12 files changed, 1 insertion(+), 1 deletion(-) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/commands/CommandSourceStack.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/Main.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/dedicated/DedicatedServer.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/level/ServerLevel.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ExperienceOrb.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/LivingEntity.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/item/ItemEntity.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/player/Player.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/inventory/AnvilMenu.java.patch (100%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/BaseSpawner.java.patch (100%) diff --git a/gradle.properties b/gradle.properties index 87538ed74..25ccc019c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6-pre1 -paperCommit = 0795cbed2563d0ba693a8eec8754cffa62b52756 +paperCommit = 8c9747458e8544bc28296025d03ec10a429c26b0 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/CommandSourceStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/CommandSourceStack.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/Main.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/Main.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServer.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerLevel.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ExperienceOrb.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ExperienceOrb.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/LivingEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/ItemEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/ItemEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/player/Player.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/player/Player.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AnvilMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AnvilMenu.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/BaseSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/BaseSpawner.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch From 994dd4f476dd3c1bb6b28bb64653e8090a48b757 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 1 Jun 2025 13:16:37 -0700 Subject: [PATCH 112/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@4a903d81 Readd dropped diff PaperMC/Paper@4fe0ac24 Some more comments PaperMC/Paper@19a36413 Last per file patches PaperMC/Paper@e49b5e88 Fix compile issues: PaperMC/Paper@1b30919a Fix PaperMC/Paper@df964545 Fixup whatever happened here PaperMC/Paper@5933bd5b TrialSpawner compile fixes PaperMC/Paper@20136f71 Some initial adoption of ValueInput/Output PaperMC/Paper@a1bfc19a Some more compilation issues PaperMC/Paper@d16b93e6 Generator PaperMC/Paper@c34fb5f8 Test fixes PaperMC/Paper@f3bad8c8 Prepare work on feature patches PaperMC/Paper@ed3b39e9 14 first feature patches PaperMC/Paper@ff05a2df Hacky EAR 2.0 fixes --- gradle.properties | 2 +- .../paper/entity/ai/VanillaGoal.java.patch | 2 +- .../main/java/org/bukkit/Material.java.patch | 2 +- .../activation/ActivationRange.java.patch | 12 +---- .../commands/CommandSourceStack.java.patch | 18 ++----- .../net/minecraft/core/BlockPos.java.patch | 6 +-- .../minecraft/network/Connection.java.patch | 2 +- .../net/minecraft/server/Main.java.patch | 10 +--- .../dedicated/DedicatedServer.java.patch | 16 ++----- .../server/level/ServerLevel.java.patch | 41 +++++++--------- .../level/ServerPlayerGameMode.java.patch | 8 ++-- .../ServerCommonPacketListenerImpl.java.patch | 18 ++----- .../ServerLoginPacketListenerImpl.java.patch | 2 +- .../world/entity/ExperienceOrb.java.patch | 12 +---- .../world/entity/LivingEntity.java.patch | 47 ++++++++----------- .../world/entity/item/ItemEntity.java.patch | 14 ++---- .../world/entity/monster/Phantom.java.patch | 2 +- .../world/entity/npc/Villager.java.patch | 24 ++++------ .../world/entity/player/Player.java.patch | 28 ++++------- .../world/inventory/AnvilMenu.java.patch | 26 ++++------ .../world/inventory/GrindstoneMenu.java.patch | 4 +- .../world/level/BaseSpawner.java.patch | 10 +--- .../minecraft/world/level/Level.java.patch | 6 +-- .../storage/RegionFileStorage.java.patch | 10 +--- ...0004-Add-EntityTeleportHinderedEvent.patch | 10 ++-- ...005-API-for-any-mob-to-burn-daylight.patch | 4 +- .../paper/ServerBuildInfoImpl.java.patch | 8 ++-- .../craftbukkit/CraftOfflinePlayer.java.patch | 4 +- .../craftbukkit/block/CraftConduit.java.patch | 2 +- .../craftbukkit/entity/CraftEntity.java.patch | 2 +- .../entity/CraftHumanEntity.java.patch | 2 +- .../craftbukkit/entity/CraftItem.java.patch | 4 +- .../craftbukkit/entity/CraftPlayer.java.patch | 6 +-- .../util/CraftMagicNumbers.java.patch | 2 +- 34 files changed, 128 insertions(+), 238 deletions(-) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/io/papermc/paper/entity/activation/ActivationRange.java.patch (67%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/npc/Villager.java.patch (85%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch (68%) diff --git a/gradle.properties b/gradle.properties index 25ccc019c..c49321757 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6-pre1 -paperCommit = 8c9747458e8544bc28296025d03ec10a429c26b0 +paperCommit = ff05a2df6313f422f22c7f640294641a59559250 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java.patch b/purpur-api/paper-patches/files/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java.patch index b21f25fa2..7d53036ac 100644 --- a/purpur-api/paper-patches/files/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java.patch +++ b/purpur-api/paper-patches/files/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java.patch @@ -1,6 +1,6 @@ --- a/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/src/generated/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -@@ -441,6 +_,26 @@ +@@ -446,6 +_,26 @@ GoalKey ZOMBIE_ATTACK_TURTLE_EGG = create("zombie_attack_turtle_egg", Zombie.class); diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch index 4e068e234..b215cf7e2 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -3616,4 +_,40 @@ +@@ -3636,4 +_,40 @@ return this.asItemType().getDefaultDataTypes(); } // Paper end - data component API diff --git a/purpur-server/minecraft-patches/unapplied-sources/io/papermc/paper/entity/activation/ActivationRange.java.patch b/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch similarity index 67% rename from purpur-server/minecraft-patches/unapplied-sources/io/papermc/paper/entity/activation/ActivationRange.java.patch rename to purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch index b4d83ca96..e0eadeef9 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/io/papermc/paper/entity/activation/ActivationRange.java.patch +++ b/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/io/papermc/paper/entity/activation/ActivationRange.java b/io/papermc/paper/entity/activation/ActivationRange.java -index 2ebee223085fe7926c7f3e555df19ae69f36157e..265f20fd771df850a0bb0029e699d3146d883837 100644 --- a/io/papermc/paper/entity/activation/ActivationRange.java +++ b/io/papermc/paper/entity/activation/ActivationRange.java -@@ -141,6 +141,8 @@ public final class ActivationRange { +@@ -147,6 +_,8 @@ continue; } @@ -17,7 +9,7 @@ index 2ebee223085fe7926c7f3e555df19ae69f36157e..265f20fd771df850a0bb0029e699d314 final int worldHeight = world.getHeight(); ActivationRange.maxBB = player.getBoundingBox().inflate(maxRange, worldHeight, maxRange); ActivationType.MISC.boundingBox = player.getBoundingBox().inflate(miscActivationRange, worldHeight, miscActivationRange); -@@ -282,6 +284,7 @@ public final class ActivationRange { +@@ -288,6 +_,7 @@ * @return */ public static boolean checkIfActive(final Entity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch index 1314da7f1..8863fb3c8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/commands/CommandSourceStack.java b/net/minecraft/commands/CommandSourceStack.java -index cb63e4c264a31788cd1405428af70f7a018910e9..4d06587cd55af988eecdda5186577ab72ca3d533 100644 --- a/net/minecraft/commands/CommandSourceStack.java +++ b/net/minecraft/commands/CommandSourceStack.java -@@ -455,6 +455,19 @@ public class CommandSourceStack implements ExecutionCommandSource io.papermc.paper.adventure.PaperAdventure.asVanilla(message), broadcastToOps); + } + // Purpur end - Purpur config files -+ + public void sendSuccess(Supplier messageSupplier, boolean allowLogging) { boolean flag = this.source.acceptsSuccess() && !this.silent; - boolean flag1 = allowLogging && this.source.shouldInformAdmins() && !this.silent; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch index 50faf5263..8b669b1d6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch @@ -1,8 +1,8 @@ --- a/net/minecraft/core/BlockPos.java +++ b/net/minecraft/core/BlockPos.java -@@ -61,6 +_,12 @@ - private static final int X_OFFSET = PACKED_Y_LENGTH + PACKED_HORIZONTAL_LENGTH; - public static final int MAX_HORIZONTAL_COORDINATE = (1 << PACKED_HORIZONTAL_LENGTH) / 2 - 1; +@@ -63,6 +_,12 @@ + public static final int MAX_HORIZONTAL_COORDINATE = 33554431; + // Paper end - Optimize Bit Operations by inlining + // Purpur start - Ridables + public BlockPos(net.minecraft.world.entity.Entity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch index 73c157d07..a205f1711 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/network/Connection.java +++ b/net/minecraft/network/Connection.java -@@ -486,11 +_,20 @@ +@@ -578,11 +_,20 @@ 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/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch index 1eb3d7c5c..0153677cf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/Main.java b/net/minecraft/server/Main.java -index 9c9b601a3f903bebb0dd1bda0e24745587229727..29dd9a980bb7dc8457dd9ad6eeaa2c5067e3b954 100644 --- a/net/minecraft/server/Main.java +++ b/net/minecraft/server/Main.java -@@ -108,6 +108,12 @@ public class Main { +@@ -109,6 +_,12 @@ JvmProfiler.INSTANCE.start(Environment.SERVER); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch index 3723a2ea6..e8a2669b4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java -index 31e02f50edd46220dac81500dbb273f1ccdbe0b9..6a296adcd9d5289dd86840fdc58dce3accbe9ce5 100644 --- a/net/minecraft/server/dedicated/DedicatedServer.java +++ b/net/minecraft/server/dedicated/DedicatedServer.java -@@ -105,6 +105,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -105,6 +_,7 @@ public void run() { if (!org.bukkit.craftbukkit.Main.useConsole) return; // CraftBukkit // Paper start - Use TerminalConsoleAppender @@ -16,7 +8,7 @@ index 31e02f50edd46220dac81500dbb273f1ccdbe0b9..6a296adcd9d5289dd86840fdc58dce3a new com.destroystokyo.paper.console.PaperConsole(DedicatedServer.this).start(); /* BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); -@@ -183,6 +184,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -183,6 +_,15 @@ io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics @@ -32,7 +24,7 @@ index 31e02f50edd46220dac81500dbb273f1ccdbe0b9..6a296adcd9d5289dd86840fdc58dce3a com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now this.setPvpAllowed(properties.pvp); -@@ -230,6 +240,30 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -230,6 +_,30 @@ if (true) throw new IllegalStateException("Failed to bind to port", var10); // Paper - Propagate failed to bind to port error return false; } @@ -63,7 +55,7 @@ index 31e02f50edd46220dac81500dbb273f1ccdbe0b9..6a296adcd9d5289dd86840fdc58dce3a // CraftBukkit start this.server.loadPlugins(); -@@ -308,6 +342,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -308,6 +_,8 @@ LOGGER.info("JMX monitoring enabled"); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch index 2c3ea23a4..60beb270d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0e2653da2 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -203,6 +203,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -206,6 +_,8 @@ private final StructureManager structureManager; private final StructureCheck structureCheck; private final boolean tickTime; @@ -17,7 +9,7 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0 private final RandomSequences randomSequences; // CraftBukkit start -@@ -587,7 +589,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -353,7 +_,24 @@ // CraftBukkit end this.tickTime = tickTime; this.server = server; @@ -43,15 +35,15 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0 this.serverLevelData = serverLevelData; ChunkGenerator chunkGenerator = levelStem.generator(); // CraftBukkit start -@@ -671,6 +690,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler); - // Paper end - rewrite chunk system +@@ -435,6 +_,7 @@ + this.randomSequences = Objects.requireNonNullElseGet(randomSequences, () -> this.getDataStorage().computeIfAbsent(RandomSequences.TYPE)); + this.waypointManager = new ServerWaypointManager(); this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit + this.preciseTime = this.serverLevelData.getDayTime(); // Purpur - Configurable daylight cycle } // Paper start -@@ -717,7 +737,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -481,7 +_,7 @@ } int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); @@ -60,7 +52,7 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0 // Paper start - create time skip event - move up calculations final long newDayTime = this.levelData.getDayTime() + 24000L; org.bukkit.event.world.TimeSkipEvent event = new org.bukkit.event.world.TimeSkipEvent( -@@ -836,6 +856,13 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -598,6 +_,13 @@ this.serverLevelData.getScheduledEvents().tick(this.server, l); Profiler.get().pop(); if (this.serverLevelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { @@ -74,10 +66,11 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0 this.setDayTime(this.levelData.getDayTime() + 1L); } } -@@ -843,7 +870,21 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -605,7 +_,21 @@ public void setDayTime(long time) { this.serverLevelData.setDayTime(time); +- } + // Purpur start - Configurable daylight cycle + this.preciseTime = time; + this.forceTime = false; @@ -91,12 +84,12 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0 + // Purpur start - Configurable daylight cycle + public boolean isForceTime() { + return this.forceTime; - } ++ } + // Purpur end - Configurable daylight cycle public void tickCustomSpawners(boolean spawnEnemies, boolean spawnFriendlies) { for (CustomSpawner customSpawner : this.customSpawners) { -@@ -947,9 +988,17 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -682,9 +_,17 @@ && this.random.nextDouble() < currentDifficultyAt.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01) // Paper - Configurable spawn chances for skeleton horses && !this.getBlockState(blockPos.below()).is(Blocks.LIGHTNING_ROD); if (flag) { @@ -116,7 +109,7 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0 skeletonHorse.setAge(0); skeletonHorse.setPos(blockPos.getX(), blockPos.getY(), blockPos.getZ()); this.addFreshEntity(skeletonHorse, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit -@@ -984,9 +1033,35 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -719,9 +_,35 @@ if (blockState.is(Blocks.SNOW)) { int layersValue = blockState.getValue(SnowLayerBlock.LAYERS); if (layersValue < Math.min(_int, 8)) { @@ -152,7 +145,7 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0 } } else { org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(this, heightmapPos, Blocks.SNOW.defaultBlockState(), 3, null); // CraftBukkit -@@ -1007,7 +1082,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -742,7 +_,7 @@ pointOfInterestType -> pointOfInterestType.is(PoiTypes.LIGHTNING_ROD), blockPos -> blockPos.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockPos.getX(), blockPos.getZ()) - 1, pos, @@ -161,7 +154,7 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0 PoiManager.Occupancy.ANY ); return optional.map(blockPos -> blockPos.above(1)); -@@ -1056,8 +1131,26 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -791,8 +_,26 @@ int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); Component component; if (this.sleepStatus.areEnoughSleeping(_int)) { @@ -188,7 +181,7 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0 component = Component.translatable("sleep.players_sleeping", this.sleepStatus.amountSleeping(), this.sleepStatus.sleepersNeeded(_int)); } -@@ -1190,6 +1283,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -929,6 +_,7 @@ @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -196,7 +189,7 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0 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.... -@@ -1197,6 +1291,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -936,6 +_,7 @@ this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -204,7 +197,7 @@ index bfbfbaa9660d21071c420b60b10be0a02a1bc87e..f3f53791d4c5532434abc281a5798ee0 this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. -@@ -2674,7 +2769,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2384,7 +_,7 @@ // 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/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch index b2696d1db..f28a3de6d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -347,6 +_,7 @@ +@@ -348,6 +_,7 @@ } return false; } @@ -8,7 +8,7 @@ } // CraftBukkit end -@@ -460,6 +_,7 @@ +@@ -461,6 +_,7 @@ public InteractionHand interactHand; public ItemStack interactItemStack; public InteractionResult useItemOn(ServerPlayer player, Level level, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) { @@ -16,7 +16,7 @@ BlockPos blockPos = hitResult.getBlockPos(); BlockState blockState = level.getBlockState(blockPos); boolean cancelledBlock = false; -@@ -502,7 +_,7 @@ +@@ -503,7 +_,7 @@ boolean flag = !player.getMainHandItem().isEmpty() || !player.getOffhandItem().isEmpty(); boolean flag1 = player.isSecondaryUseActive() && flag; ItemStack itemStack = stack.copy(); @@ -25,7 +25,7 @@ InteractionResult interactionResult = blockState.useItemOn(player.getItemInHand(hand), level, player, hand, hitResult); if (interactionResult.consumesAction()) { CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger(player, blockPos, itemStack); -@@ -548,4 +_,18 @@ +@@ -549,4 +_,18 @@ public void setLevel(ServerLevel serverLevel) { this.level = serverLevel; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch index 2c2fd3850..9bc36e40b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 186393485396cfe9b1baef29586198356e2d2600..66d70c330fd70009018d8d0a7441b93fcef96c97 100644 --- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -41,6 +41,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -43,6 +_,7 @@ private long keepAliveChallenge; private long closedListenerTime; private boolean closed = false; @@ -16,7 +8,7 @@ index 186393485396cfe9b1baef29586198356e2d2600..66d70c330fd70009018d8d0a7441b93f private int latency; private volatile boolean suspendFlushingOnServerThread = false; // CraftBukkit start -@@ -51,6 +52,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -53,6 +_,7 @@ 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 net.minecraft.resources.ResourceLocation MINECRAFT_BRAND = net.minecraft.resources.ResourceLocation.withDefaultNamespace("brand"); // Paper - Brand support @@ -24,7 +16,7 @@ index 186393485396cfe9b1baef29586198356e2d2600..66d70c330fd70009018d8d0a7441b93f public ServerCommonPacketListenerImpl(MinecraftServer server, Connection connection, CommonListenerCookie cookie, net.minecraft.server.level.ServerPlayer player) { // CraftBukkit this.server = server; -@@ -118,6 +120,16 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -120,6 +_,16 @@ @Override public void handleKeepAlive(ServerboundKeepAlivePacket packet) { @@ -41,7 +33,7 @@ index 186393485396cfe9b1baef29586198356e2d2600..66d70c330fd70009018d8d0a7441b93f if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) { int i = (int)(Util.getMillis() - this.keepAliveTime); this.latency = (this.latency * 3 + i) / 4; -@@ -169,6 +181,12 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -171,6 +_,12 @@ return; } @@ -54,7 +46,7 @@ index 186393485396cfe9b1baef29586198356e2d2600..66d70c330fd70009018d8d0a7441b93f if (identifier.equals(MINECRAFT_BRAND)) { this.player.clientBrandName = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256); } -@@ -242,6 +260,22 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -250,6 +_,22 @@ // 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 final long elapsedTime = millis - this.keepAliveTime; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch index 06b474c18..dfa6db0dc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -308,7 +_,7 @@ +@@ -306,7 +_,7 @@ ServerLoginPacketListenerImpl.LOGGER.warn("Failed to verify username but will let them in anyway!"); ServerLoginPacketListenerImpl.this.startClientVerification(ServerLoginPacketListenerImpl.this.createOfflineProfile(string1)); // Spigot } else { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch index a286a6404..9a0b557e5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ExperienceOrb.java b/net/minecraft/world/entity/ExperienceOrb.java -index c97a0e500e889b406cb2d679a3870715775f5393..81aa1a91a2ecda3053b22c2eb9e59f0ea2faf7b5 100644 --- a/net/minecraft/world/entity/ExperienceOrb.java +++ b/net/minecraft/world/entity/ExperienceOrb.java -@@ -328,7 +328,7 @@ public class ExperienceOrb extends Entity { +@@ -358,7 +_,7 @@ public void playerTouch(Player entity) { if (entity instanceof ServerPlayer serverPlayer) { if (entity.takeXpDelay == 0 && new com.destroystokyo.paper.event.player.PlayerPickupExperienceEvent(serverPlayer.getBukkitEntity(), (org.bukkit.entity.ExperienceOrb) this.getBukkitEntity()).callEvent()) { // Paper - PlayerPickupExperienceEvent @@ -17,7 +9,7 @@ index c97a0e500e889b406cb2d679a3870715775f5393..81aa1a91a2ecda3053b22c2eb9e59f0e entity.take(this, 1); int i = this.repairPlayerItems(serverPlayer, this.getValue()); if (i > 0) { -@@ -344,7 +344,7 @@ public class ExperienceOrb extends Entity { +@@ -374,7 +_,7 @@ } private int repairPlayerItems(ServerPlayer player, int value) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch index 677fb9bdf..e1f8f1495 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e0755fa77 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -430,6 +430,12 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -444,6 +_,12 @@ if (d < 0.0) { double damagePerBlock = serverLevel1.getWorldBorder().getDamagePerBlock(); if (damagePerBlock > 0.0) { @@ -21,7 +13,7 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e this.hurtServer(serverLevel1, this.damageSources().outOfBorder(), Math.max(1, Mth.floor(-d * damagePerBlock))); } } -@@ -442,10 +448,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -456,10 +_,10 @@ && (!flag || !((Player)this).getAbilities().invulnerable); if (flag1) { this.setAirSupply(this.decreaseAirSupply(this.getAirSupply())); @@ -34,7 +26,7 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e } } else if (this.getAirSupply() < this.getMaxAirSupply()) { this.setAirSupply(this.increaseAirSupply(this.getAirSupply())); -@@ -1014,15 +1020,33 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1039,14 +_,32 @@ if (lookingEntity != null) { ItemStack itemBySlot = this.getItemBySlot(EquipmentSlot.HEAD); EntityType type = lookingEntity.getType(); @@ -44,13 +36,15 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e - || type == EntityType.PIGLIN_BRUTE && itemBySlot.is(Items.PIGLIN_HEAD) - || type == EntityType.CREEPER && itemBySlot.is(Items.CREEPER_HEAD)) { - d *= 0.5; +- } +- } + // Purpur start - Mob head visibility percent + if (type == EntityType.SKELETON && itemBySlot.is(Items.SKELETON_SKULL)) { + d *= lookingEntity.level().purpurConfig.skeletonHeadVisibilityPercent; + } + else if (type == EntityType.ZOMBIE && itemBySlot.is(Items.ZOMBIE_HEAD)) { + d *= lookingEntity.level().purpurConfig.zombieHeadVisibilityPercent; - } ++ } + else if ((type == EntityType.PIGLIN || type == EntityType.PIGLIN_BRUTE) && itemBySlot.is(Items.PIGLIN_HEAD)) { + d *= lookingEntity.level().purpurConfig.piglinHeadVisibilityPercent; + } @@ -58,8 +52,8 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e + d *= lookingEntity.level().purpurConfig.creeperHeadVisibilityPercent; + } + // Purpur end - Mob head visibility percent - } - ++ } ++ + // Purpur start - Configurable mob blindness + if (lookingEntity instanceof LivingEntity entityliving) { + if (entityliving.hasEffect(MobEffects.BLINDNESS)) { @@ -70,11 +64,10 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e + } + } + // Purpur end - Configurable mob blindness -+ + return d; } - -@@ -1068,6 +1092,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1093,6 +_,7 @@ Iterator iterator = this.activeEffects.values().iterator(); while (iterator.hasNext()) { MobEffectInstance effect = iterator.next(); @@ -82,7 +75,7 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e EntityPotionEffectEvent event = CraftEventFactory.callEntityPotionEffectChangeEvent(this, effect, null, cause, EntityPotionEffectEvent.Action.CLEARED); if (event.isCancelled()) { continue; -@@ -1385,6 +1410,24 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1417,6 +_,24 @@ this.stopSleeping(); } @@ -107,7 +100,7 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e this.noActionTime = 0; if (amount < 0.0F) { amount = 0.0F; -@@ -1646,10 +1689,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1678,10 +_,10 @@ protected Player resolvePlayerResponsibleForDamage(DamageSource damageSource) { Entity entity = damageSource.getEntity(); if (entity instanceof Player player) { @@ -120,7 +113,7 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e } else { this.lastHurtByPlayer = null; this.lastHurtByPlayerMemoryTime = 0; -@@ -1700,6 +1743,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1732,6 +_,18 @@ } } @@ -139,7 +132,7 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e final org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null; final EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemStack == null); -@@ -1875,6 +1930,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1907,6 +_,7 @@ boolean flag = this.lastHurtByPlayerMemoryTime > 0; this.dropEquipment(level); // CraftBukkit - from below if (this.shouldDropLoot() && level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -147,7 +140,7 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e this.dropFromLootTable(level, damageSource, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1883,6 +1939,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1915,6 +_,7 @@ // Paper end this.dropCustomDeathLoot(level, damageSource, flag); this.clearEquipmentSlots = prev; // Paper @@ -155,7 +148,7 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e } // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment -@@ -3057,6 +3114,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3109,6 +_,7 @@ float f = (float)(d * 10.0 - 3.0); if (f > 0.0F) { this.playSound(this.getFallDamageSound((int)f), 1.0F, 1.0F); @@ -163,16 +156,16 @@ index ef92dc4384f698cc6b5c4e67fe052a3d4af98f4c..20d9856daa5ef4c42010381091c2a85e this.hurt(this.damageSources().flyIntoWall(), f); } } -@@ -4452,6 +4510,12 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -4507,6 +_,12 @@ + ? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND) : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType()); } - ++ + // Purpur start - Dispenser curse of binding protection + public @Nullable EquipmentSlot getEquipmentSlotForDispenserItem(ItemStack itemstack) { + return EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.BINDING_CURSE, itemstack) > 0 ? null : this.getEquipmentSlotForItem(itemstack); + } + // Purpur end - Dispenser curse of binding protection -+ + private static SlotAccess createEquipmentSlotAccess(LivingEntity entity, EquipmentSlot slot) { return slot != EquipmentSlot.HEAD && slot != EquipmentSlot.MAINHAND && slot != EquipmentSlot.OFFHAND - ? SlotAccess.forEquipmentSlot(entity, slot, itemStack -> itemStack.isEmpty() || entity.getEquipmentSlotForItem(itemStack) == slot) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch index da28ecc18..64ea33eb8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java -index 6c0ebfb2be4e8b884456a2aa3d5fdc87e45a0e3c..4ddf1cdf7a47bf06f95c5bfce8f3c4d035e87cfc 100644 --- a/net/minecraft/world/entity/item/ItemEntity.java +++ b/net/minecraft/world/entity/item/ItemEntity.java -@@ -59,6 +59,12 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -56,6 +_,12 @@ 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 @@ -21,7 +13,7 @@ index 6c0ebfb2be4e8b884456a2aa3d5fdc87e45a0e3c..4ddf1cdf7a47bf06f95c5bfce8f3c4d0 public ItemEntity(EntityType entityType, Level level) { super(entityType, level); -@@ -344,7 +350,16 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -334,7 +_,16 @@ @Override public final boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) { @@ -39,7 +31,7 @@ index 6c0ebfb2be4e8b884456a2aa3d5fdc87e45a0e3c..4ddf1cdf7a47bf06f95c5bfce8f3c4d0 return false; } else if (!level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && damageSource.getEntity() instanceof Mob) { return false; -@@ -528,6 +543,12 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -513,6 +_,12 @@ public void setItem(ItemStack stack) { this.getEntityData().set(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/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch index f9fb6e447..e09de7e71 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -169,7 +_,11 @@ +@@ -174,7 +_,11 @@ ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData ) { this.anchorPoint = this.blockPosition().above(5); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/Villager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch similarity index 85% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/Villager.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch index 88f1962f9..29dada8c0 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/Villager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a297fe20ed8 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -178,6 +178,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -179,6 +_,8 @@ MemoryModuleType.MEETING_POINT, (villager, poiType) -> poiType.is(PoiTypes.MEETING) ); @@ -17,7 +9,7 @@ index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a29 public Villager(EntityType entityType, Level level) { this(entityType, level, VillagerType.PLAINS); -@@ -196,6 +198,57 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -197,6 +_,57 @@ this.setVillagerData(this.getVillagerData().withType(villagerType).withProfession(level.registryAccess(), VillagerProfession.NONE)); } @@ -75,7 +67,7 @@ index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a29 @Override public Brain getBrain() { return (Brain)super.getBrain(); -@@ -292,11 +345,24 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -293,11 +_,24 @@ // Paper start - EAR 2 this.customServerAiStep(level, false); } @@ -102,7 +94,7 @@ index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a29 profilerFiller.pop(); if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; -@@ -368,6 +434,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -369,6 +_,7 @@ return InteractionResult.CONSUME; } @@ -110,7 +102,7 @@ index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a29 this.startTrading(player); } -@@ -504,7 +571,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -505,7 +_,7 @@ private void updateDemand() { for (MerchantOffer merchantOffer : this.getOffers()) { @@ -119,7 +111,7 @@ index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a29 } } -@@ -697,7 +764,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -698,7 +_,7 @@ @Override public boolean canBreed() { @@ -128,7 +120,7 @@ index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a29 } private boolean hungry() { -@@ -919,6 +986,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -920,6 +_,7 @@ } public void spawnGolemIfNeeded(ServerLevel serverLevel, long gameTime, int minVillagerAmount) { @@ -136,7 +128,7 @@ index e0e0d2ea7fc60e3142c675404d152eca60263240..49d43837b88d8f278baa5062aed83a29 if (this.wantsToSpawnGolem(gameTime)) { AABB aabb = this.getBoundingBox().inflate(10.0, 10.0, 10.0); List entitiesOfClass = serverLevel.getEntitiesOfClass(Villager.class, aabb); -@@ -992,6 +1060,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -993,6 +_,12 @@ @Override public void startSleeping(BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch index bf51097f7..787982d42 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index 248ee263a853d1d3148746a63ba422115853f6a1..bd4d3a920e015db49436336cc180bc0b937750a0 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java -@@ -210,11 +210,20 @@ public abstract class Player extends LivingEntity { +@@ -219,11 +_,20 @@ private int currentImpulseContextResetGraceTime = 0; 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 @@ -29,7 +21,7 @@ index 248ee263a853d1d3148746a63ba422115853f6a1..bd4d3a920e015db49436336cc180bc0b @Override public org.bukkit.craftbukkit.entity.CraftHumanEntity getBukkitEntity() { return (org.bukkit.craftbukkit.entity.CraftHumanEntity) super.getBukkitEntity(); -@@ -277,6 +286,12 @@ public abstract class Player extends LivingEntity { +@@ -287,6 +_,12 @@ @Override public void tick() { @@ -42,7 +34,7 @@ index 248ee263a853d1d3148746a63ba422115853f6a1..bd4d3a920e015db49436336cc180bc0b this.noPhysics = this.isSpectator(); if (this.isSpectator() || this.isPassenger()) { this.setOnGround(false); -@@ -355,6 +370,17 @@ public abstract class Player extends LivingEntity { +@@ -365,6 +_,17 @@ this.turtleHelmetTick(); } @@ -60,7 +52,7 @@ index 248ee263a853d1d3148746a63ba422115853f6a1..bd4d3a920e015db49436336cc180bc0b this.cooldowns.tick(); this.updatePlayerPose(); if (this.currentImpulseContextResetGraceTime > 0) { -@@ -620,7 +646,7 @@ public abstract class Player extends LivingEntity { +@@ -630,7 +_,7 @@ List list = Lists.newArrayList(); for (Entity entity : entities) { @@ -69,7 +61,7 @@ index 248ee263a853d1d3148746a63ba422115853f6a1..bd4d3a920e015db49436336cc180bc0b list.add(entity); } else if (!entity.isRemoved()) { this.touch(entity); -@@ -1214,7 +1240,7 @@ public abstract class Player extends LivingEntity { +@@ -1226,7 +_,7 @@ flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - Toggleable player crits if (flag2) { damageSource = damageSource.critical(); // Paper - critical damage API @@ -78,7 +70,7 @@ index 248ee263a853d1d3148746a63ba422115853f6a1..bd4d3a920e015db49436336cc180bc0b } float f2 = f + f1; -@@ -1811,7 +1837,23 @@ public abstract class Player extends LivingEntity { +@@ -1823,7 +_,23 @@ @Override protected int getBaseExperienceReward(ServerLevel level) { @@ -103,17 +95,17 @@ index 248ee263a853d1d3148746a63ba422115853f6a1..bd4d3a920e015db49436336cc180bc0b } @Override -@@ -1850,6 +1892,13 @@ public abstract class Player extends LivingEntity { +@@ -1861,6 +_,13 @@ + public boolean addItem(ItemStack stack) { return this.inventory.add(stack); } - ++ + // Purpur start - Player ridable in water option + @Override + public boolean dismountsUnderwater() { + return !level().purpurConfig.playerRidableInWater; + } + // Purpur end - Player ridable in water option -+ + public boolean setEntityOnShoulder(CompoundTag entityCompound) { if (this.isPassenger() || !this.onGround() || this.isInWater() || this.isInPowderSnow) { - return false; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch index ffc0ca957..88ef4768c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/inventory/AnvilMenu.java b/net/minecraft/world/inventory/AnvilMenu.java -index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae2392590f 100644 --- a/net/minecraft/world/inventory/AnvilMenu.java +++ b/net/minecraft/world/inventory/AnvilMenu.java -@@ -20,6 +20,12 @@ import net.minecraft.world.level.block.AnvilBlock; +@@ -21,6 +_,12 @@ import net.minecraft.world.level.block.state.BlockState; import org.slf4j.Logger; @@ -21,7 +13,7 @@ index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae public class AnvilMenu extends ItemCombinerMenu { public static final int INPUT_SLOT = 0; public static final int ADDITIONAL_SLOT = 1; -@@ -49,6 +55,10 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -50,6 +_,10 @@ private org.bukkit.craftbukkit.inventory.view.CraftAnvilView bukkitEntity; // CraftBukkit end public boolean bypassEnchantmentLevelRestriction = false; // Paper - bypass anvil level restrictions @@ -32,7 +24,7 @@ index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae public AnvilMenu(int containerId, Inventory playerInventory) { this(containerId, playerInventory, ContainerLevelAccess.NULL); -@@ -74,12 +84,17 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -75,12 +_,17 @@ @Override protected boolean mayPickup(Player player, boolean hasStack) { @@ -51,7 +43,7 @@ index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae player.giveExperienceLevels(-this.cost.get()); } -@@ -126,13 +141,19 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -133,13 +_,19 @@ @Override public void createResult() { @@ -72,7 +64,7 @@ index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae ItemStack itemStack = item.copy(); ItemStack item1 = this.inputSlots.getItem(1); ItemEnchantments.Mutable mutable = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(itemStack)); -@@ -190,23 +211,34 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -197,23 +_,34 @@ int intValue = entry.getIntValue(); intValue = level == intValue ? intValue + 1 : Math.max(intValue, level); Enchantment enchantment = holder.value(); @@ -111,7 +103,7 @@ index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae intValue = enchantment.getMaxLevel(); } -@@ -235,6 +267,54 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -242,6 +_,54 @@ if (!this.itemName.equals(item.getHoverName().getString())) { i1 = 1; i += i1; @@ -166,7 +158,7 @@ index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae itemStack.set(DataComponents.CUSTOM_NAME, Component.literal(this.itemName)); } } else if (item.has(DataComponents.CUSTOM_NAME)) { -@@ -259,6 +339,12 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -266,6 +_,12 @@ this.onlyRenaming = true; } @@ -179,7 +171,7 @@ index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae if (this.cost.get() >= this.maximumRepairCost && !this.player.hasInfiniteMaterials()) { // CraftBukkit itemStack = ItemStack.EMPTY; } -@@ -279,6 +365,13 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -286,6 +_,13 @@ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), itemStack); // CraftBukkit this.broadcastChanges(); @@ -193,7 +185,7 @@ index 65c400444314049d5529f1f76d65fbd6b1ea7af2..bcffac9f7781ea489e8e4d778181b9ae } 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 -@@ -287,7 +380,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -294,7 +_,7 @@ } public static int calculateIncreasedRepairCost(int oldRepairCost) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch index 1af1db846..f30e76901 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch @@ -9,9 +9,9 @@ // Paper start - Fire BlockExpEvent on grindstone use org.bukkit.event.block.BlockExpEvent event = new org.bukkit.event.block.BlockExpEvent(org.bukkit.craftbukkit.block.CraftBlock.at(level, blockPos), this.getExperienceAmount(level)); event.callEvent(); -- ExperienceOrb.award((ServerLevel) level, Vec3.atCenterOf(blockPos), event.getExpToDrop(), org.bukkit.entity.ExperienceOrb.SpawnReason.GRINDSTONE, player); +- ExperienceOrb.awardWithDirection((ServerLevel) level, Vec3.atCenterOf(blockPos), Vec3.ZERO, event.getExpToDrop(), org.bukkit.entity.ExperienceOrb.SpawnReason.GRINDSTONE, player, null); + org.purpurmc.purpur.event.inventory.GrindstoneTakeResultEvent grindstoneTakeResultEvent = new org.purpurmc.purpur.event.inventory.GrindstoneTakeResultEvent(player.getBukkitEntity(), getBukkitView(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), event.getExpToDrop()); grindstoneTakeResultEvent.callEvent(); // Purpur - Grindstone API -+ ExperienceOrb.award((ServerLevel) level, Vec3.atCenterOf(blockPos), grindstoneTakeResultEvent.getExperienceAmount(), org.bukkit.entity.ExperienceOrb.SpawnReason.GRINDSTONE, player); // Purpur - Grindstone API ++ ExperienceOrb.awardWithDirection((ServerLevel) level, Vec3.atCenterOf(blockPos), Vec3.ZERO, grindstoneTakeResultEvent.getExperienceAmount(), org.bukkit.entity.ExperienceOrb.SpawnReason.GRINDSTONE, player, null); // Purpur - Grindstone API // Paper end - Fire BlockExpEvent on grindstone use } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch index e6fd66768..e016949ae 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/BaseSpawner.java b/net/minecraft/world/level/BaseSpawner.java -index 650ebce14d618076cec2066d134d2ae51a87076a..0babc951d9fed6d32d3dba549cc5ced4dc6b0588 100644 --- a/net/minecraft/world/level/BaseSpawner.java +++ b/net/minecraft/world/level/BaseSpawner.java -@@ -54,6 +54,7 @@ public abstract class BaseSpawner { +@@ -61,6 +_,7 @@ } public boolean isNearPlayer(Level level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch index ad592b936..3ff14c768 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/Level.java +++ b/net/minecraft/world/level/Level.java -@@ -152,11 +_,55 @@ +@@ -159,11 +_,55 @@ } // Paper end - add paper world config @@ -56,7 +56,7 @@ public CraftWorld getWorld() { return this.world; } -@@ -199,6 +_,8 @@ +@@ -207,6 +_,8 @@ ) { this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config @@ -65,7 +65,7 @@ this.generator = generator; this.world = new CraftWorld((ServerLevel) this, generator, biomeProvider, environment); -@@ -1407,4 +_,14 @@ +@@ -1417,4 +_,14 @@ return this.id; } } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch similarity index 68% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch index b9005a08b..f9e571450 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..77db68349aa73d33b86a867099c9395c96d5a02d 100644 --- a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +++ b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -@@ -308,7 +308,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise +@@ -49,7 +_,7 @@ // Paper start private static void printOversizedLog(String msg, Path file, int x, int z) { diff --git a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch index a39137942..7cae4c665 100644 --- a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0004-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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 041fc1d4182834bda5de9b2172601a2a59b5514b..2c87953a3b99c5e776fe06271d5cba5cc355bf53 100644 +index 771bd838bdda98f0cb626e58be893ee82140f81e..1e153eb974be9d1fde9d3a0ad2d8fbd2c3c44803 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -301,6 +301,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -304,6 +304,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { boolean retainPassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS); // Don't allow teleporting between worlds while keeping passengers if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -29,10 +29,10 @@ index 041fc1d4182834bda5de9b2172601a2a59b5514b..2c87953a3b99c5e776fe06271d5cba5c } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 3c8e98218e4bc63a9260ea31af10981e033fe81b..fcc7bc9098e2544588d8b36dd0cff59e6a2563bd 100644 +index e48849bff8e64a16f04d75ad3f0ff769ef3a813e..0d303c3c614142b4183e76f9347e613d7e6db211 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1436,6 +1436,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1439,6 +1439,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper start - Teleport passenger API // Don't allow teleporting between worlds while keeping passengers if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -40,7 +40,7 @@ index 3c8e98218e4bc63a9260ea31af10981e033fe81b..fcc7bc9098e2544588d8b36dd0cff59e return false; } -@@ -1457,6 +1458,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1460,6 +1461,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch index 2d98f9323..53c52637b 100644 --- a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0005-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/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 2c87953a3b99c5e776fe06271d5cba5cc355bf53..395951c968e95adffa97e1851d104faf192744fd 100644 +index 1e153eb974be9d1fde9d3a0ad2d8fbd2c3c44803..86a9adcb98281396b7447aac20b87cb8c15557dd 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -112,6 +112,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -115,6 +115,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } // Purpur end - Fire Immunity API diff --git a/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch index fd95c8364..13971e34d 100644 --- a/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java.patch @@ -13,12 +13,12 @@ getManifestAttribute(manifest, ATTRIBUTE_BRAND_ID) .map(Key::key) - .orElse(BRAND_PAPER_ID), -+ .orElse(BRAND_PURPUR_ID), // Purpur - Fix pufferfish issues // Purpur - Rebrand ++ .orElse(BRAND_PURPUR_ID), // Purpur - Rebrand getManifestAttribute(manifest, ATTRIBUTE_BRAND_NAME) - .orElse(BRAND_PAPER_NAME), -+ .orElse(BRAND_PURPUR_NAME), // Purpur - Fix pufferfish issues // Purpur - Rebrand - SharedConstants.getCurrentVersion().getId(), - SharedConstants.getCurrentVersion().getName(), ++ .orElse(BRAND_PURPUR_NAME), // Purpur - Rebrand + SharedConstants.getCurrentVersion().id(), + SharedConstants.getCurrentVersion().name(), getManifestAttribute(manifest, ATTRIBUTE_BUILD_NUMBER) @@ -61,7 +_,7 @@ diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch index fbe0580ce..5ca9a7fbe 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -@@ -336,6 +_,12 @@ +@@ -340,6 +_,12 @@ @Override public Location getLocation() { @@ -13,7 +13,7 @@ CompoundTag data = this.getData(); if (data == null) { return null; -@@ -573,4 +_,183 @@ +@@ -577,4 +_,183 @@ manager.save(); } } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch index 355e42fa4..7ce19fa24 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java -@@ -73,7 +_,7 @@ +@@ -75,7 +_,7 @@ public int getRange() { this.ensureNoWorldGeneration(); ConduitBlockEntity conduit = (ConduitBlockEntity) this.getBlockEntityFromWorld(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch index b7b39de1b..cf2bfbfcc 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -100,6 +_,18 @@ +@@ -103,6 +_,18 @@ this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch index fb9804178..ba8318994 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -295,6 +_,7 @@ +@@ -301,6 +_,7 @@ @Override public void recalculatePermissions() { this.perm.recalculatePermissions(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch index 64c1d28e7..7a2d0a451 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch @@ -1,8 +1,8 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -@@ -143,4 +_,53 @@ +@@ -145,4 +_,53 @@ public UUID getThrower() { - return this.getHandle().thrower; + return Optionull.map(this.getHandle().thrower, EntityReference::getUUID); } + + // Purpur start - Item entity immunities diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index c7d7a7415..f35cdb6ea 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -614,10 +_,15 @@ +@@ -617,10 +_,15 @@ @Override public void setPlayerListName(String name) { @@ -17,7 +17,7 @@ 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)) { -@@ -2723,6 +_,28 @@ +@@ -2718,6 +_,28 @@ return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -46,7 +46,7 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3576,4 +_,76 @@ +@@ -3571,4 +_,76 @@ public void setDeathScreenScore(final int score) { getHandle().setScore(score); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch index 98c5c72fa..91deafef7 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -485,7 +_,7 @@ +@@ -487,7 +_,7 @@ @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { From 89ee2e0c0f6b93e7e3ca9410a9818916356d6656 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 1 Jun 2025 14:33:08 -0700 Subject: [PATCH 113/289] apply the rest of the minecraft file patches \o/ --- .../minecraft/commands/Commands.java.patch | 23 ++--- .../server/PlayerAdvancements.java.patch | 14 +-- .../server/level/ServerPlayer.java.patch | 78 +++++++--------- .../ServerGamePacketListenerImpl.java.patch | 46 ++++------ .../server/players/PlayerList.java.patch | 35 +++---- .../minecraft/world/entity/Entity.java.patch | 92 +++++++++---------- .../world/entity/EntityType.java.patch | 26 ++---- .../net/minecraft/world/entity/Mob.java.patch | 48 ++++------ .../entity/ai/behavior/AcquirePoi.java.patch | 11 +++ .../ai/sensing/NearestBedSensor.java.patch | 14 +++ .../world/entity/animal/Animal.java.patch | 18 +--- .../world/entity/animal/IronGolem.java.patch | 36 +++----- .../world/entity/animal/SnowGolem.java.patch | 30 +++--- .../entity/animal/horse/Llama.java.patch | 42 +++++++++ .../world/entity/animal/wolf/Wolf.java.patch | 50 +++++----- .../entity/boss/wither/WitherBoss.java.patch | 32 +++---- .../entity/decoration/ArmorStand.java.patch | 22 ++--- .../world/entity/monster/Endermite.java.patch | 41 +++++++++ .../projectile/ThrownEnderpearl.java.patch | 16 +--- .../world/item/crafting/Ingredient.java.patch | 22 +++++ .../world/level/ServerExplosion.java.patch | 18 +--- .../level/block/entity/BlockEntity.java.patch | 27 ++---- .../entity/ConduitBlockEntity.java.patch | 67 ++++++++++++++ .../EnchantingTableBlockEntity.java.patch | 40 ++++++++ .../chunk/storage/EntityStorage.java.patch | 10 ++ .../entity/ai/behavior/AcquirePoi.java.patch | 19 ---- .../ai/sensing/NearestBedSensor.java.patch | 19 ---- .../entity/animal/horse/Llama.java.patch | 50 ---------- .../world/entity/monster/Endermite.java.patch | 49 ---------- .../world/item/crafting/Ingredient.java.patch | 30 ------ .../entity/ConduitBlockEntity.java.patch | 82 ----------------- .../EnchantingTableBlockEntity.java.patch | 48 ---------- .../chunk/storage/EntityStorage.java.patch | 18 ---- 33 files changed, 484 insertions(+), 689 deletions(-) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/commands/Commands.java.patch (79%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/PlayerAdvancements.java.patch (69%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/level/ServerPlayer.java.patch (78%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch (90%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/players/PlayerList.java.patch (65%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/Entity.java.patch (64%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/EntityType.java.patch (55%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/Mob.java.patch (53%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Animal.java.patch (68%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/IronGolem.java.patch (51%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/SnowGolem.java.patch (64%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/wolf/Wolf.java.patch (80%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch (66%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/decoration/ArmorStand.java.patch (70%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch (63%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/ServerExplosion.java.patch (75%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/entity/BlockEntity.java.patch (51%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/horse/Llama.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Endermite.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/crafting/Ingredient.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/Commands.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch similarity index 79% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/Commands.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch index a8a521ef4..0fc215487 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/Commands.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java -index 1927163db5d44383b69f41e4b9855535e853d127..603feb73bb5b45eec5984d27d0f5cf98ccc8420c 100644 --- a/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java -@@ -222,7 +222,7 @@ public class Commands { +@@ -251,7 +_,7 @@ JfrCommand.register(this.dispatcher); } @@ -17,7 +9,7 @@ index 1927163db5d44383b69f41e4b9855535e853d127..603feb73bb5b45eec5984d27d0f5cf98 RaidCommand.register(this.dispatcher, context); DebugPathCommand.register(this.dispatcher); DebugMobSpawningCommand.register(this.dispatcher); -@@ -250,6 +250,14 @@ public class Commands { +@@ -279,6 +_,14 @@ StopCommand.register(this.dispatcher); TransferCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); @@ -32,19 +24,20 @@ index 1927163db5d44383b69f41e4b9855535e853d127..603feb73bb5b45eec5984d27d0f5cf98 } if (selection.includeIntegrated) { -@@ -502,6 +510,7 @@ public class Commands { - private void runSync(ServerPlayer player, java.util.Collection bukkit, RootCommandNode rootCommandNode) { +@@ -535,6 +_,7 @@ + private void runSync(ServerPlayer player, java.util.Collection bukkit, RootCommandNode rootCommandNode) { // Paper end - Perf: Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootCommandNode, true).callEvent(); // Paper - Brigadier API + if (org.bukkit.event.player.PlayerCommandSendEvent.getHandlerList().getRegisteredListeners().length > 0) { // Purpur - Skip events if there's no listeners org.bukkit.event.player.PlayerCommandSendEvent event = new org.bukkit.event.player.PlayerCommandSendEvent(player.getBukkitEntity(), new java.util.LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -512,6 +521,7 @@ public class Commands { +@@ -545,6 +_,8 @@ } } // CraftBukkit end + } // Purpur - Skip events if there's no listeners - - player.connection.send(new ClientboundCommandsPacket(rootCommandNode)); ++ + player.connection.send(new ClientboundCommandsPacket(rootCommandNode, COMMAND_NODE_INSPECTOR)); } + diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/PlayerAdvancements.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/PlayerAdvancements.java.patch similarity index 69% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/PlayerAdvancements.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/PlayerAdvancements.java.patch index 2a7935202..24e974fe8 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/PlayerAdvancements.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/PlayerAdvancements.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/PlayerAdvancements.java b/net/minecraft/server/PlayerAdvancements.java -index 52e0ae233a7b1c88bfbbc27707ef5f18453ec865..bc5fe40ba202bf80b925f08ceee045e8a69a7d45 100644 --- a/net/minecraft/server/PlayerAdvancements.java +++ b/net/minecraft/server/PlayerAdvancements.java -@@ -148,6 +148,7 @@ public class PlayerAdvancements { +@@ -147,6 +_,7 @@ AdvancementHolder advancementHolder = advancementManager.get(path); if (advancementHolder == null) { if (!path.getNamespace().equals(ResourceLocation.DEFAULT_NAMESPACE)) return; // CraftBukkit @@ -16,10 +8,10 @@ index 52e0ae233a7b1c88bfbbc27707ef5f18453ec865..bc5fe40ba202bf80b925f08ceee045e8 LOGGER.warn("Ignored advancement '{}' in progress file {} - it doesn't exist anymore?", path, this.playerSavePath); } else { this.startProgress(advancementHolder, progress); -@@ -195,6 +196,7 @@ public class PlayerAdvancements { +@@ -194,6 +_,7 @@ advancement.value().display().ifPresent(displayInfo -> { // Paper start - Add Adventure message to PlayerAdvancementDoneEvent - if (event.message() != null && this.player.serverLevel().getGameRules().getBoolean(GameRules.RULE_ANNOUNCE_ADVANCEMENTS)) { + if (event.message() != null && this.player.level().getGameRules().getBoolean(GameRules.RULE_ANNOUNCE_ADVANCEMENTS)) { + if (org.purpurmc.purpur.PurpurConfig.advancementOnlyBroadcastToAffectedPlayer) this.player.sendMessage(message); else // Purpur - Configurable broadcast settings this.playerList.broadcastSystemMessage(io.papermc.paper.adventure.PaperAdventure.asVanilla(event.message()), false); // Paper end diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch similarity index 78% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayer.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index 31778e737..1b2a563b5 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 3781d9cc174b7aecacb9b9855d52c7b1ff05835c..5ced523477c2b86e2b46182a77a9d991cf4cdd1f 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -420,6 +420,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -425,6 +_,10 @@ public @Nullable com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent public @Nullable String clientBrandName = null; // Paper - Brand support public @Nullable 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,30 +9,30 @@ index 3781d9cc174b7aecacb9b9855d52c7b1ff05835c..5ced523477c2b86e2b46182a77a9d991 + private boolean compassBar = false; // Purpur - Add compass command + private boolean ramBar = false; // Purpur - Implement rambar commands - // Paper start - rewrite chunk system - private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; -@@ -553,6 +557,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc - this.respawnConfig = compound.read("respawn", ServerPlayer.RespawnConfig.CODEC).orElse(null); - this.spawnExtraParticlesOnFall = compound.getBooleanOr("spawn_extra_particles_on_fall", false); - this.raidOmenPosition = compound.read("raid_omen_position", BlockPos.CODEC).orElse(null); + public ServerPlayer(MinecraftServer server, ServerLevel level, GameProfile gameProfile, ClientInformation clientInformation) { + super(level, gameProfile); +@@ -528,6 +_,10 @@ + this.respawnConfig = input.read("respawn", ServerPlayer.RespawnConfig.CODEC).orElse(null); + this.spawnExtraParticlesOnFall = input.getBooleanOr("spawn_extra_particles_on_fall", false); + this.raidOmenPosition = input.read("raid_omen_position", BlockPos.CODEC).orElse(null); + -+ this.tpsBar = compound.getBooleanOr("Purpur.TPSBar", false); // Purpur - Implement TPSBar -+ this.compassBar = compound.getBooleanOr("Purpur.CompassBar", false); // Purpur - Add compass command -+ this.ramBar = compound.getBooleanOr("Purpur.RamBar", false); // Purpur - Implement rambar command ++ this.tpsBar = input.getBooleanOr("Purpur.TPSBar", false); // Purpur - Implement TPSBar ++ this.compassBar = input.getBooleanOr("Purpur.CompassBar", false); // Purpur - Add compass command ++ this.ramBar = input.getBooleanOr("Purpur.RamBar", false); // Purpur - Implement rambar command } @Override -@@ -570,6 +578,9 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc - compound.storeNullable("raid_omen_position", BlockPos.CODEC, this.raidOmenPosition); - this.saveEnderPearls(compound); - this.getBukkitEntity().setExtraData(compound); // CraftBukkit -+ compound.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur - Implement TPSBar -+ compound.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur - Add compass command -+ compound.putBoolean("Purpur.RamBar", this.ramBar); // Purpur - Add rambar command +@@ -545,6 +_,9 @@ + output.storeNullable("raid_omen_position", BlockPos.CODEC, this.raidOmenPosition); + this.saveEnderPearls(output); + this.getBukkitEntity().setExtraData(output); // CraftBukkit ++ output.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur - Implement TPSBar ++ output.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur - Add compass command ++ output.putBoolean("Purpur.RamBar", this.ramBar); // Purpur - Add rambar command } - private void saveParentVehicle(CompoundTag tag) { -@@ -1063,6 +1074,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc + private void saveParentVehicle(ValueOutput output) { +@@ -1041,6 +_,7 @@ // Paper - moved up to sendClientboundPlayerCombatKillPacket() sendClientboundPlayerCombatKillPacket(event.getShowDeathMessages(), deathScreenMessage); // Paper - Expand PlayerDeathEvent Team team = this.getTeam(); @@ -48,7 +40,7 @@ index 3781d9cc174b7aecacb9b9855d52c7b1ff05835c..5ced523477c2b86e2b46182a77a9d991 if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) { this.server.getPlayerList().broadcastSystemMessage(deathMessage, false); } else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { -@@ -1169,6 +1181,13 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1147,6 +_,13 @@ if (this.isInvulnerableTo(level, damageSource)) { return false; } else { @@ -62,7 +54,7 @@ index 3781d9cc174b7aecacb9b9855d52c7b1ff05835c..5ced523477c2b86e2b46182a77a9d991 Entity entity = damageSource.getEntity(); if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. !(entity instanceof Player player && !this.canHarmPlayer(player)) -@@ -1395,6 +1414,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1391,6 +_,7 @@ serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -70,19 +62,19 @@ index 3781d9cc174b7aecacb9b9855d52c7b1ff05835c..5ced523477c2b86e2b46182a77a9d991 this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1512,7 +1532,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1507,7 +_,7 @@ new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), - monster -> monster.isPreventingPlayerRest(this.serverLevel(), this) + monster -> monster.isPreventingPlayerRest(this.level(), this) ); - if (!entitiesOfClass.isEmpty()) { + if (!this.level().purpurConfig.playerSleepNearMonsters && !entitiesOfClass.isEmpty()) { // Purpur - Config to ignore nearby mobs when sleeping return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1549,7 +1569,19 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1544,7 +_,19 @@ CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); - if (!this.serverLevel().canSleepThroughNights()) { + if (!this.level().canSleepThroughNights()) { - this.displayClientMessage(Component.translatable("sleep.not_possible"), true); + // Purpur start - Customizable sleeping actionbar messages + Component clientMessage; @@ -99,8 +91,8 @@ index 3781d9cc174b7aecacb9b9855d52c7b1ff05835c..5ced523477c2b86e2b46182a77a9d991 + // Purpur end - Customizable sleeping actionbar messages } - ((ServerLevel)this.level()).updateSleepingPlayerList(); -@@ -1641,6 +1673,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc + this.level().updateSleepingPlayerList(); +@@ -1636,6 +_,7 @@ @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -108,7 +100,7 @@ index 3781d9cc174b7aecacb9b9855d52c7b1ff05835c..5ced523477c2b86e2b46182a77a9d991 this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -1943,6 +1976,26 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1945,6 +_,26 @@ this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -135,7 +127,7 @@ index 3781d9cc174b7aecacb9b9855d52c7b1ff05835c..5ced523477c2b86e2b46182a77a9d991 @Override public void displayClientMessage(Component chatComponent, boolean actionBar) { this.sendSystemMessage(chatComponent, actionBar); -@@ -2160,6 +2213,20 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -2163,6 +_,20 @@ ); } @@ -156,13 +148,14 @@ index 3781d9cc174b7aecacb9b9855d52c7b1ff05835c..5ced523477c2b86e2b46182a77a9d991 public void sendSystemMessage(Component mesage) { this.sendSystemMessage(mesage, false); } -@@ -2298,8 +2365,68 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -2301,7 +_,67 @@ public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); +- } + this.setAfk(false); // Purpur - AFK API - } - ++ } ++ + // Purpur start - AFK API + private boolean isAfk = false; + @@ -221,11 +214,10 @@ index 3781d9cc174b7aecacb9b9855d52c7b1ff05835c..5ced523477c2b86e2b46182a77a9d991 + return !this.isAfk() && super.canBeCollidedWith(); + } + // Purpur end - AFK API -+ + public ServerStatsCounter getStats() { return this.stats; - } -@@ -2926,4 +3053,56 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -2929,4 +_,56 @@ return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch similarity index 90% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index ca7bc5528..841cc134f 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 9041830c19e2899479e1519488faba5c416ccd88..bf8a8124145e4339cadcc83691f076bdad3ec43d 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -321,6 +321,20 @@ public class ServerGamePacketListenerImpl +@@ -324,6 +_,20 @@ this.tickEndEvent = new io.papermc.paper.event.packet.ClientTickEndEvent(player.getBukkitEntity()); // Paper - add client tick end event } @@ -29,7 +21,7 @@ index 9041830c19e2899479e1519488faba5c416ccd88..bf8a8124145e4339cadcc83691f076bd @Override public void tick() { if (this.ackBlockChangesUpTo > -1) { -@@ -379,6 +393,12 @@ public class ServerGamePacketListenerImpl +@@ -382,6 +_,12 @@ if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits @@ -42,7 +34,7 @@ index 9041830c19e2899479e1519488faba5c416ccd88..bf8a8124145e4339cadcc83691f076bd this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854 this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause } -@@ -624,6 +644,8 @@ public class ServerGamePacketListenerImpl +@@ -641,6 +_,8 @@ this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -51,15 +43,15 @@ index 9041830c19e2899479e1519488faba5c416ccd88..bf8a8124145e4339cadcc83691f076bd Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -703,6 +725,7 @@ public class ServerGamePacketListenerImpl - PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); +@@ -697,6 +_,7 @@ + PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); if (packet.getId() == this.awaitingTeleport) { if (this.awaitingPositionFromClient == null) { + ServerGamePacketListenerImpl.LOGGER.warn("Disconnected on accept teleport packet. Was not expecting position data from client at this time"); // Purpur - Add more logger output for invalid movement kicks this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause return; } -@@ -1233,6 +1256,10 @@ public class ServerGamePacketListenerImpl +@@ -1230,6 +_,10 @@ final int maxBookPageSize = pageMax.intValue(); final double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D); long byteAllowed = maxBookPageSize; @@ -70,7 +62,7 @@ index 9041830c19e2899479e1519488faba5c416ccd88..bf8a8124145e4339cadcc83691f076bd for (final String page : pageList) { final int byteLength = page.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; byteTotal += byteLength; -@@ -1257,7 +1284,8 @@ public class ServerGamePacketListenerImpl +@@ -1254,7 +_,8 @@ } if (byteTotal > byteAllowed) { @@ -80,7 +72,7 @@ index 9041830c19e2899479e1519488faba5c416ccd88..bf8a8124145e4339cadcc83691f076bd this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect return; } -@@ -1276,31 +1304,45 @@ public class ServerGamePacketListenerImpl +@@ -1273,31 +_,45 @@ Optional optional = packet.title(); optional.ifPresent(list::add); list.addAll(packet.pages()); @@ -130,7 +122,7 @@ index 9041830c19e2899479e1519488faba5c416ccd88..bf8a8124145e4339cadcc83691f076bd itemStack.set( DataComponents.WRITTEN_BOOK_CONTENT, new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list, true) -@@ -1314,6 +1356,16 @@ public class ServerGamePacketListenerImpl +@@ -1311,6 +_,16 @@ return this.player.isTextFilteringEnabled() ? Filterable.passThrough(filteredText.filteredOrEmpty()) : Filterable.from(filteredText); } @@ -146,11 +138,11 @@ index 9041830c19e2899479e1519488faba5c416ccd88..bf8a8124145e4339cadcc83691f076bd + @Override public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) { - PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); -@@ -1349,7 +1401,15 @@ public class ServerGamePacketListenerImpl + PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); +@@ -1350,7 +_,15 @@ @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { - PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); + PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); - if (containsInvalidValues(packet.getX(0.0), packet.getY(0.0), packet.getZ(0.0), packet.getYRot(0.0F), packet.getXRot(0.0F))) { + // Purpur start - Add more logger output for invalid movement kicks + boolean invalidX = Double.isNaN(packet.getX(0.0)); @@ -163,8 +155,8 @@ index 9041830c19e2899479e1519488faba5c416ccd88..bf8a8124145e4339cadcc83691f076bd + // Purpur end - Add more logger output for invalid movement kicks this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause } else { - ServerLevel serverLevel = this.player.serverLevel(); -@@ -1531,7 +1591,7 @@ public class ServerGamePacketListenerImpl + ServerLevel serverLevel = this.player.level(); +@@ -1531,7 +_,7 @@ movedWrongly = true; if (event.getLogWarning()) // Paper end @@ -173,7 +165,7 @@ index 9041830c19e2899479e1519488faba5c416ccd88..bf8a8124145e4339cadcc83691f076bd } // Paper } -@@ -1597,6 +1657,8 @@ public class ServerGamePacketListenerImpl +@@ -1586,6 +_,8 @@ this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -182,7 +174,7 @@ index 9041830c19e2899479e1519488faba5c416ccd88..bf8a8124145e4339cadcc83691f076bd Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -1652,6 +1714,13 @@ public class ServerGamePacketListenerImpl +@@ -1641,6 +_,13 @@ this.player.tryResetCurrentImpulseContext(); } @@ -196,7 +188,7 @@ index 9041830c19e2899479e1519488faba5c416ccd88..bf8a8124145e4339cadcc83691f076bd this.player.checkMovementStatistics(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1669,6 +1738,17 @@ public class ServerGamePacketListenerImpl +@@ -1658,6 +_,17 @@ } } @@ -214,7 +206,7 @@ index 9041830c19e2899479e1519488faba5c416ccd88..bf8a8124145e4339cadcc83691f076bd private boolean shouldCheckPlayerMovement(boolean isElytraMovement) { if (this.isSingleplayerOwner()) { return false; -@@ -2065,6 +2145,7 @@ public class ServerGamePacketListenerImpl +@@ -2028,6 +_,7 @@ boolean cancelled; if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) { @@ -222,7 +214,7 @@ index 9041830c19e2899479e1519488faba5c416ccd88..bf8a8124145e4339cadcc83691f076bd org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { -@@ -2737,6 +2818,7 @@ public class ServerGamePacketListenerImpl +@@ -2679,6 +_,7 @@ AABB boundingBox = target.getBoundingBox(); if (this.player.canInteractWithEntity(boundingBox, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience value for interact range diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/PlayerList.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch similarity index 65% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/PlayerList.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch index 2ca3c74f1..b2aeb51ba 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/PlayerList.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch @@ -1,30 +1,23 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 9ca3c55a3b5b1a532b86b08eb92460df4cb54f2a..f7b12d5924005a24899aef11746b9f056fac3559 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -400,6 +400,7 @@ public abstract class PlayerList { - scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam); - } - // Paper end - Configurable player collision -+ org.purpurmc.purpur.task.BossBarTask.addToAll(player); // Purpur - Implement TPSBar - PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), loggableAddress, player.getId(), serverLevel.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); - // Paper start - Send empty chunk, so players aren't stuck in the world loading screen with our chunk system not sending chunks when dead - if (player.isDeadOrDying()) { -@@ -505,6 +506,7 @@ public abstract class PlayerList { +@@ -406,7 +_,7 @@ + scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam); + } + // Paper end - Configurable player collision +- PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), loggableAddress, player.getId(), serverLevel.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); ++ org.purpurmc.purpur.task.BossBarTask.addToAll(player); // Purpur - Implement TPSBarPlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), loggableAddress, player.getId(), serverLevel.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); + // Paper start - Send empty chunk, so players aren't stuck in the world loading screen with our chunk system not sending chunks when dead + if (player.isDeadOrDying()) { + net.minecraft.core.Holder plains = serverLevel.registryAccess().lookupOrThrow(net.minecraft.core.registries.Registries.BIOME) +@@ -512,6 +_,7 @@ } public @Nullable net.kyori.adventure.text.Component remove(ServerPlayer player, net.kyori.adventure.text.Component leaveMessage) { // Paper end - Fix kick event leave message not being sent + org.purpurmc.purpur.task.BossBarTask.removeFromAll(player.getBukkitEntity()); // Purpur - Implement TPSBar - ServerLevel serverLevel = player.serverLevel(); + ServerLevel serverLevel = player.level(); player.awardStat(Stats.LEAVE_GAME); // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it -@@ -663,7 +665,7 @@ public abstract class PlayerList { +@@ -670,7 +_,7 @@ // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameProfile) // ? Component.translatable("multiplayer.disconnect.server_full") // : null; @@ -33,7 +26,7 @@ index 9ca3c55a3b5b1a532b86b08eb92460df4cb54f2a..f7b12d5924005a24899aef11746b9f05 event.disallow(org.bukkit.event.player.PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure } } -@@ -932,6 +934,20 @@ public abstract class PlayerList { +@@ -932,6 +_,20 @@ } } @@ -54,7 +47,7 @@ index 9ca3c55a3b5b1a532b86b08eb92460df4cb54f2a..f7b12d5924005a24899aef11746b9f05 public void broadcastAll(Packet packet, ResourceKey dimension) { for (ServerPlayer serverPlayer : this.players) { if (serverPlayer.level().dimension() == dimension) { -@@ -1016,6 +1032,7 @@ public abstract class PlayerList { +@@ -1016,6 +_,7 @@ } else { b = (byte)(24 + permLevel); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch similarity index 64% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Entity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 6ea886bd7..c474ef13e 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -1,22 +1,14 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 22d91f99c50e3b3b88ccab4eb5d1b71be5a9dcd8..b8a0abd1cbdc0c86ae9e68ebaeec14cd4728450e 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -141,6 +141,7 @@ import net.minecraft.world.scores.Team; - import org.jetbrains.annotations.Contract; +@@ -147,6 +_,7 @@ + import org.slf4j.Logger; - public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, ScoreHolder, DataComponentGetter, ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity, ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerEntity { // Paper - rewrite chunk system // Paper - optimise entity tracker + public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, ScoreHolder, DataComponentGetter { + public static javax.script.ScriptEngine scriptEngine = new javax.script.ScriptEngineManager().getEngineByName("rhino"); // Purpur - Configurable entity base attributes // CraftBukkit start - private static final org.slf4j.Logger LOGGER = com.mojang.logging.LogUtils.getLogger(); private static final int CURRENT_LEVEL = 2; -@@ -260,8 +261,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + public boolean preserveMotion = true; // Paper - Fix Entity Teleportation and cancel velocity if teleported; keep initial motion on first snapTo +@@ -323,8 +_,9 @@ public double xOld; public double yOld; public double zOld; @@ -25,9 +17,9 @@ index 22d91f99c50e3b3b88ccab4eb5d1b71be5a9dcd8..b8a0abd1cbdc0c86ae9e68ebaeec14cd - public final RandomSource random = SHARED_RANDOM; // Paper - Share random for entities to make them more random + public final RandomSource random; // Paper - Share random for entities to make them more random // Add toggle for RNG manipulation public int tickCount; - private int remainingFireTicks = -this.getFireImmuneTicks(); + private int remainingFireTicks; public boolean wasTouchingWater; -@@ -295,8 +297,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -358,8 +_,8 @@ public PortalProcessor portalProcess; public int portalCooldown; private boolean invulnerable; @@ -38,7 +30,7 @@ index 22d91f99c50e3b3b88ccab4eb5d1b71be5a9dcd8..b8a0abd1cbdc0c86ae9e68ebaeec14cd private boolean hasGlowingTag; private final Set tags = new io.papermc.paper.util.SizeLimitedSet<>(new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(), MAX_ENTITY_TAG_COUNT); // Paper - fully limit tag size - replace set impl private final double[] pistonDeltas = new double[]{0.0, 0.0, 0.0}; -@@ -350,6 +352,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -414,6 +_,7 @@ public long activatedTick = Integer.MIN_VALUE; public boolean isTemporarilyActive; public long activatedImmunityTick = Integer.MIN_VALUE; @@ -46,9 +38,9 @@ index 22d91f99c50e3b3b88ccab4eb5d1b71be5a9dcd8..b8a0abd1cbdc0c86ae9e68ebaeec14cd public void inactiveTick() { } -@@ -512,10 +515,21 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -426,10 +_,21 @@ } - // Paper end - optimise entity tracker + // Paper end + // Purpur start - Add canSaveToDisk to Entity + public boolean canSaveToDisk() { @@ -68,7 +60,7 @@ index 22d91f99c50e3b3b88ccab4eb5d1b71be5a9dcd8..b8a0abd1cbdc0c86ae9e68ebaeec14cd this.position = Vec3.ZERO; this.blockPosition = BlockPos.ZERO; this.chunkPosition = ChunkPos.ZERO; -@@ -885,6 +899,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -804,6 +_,7 @@ && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage @@ -76,7 +68,7 @@ index 22d91f99c50e3b3b88ccab4eb5d1b71be5a9dcd8..b8a0abd1cbdc0c86ae9e68ebaeec14cd this.onBelowWorld(); } } -@@ -1830,7 +1845,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1741,7 +_,7 @@ } public boolean fireImmune() { @@ -85,52 +77,50 @@ index 22d91f99c50e3b3b88ccab4eb5d1b71be5a9dcd8..b8a0abd1cbdc0c86ae9e68ebaeec14cd } public boolean causeFallDamage(double fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -1890,7 +1905,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1816,7 +_,7 @@ return this.isInWater() || flag; } -- public void updateInWaterStateAndDoWaterCurrentPushing() { +- void updateInWaterStateAndDoWaterCurrentPushing() { + public void updateInWaterStateAndDoWaterCurrentPushing() { // Purpur - Movement options for armor stands - package-private -> public - TODO: use AT file if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { this.wasTouchingWater = false; } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) { -@@ -2516,6 +2531,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - compound.putBoolean("Paper.FreezeLock", true); +@@ -2437,6 +_,11 @@ + output.putBoolean("Paper.FreezeLock", true); } // Paper end -+ + // Purpur start - Fire immune API + if (immuneToFire != null) { -+ compound.putBoolean("Purpur.FireImmune", immuneToFire); ++ output.putBoolean("Purpur.FireImmune", immuneToFire); + } + // Purpur end - Fire immune API -+ - return compound; - } catch (Throwable var8) { - CrashReport crashReport = CrashReport.forThrowable(var8, "Saving entity NBT"); -@@ -2646,6 +2668,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - freezeLocked = compound.getBooleanOr("Paper.FreezeLock", false); + } catch (Throwable var7) { + CrashReport crashReport = CrashReport.forThrowable(var7, "Saving entity NBT"); + CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being saved"); +@@ -2557,6 +_,13 @@ } + freezeLocked = input.getBooleanOr("Paper.FreezeLock", false); // Paper end + + // Purpur start - Fire immune API -+ if (compound.contains("Purpur.FireImmune")) { -+ immuneToFire = compound.getBoolean("Purpur.FireImmune").orElse(null); ++ if (input.contains("Purpur.FireImmune")) { ++ immuneToFire = input.getBoolean("Purpur.FireImmune").orElse(null); + } + // Purpur end - Fire immune API + - } catch (Throwable var8) { - CrashReport crashReport = CrashReport.forThrowable(var8, "Loading entity NBT"); + } catch (Throwable var7) { + CrashReport crashReport = CrashReport.forThrowable(var7, "Loading entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); -@@ -2874,6 +2903,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - if (this.isAlive() && this instanceof Leashable leashable) { - if (leashable.getLeashHolder() == player) { - if (!this.level().isClientSide()) { -+ if (hand == InteractionHand.OFF_HAND && (level().purpurConfig.villagerCanBeLeashed || level().purpurConfig.wanderingTraderCanBeLeashed) && this instanceof net.minecraft.world.entity.npc.AbstractVillager) return InteractionResult.CONSUME; // Purpur - Allow leashing villagers - // CraftBukkit start - fire PlayerUnleashEntityEvent - // Paper start - Expand EntityUnleashEvent - org.bukkit.event.player.PlayerUnleashEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials()); -@@ -3190,15 +3220,18 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2746,6 +_,7 @@ + if (this.isAlive() && this instanceof Leashable leashable2) { + if (leashable2.getLeashHolder() == player) { + if (!this.level().isClientSide()) { ++ if (hand == InteractionHand.OFF_HAND && (level().purpurConfig.villagerCanBeLeashed || level().purpurConfig.wanderingTraderCanBeLeashed) && this instanceof net.minecraft.world.entity.npc.AbstractVillager) return InteractionResult.CONSUME; // Purpur - Allow leashing villagers + // Paper start - EntityUnleashEvent + if (!org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerUnleashEntityEvent( + leashable2, player, hand, !player.hasInfiniteMaterials() +@@ -3151,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } @@ -150,7 +140,7 @@ index 22d91f99c50e3b3b88ccab4eb5d1b71be5a9dcd8..b8a0abd1cbdc0c86ae9e68ebaeec14cd } } } -@@ -3403,7 +3436,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3364,7 +_,7 @@ } public int getMaxAirSupply() { @@ -159,7 +149,7 @@ index 22d91f99c50e3b3b88ccab4eb5d1b71be5a9dcd8..b8a0abd1cbdc0c86ae9e68ebaeec14cd } public int getAirSupply() { -@@ -3931,7 +3964,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3909,7 +_,7 @@ // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -168,7 +158,7 @@ index 22d91f99c50e3b3b88ccab4eb5d1b71be5a9dcd8..b8a0abd1cbdc0c86ae9e68ebaeec14cd } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4468,6 +4501,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4432,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -178,10 +168,10 @@ index 22d91f99c50e3b3b88ccab4eb5d1b71be5a9dcd8..b8a0abd1cbdc0c86ae9e68ebaeec14cd + } + // Purpur end - Stop squids floating on top of water + - // Paper start - optimise collisions - public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { + public boolean updateFluidHeightAndDoFluidPushing(TagKey fluidTag, double motionScale) { if (this.touchingUnloadedChunk()) { -@@ -4876,7 +4915,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + return false; +@@ -4795,7 +_,7 @@ } public float maxUpStep() { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntityType.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch similarity index 55% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntityType.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch index b4f08e260..5fc5f32fc 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntityType.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/EntityType.java b/net/minecraft/world/entity/EntityType.java -index ed11697d81789ee6cd48ee2de2c9fcb8ff2be0d4..d6a0ad078fd1f0350afaac3f1743896d73b015e1 100644 --- a/net/minecraft/world/entity/EntityType.java +++ b/net/minecraft/world/entity/EntityType.java -@@ -1095,6 +1095,16 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -1105,6 +_,16 @@ return register(vanillaEntityId(key), builder); } @@ -25,7 +17,7 @@ index ed11697d81789ee6cd48ee2de2c9fcb8ff2be0d4..d6a0ad078fd1f0350afaac3f1743896d public static ResourceLocation getKey(EntityType entityType) { return BuiltInRegistries.ENTITY_TYPE.getKey(entityType); } -@@ -1325,6 +1335,16 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -1335,6 +_,16 @@ return this.category; } @@ -42,14 +34,14 @@ index ed11697d81789ee6cd48ee2de2c9fcb8ff2be0d4..d6a0ad078fd1f0350afaac3f1743896d public String getDescriptionId() { return this.descriptionId; } -@@ -1384,7 +1404,11 @@ public class EntityType implements FeatureElement, EntityTypeT - entity.load(tag); - }, - // Paper end - Don't fire sync event during generation -- () -> LOGGER.warn("Skipping Entity with id {}", tag.getStringOr("id", "[invalid]")) +@@ -1394,7 +_,11 @@ + entity.load(input); + }, + // Paper end - Don't fire sync event during generation +- () -> LOGGER.warn("Skipping Entity with id {}", input.getStringOr("id", "[invalid]")) + // Purpur start - log skipped entity's position -+ () -> {LOGGER.warn("Skipping Entity with id {}", tag.getStringOr("id", "[invalid]")); -+ EntityType.LOGGER.warn("Location: {} {}", level.getWorld().getName(), tag.read("Pos", net.minecraft.world.phys.Vec3.CODEC).orElse(net.minecraft.world.phys.Vec3.ZERO)); ++ () -> {LOGGER.warn("Skipping Entity with id {}", input.getStringOr("id", "[invalid]")); ++ EntityType.LOGGER.warn("Location: {} {}", level.getWorld().getName(), input.read("Pos", net.minecraft.world.phys.Vec3.CODEC).orElse(net.minecraft.world.phys.Vec3.ZERO)); + } + // Purpur end - log skipped entity's position ); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Mob.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch similarity index 53% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Mob.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch index 43c9dff1b..e8ab66d11 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Mob.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch @@ -1,22 +1,14 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index 73ba442b9d39bc021cd5eb6c1c0f98aed94a5a02..e3b804f2d612ed7971db450aeea6768109b63470 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -136,6 +136,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab - private BlockPos restrictCenter = BlockPos.ZERO; - private float restrictRadius = -1.0F; +@@ -139,6 +_,7 @@ + private BlockPos homePosition = BlockPos.ZERO; + private int homeRadius = -1; public boolean aware = true; // CraftBukkit + public int ticksSinceLastInteraction; // Purpur - Entity lifespan protected Mob(EntityType entityType, Level level) { super(entityType, level); -@@ -281,6 +282,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -284,6 +_,7 @@ target = null; } } @@ -24,13 +16,14 @@ index 73ba442b9d39bc021cd5eb6c1c0f98aed94a5a02..e3b804f2d612ed7971db450aeea67681 this.target = target; return true; // CraftBukkit end -@@ -324,8 +326,28 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -327,7 +_,27 @@ } profilerFiller.pop(); +- } + incrementTicksSinceLastInteraction(); // Purpur - Entity lifespan - } - ++ } ++ + // Purpur start - Entity lifespan + private void incrementTicksSinceLastInteraction() { + ++this.ticksSinceLastInteraction; @@ -49,27 +42,26 @@ index 73ba442b9d39bc021cd5eb6c1c0f98aed94a5a02..e3b804f2d612ed7971db450aeea67681 + } + } + // Purpur end - Entity lifespan -+ + @Override protected void playHurtSound(DamageSource source) { - this.resetAmbientSoundTime(); -@@ -420,6 +442,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab - compound.putBoolean("NoAI", this.isNoAi()); +@@ -427,6 +_,7 @@ + output.putBoolean("NoAI", this.isNoAi()); } - compound.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit -+ compound.putInt("Purpur.ticksSinceLastInteraction", this.ticksSinceLastInteraction); // Purpur - Entity lifespan + output.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit ++ output.putInt("Purpur.ticksSinceLastInteraction", this.ticksSinceLastInteraction); // Purpur - Entity lifespan } @Override -@@ -443,6 +466,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab - this.lootTableSeed = compound.getLongOr("DeathLootTableSeed", 0L); - this.setNoAi(compound.getBooleanOr("NoAI", false)); - this.aware = compound.getBooleanOr("Bukkit.Aware", true); // CraftBukkit -+ this.ticksSinceLastInteraction = compound.getIntOr("Purpur.ticksSinceLastInteraction", 0); // Purpur- Entity lifespan +@@ -454,6 +_,7 @@ + this.lootTableSeed = input.getLongOr("DeathLootTableSeed", 0L); + this.setNoAi(input.getBooleanOr("NoAI", false)); + this.aware = input.getBooleanOr("Bukkit.Aware", true); // CraftBukkit ++ this.ticksSinceLastInteraction = input.getIntOr("Purpur.ticksSinceLastInteraction", 0); // Purpur- Entity lifespan } @Override -@@ -1167,7 +1191,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1188,7 +_,7 @@ ); } @@ -78,7 +70,7 @@ index 73ba442b9d39bc021cd5eb6c1c0f98aed94a5a02..e3b804f2d612ed7971db450aeea67681 return spawnGroupData; } -@@ -1499,6 +1523,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1525,6 +_,7 @@ this.playAttackSound(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch new file mode 100644 index 000000000..6e83d6019 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java ++++ b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +@@ -85,7 +_,7 @@ + } + }; + Set, BlockPos>> set = poiManager.findAllClosestFirstWithType( +- acquirablePois, predicate1, mob.blockPosition(), 48, PoiManager.Occupancy.HAS_SPACE ++ acquirablePois, predicate1, mob.blockPosition(), level.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE // Purpur - Configurable villager search radius + ) + .limit(5L) + .filter(pair1 -> predicate.test(level, pair1.getSecond())) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch new file mode 100644 index 000000000..5d0923750 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch @@ -0,0 +1,14 @@ +--- a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java ++++ b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +@@ -54,9 +_,9 @@ + } + }; + Set, BlockPos>> set = poiManager.findAllWithType( +- holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY ++ holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), level.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY + ) +- .collect(Collectors.toSet()); ++ .collect(Collectors.toSet()); // Purpur - Configurable villager search radius + Path path = AcquirePoi.findPathToPois(entity, set); + if (path != null && path.canReach()) { + BlockPos target = path.getTarget(); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Animal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch similarity index 68% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Animal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch index fb812bb2c..e8f8ff304 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Animal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch @@ -1,23 +1,15 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Animal.java b/net/minecraft/world/entity/animal/Animal.java -index b851f94d63a049292a3657009d68bc1641222104..2ce0099460c14a6dd8b128f268ee915ea4be5183 100644 --- a/net/minecraft/world/entity/animal/Animal.java +++ b/net/minecraft/world/entity/animal/Animal.java -@@ -142,7 +142,7 @@ public abstract class Animal extends AgeableMob { +@@ -143,7 +_,7 @@ ItemStack itemInHand = player.getItemInHand(hand); if (this.isFood(itemInHand)) { int age = this.getAge(); -- if (!this.level().isClientSide && age == 0 && this.canFallInLove()) { -+ if (!this.level().isClientSide && age == 0 && this.canFallInLove() && (this.level().purpurConfig.animalBreedingCooldownSeconds <= 0 || !this.level().hasBreedingCooldown(player.getUUID(), this.getClass()))) { // Purpur - Add adjustable breeding cooldown to config +- if (player instanceof ServerPlayer serverPlayer && age == 0 && this.canFallInLove()) { ++ if (player instanceof ServerPlayer serverPlayer && age == 0 && this.canFallInLove() && (this.level().purpurConfig.animalBreedingCooldownSeconds <= 0 || !this.level().hasBreedingCooldown(player.getUUID(), this.getClass()))) { // Purpur - Add adjustable breeding cooldown to config final ItemStack breedCopy = itemInHand.copy(); // Paper - Fix EntityBreedEvent copying this.usePlayerItem(player, hand, itemInHand); - this.setInLove(player, breedCopy); // Paper - Fix EntityBreedEvent copying -@@ -239,10 +239,20 @@ public abstract class Animal extends AgeableMob { + this.setInLove(serverPlayer, breedCopy); // Paper - Fix EntityBreedEvent copying +@@ -235,10 +_,20 @@ public void spawnChildFromBreeding(ServerLevel level, Animal mate) { AgeableMob breedOffspring = this.getBreedOffspring(level, mate); if (breedOffspring != null) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/IronGolem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch similarity index 51% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/IronGolem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch index 58c04a8cf..322e86a71 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/IronGolem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java -index 33245f28c02c5cd42f2daec8748d615b7f5e21ec..91897447d7ef35af3300443e8eb96340081fed48 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java -@@ -57,13 +57,26 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -58,13 +_,26 @@ private int remainingPersistentAngerTime; @Nullable private UUID persistentAngerTarget; @@ -35,23 +27,23 @@ index 33245f28c02c5cd42f2daec8748d615b7f5e21ec..91897447d7ef35af3300443e8eb96340 this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9, 32.0F)); this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6, false)); -@@ -141,6 +154,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { - public void addAdditionalSaveData(CompoundTag compound) { - super.addAdditionalSaveData(compound); - compound.putBoolean("PlayerCreated", this.isPlayerCreated()); -+ compound.storeNullable("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC, getSummoner()); // Purpur - Summoner API - this.addPersistentAngerSaveData(compound); +@@ -142,6 +_,7 @@ + protected void addAdditionalSaveData(ValueOutput output) { + super.addAdditionalSaveData(output); + output.putBoolean("PlayerCreated", this.isPlayerCreated()); ++ output.storeNullable("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC, getSummoner()); // Purpur - Summoner API + this.addPersistentAngerSaveData(output); } -@@ -148,6 +162,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { - public void readAdditionalSaveData(CompoundTag compound) { - super.readAdditionalSaveData(compound); - this.setPlayerCreated(compound.getBooleanOr("PlayerCreated", false)); -+ this.setSummoner(compound.read("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC).orElse(null)); // Purpur - Summoner API - this.readPersistentAngerSaveData(this.level(), compound); +@@ -149,6 +_,7 @@ + protected void readAdditionalSaveData(ValueInput input) { + super.readAdditionalSaveData(input); + this.setPlayerCreated(input.getBooleanOr("PlayerCreated", false)); ++ this.setSummoner(input.read("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC).orElse(null)); // Purpur - Summoner API + this.readPersistentAngerSaveData(this.level(), input); } -@@ -267,6 +282,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -268,6 +_,7 @@ float f = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; this.playSound(SoundEvents.IRON_GOLEM_REPAIR, 1.0F, f); itemInHand.consume(1, player); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/SnowGolem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch similarity index 64% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/SnowGolem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch index e68bbcdb2..a3cb9e147 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/SnowGolem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index 7d73f02efb37aeafe41c23325a02d641d57bdaf4..67c8f1e82c775818f906eeaa639e55d7c02834c6 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java -@@ -45,15 +45,27 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -46,15 +_,27 @@ private static final EntityDataAccessor DATA_PUMPKIN_ID = SynchedEntityData.defineId(SnowGolem.class, EntityDataSerializers.BYTE); private static final byte PUMPKIN_FLAG = 16; private static final boolean DEFAULT_PUMPKIN = true; @@ -38,22 +30,22 @@ index 7d73f02efb37aeafe41c23325a02d641d57bdaf4..67c8f1e82c775818f906eeaa639e55d7 this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Mob.class, 10, true, false, (entity, level) -> entity instanceof Enemy)); -@@ -73,12 +85,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM - public void addAdditionalSaveData(CompoundTag compound) { - super.addAdditionalSaveData(compound); - compound.putBoolean("Pumpkin", this.hasPumpkin()); -+ compound.storeNullable("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC, getSummoner()); // Purpur - Summoner API +@@ -74,12 +_,14 @@ + protected void addAdditionalSaveData(ValueOutput output) { + super.addAdditionalSaveData(output); + output.putBoolean("Pumpkin", this.hasPumpkin()); ++ output.storeNullable("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC, getSummoner()); // Purpur - Summoner API } @Override - public void readAdditionalSaveData(CompoundTag compound) { - super.readAdditionalSaveData(compound); - this.setPumpkin(compound.getBooleanOr("Pumpkin", true)); -+ this.setSummoner(compound.read("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC).orElse(null)); // Purpur - Summoner API + protected void readAdditionalSaveData(ValueInput input) { + super.readAdditionalSaveData(input); + this.setPumpkin(input.getBooleanOr("Pumpkin", true)); ++ this.setSummoner(input.read("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC).orElse(null)); // Purpur - Summoner API } @Override -@@ -152,6 +166,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -153,6 +_,14 @@ } return InteractionResult.SUCCESS; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch new file mode 100644 index 000000000..3a614d8c8 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch @@ -0,0 +1,42 @@ +--- a/net/minecraft/world/entity/animal/horse/Llama.java ++++ b/net/minecraft/world/entity/animal/horse/Llama.java +@@ -78,6 +_,7 @@ + private Llama caravanHead; + @Nullable + public Llama caravanTail; // Paper ++ public boolean shouldJoinCaravan = true; // Purpur - Llama API + + public Llama(EntityType entityType, Level level) { + super(entityType, level); +@@ -112,6 +_,7 @@ + super.addAdditionalSaveData(output); + output.store("Variant", Llama.Variant.LEGACY_CODEC, this.getVariant()); + output.putInt("Strength", this.getStrength()); ++ output.putBoolean("Purpur.ShouldJoinCaravan", shouldJoinCaravan); // Purpur - Llama API + } + + @Override +@@ -119,6 +_,7 @@ + this.setStrength(input.getIntOr("Strength", 0)); + super.readAdditionalSaveData(input); + this.setVariant(input.read("Variant", Llama.Variant.LEGACY_CODEC).orElse(Llama.Variant.DEFAULT)); ++ this.shouldJoinCaravan = input.getBooleanOr("Purpur.ShouldJoinCaravan", true); // Purpur - Llama API + } + + @Override +@@ -400,6 +_,7 @@ + + public void leaveCaravan() { + if (this.caravanHead != null) { ++ new org.purpurmc.purpur.event.entity.LlamaLeaveCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity()).callEvent(); // Purpur - Llama API + this.caravanHead.caravanTail = null; + } + +@@ -407,6 +_,7 @@ + } + + public void joinCaravan(Llama caravanHead) { ++ if (!this.level().purpurConfig.llamaJoinCaravans || !shouldJoinCaravan || !new org.purpurmc.purpur.event.entity.LlamaJoinCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity(), (org.bukkit.entity.Llama) caravanHead.getBukkitEntity()).callEvent()) return; // Purpur - Llama API // Purpur - Config to disable Llama caravans + this.caravanHead = caravanHead; + this.caravanHead.caravanTail = this; + } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch similarity index 80% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch index de4d32c26..a696b0e4b 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java -index d926ecd041ca2a421057bc22efe66a8b811ee649..0487c463806509b1dd93dcfee3b518c95b0bdb19 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java -@@ -100,6 +100,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -99,6 +_,37 @@ EntityType type = entity.getType(); return type == EntityType.SHEEP || type == EntityType.RABBIT || type == EntityType.FOX; }; @@ -46,7 +38,7 @@ index d926ecd041ca2a421057bc22efe66a8b811ee649..0487c463806509b1dd93dcfee3b518c9 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; -@@ -122,12 +153,47 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -121,12 +_,47 @@ this.setPathfindingMalus(PathType.DANGER_POWDER_SNOW, -1.0F); } @@ -94,7 +86,7 @@ index d926ecd041ca2a421057bc22efe66a8b811ee649..0487c463806509b1dd93dcfee3b518c9 this.goalSelector.addGoal(4, new LeapAtTargetGoal(this, 0.4F)); this.goalSelector.addGoal(5, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(6, new FollowOwnerGoal(this, 1.0, 10.0F, 2.0F)); -@@ -140,7 +206,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -139,7 +_,7 @@ this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, new HurtByTargetGoal(this).setAlertOthers()); this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); @@ -103,29 +95,29 @@ index d926ecd041ca2a421057bc22efe66a8b811ee649..0487c463806509b1dd93dcfee3b518c9 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)); -@@ -231,6 +297,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { - public void addAdditionalSaveData(CompoundTag compound) { - super.addAdditionalSaveData(compound); - compound.store("CollarColor", DyeColor.LEGACY_ID_CODEC, this.getCollarColor()); -+ compound.putBoolean("Purpur.IsRabid", this.isRabid); // Purpur - Configurable chance for wolves to spawn rabid - VariantUtils.writeVariant(compound, this.getVariant()); - this.addPersistentAngerSaveData(compound); +@@ -230,6 +_,7 @@ + protected void addAdditionalSaveData(ValueOutput output) { + super.addAdditionalSaveData(output); + output.store("CollarColor", DyeColor.LEGACY_ID_CODEC, this.getCollarColor()); ++ output.putBoolean("Purpur.IsRabid", this.isRabid); // Purpur - Configurable chance for wolves to spawn rabid + VariantUtils.writeVariant(output, this.getVariant()); + this.addPersistentAngerSaveData(output); this.getSoundVariant() -@@ -245,6 +312,10 @@ public class Wolf extends TamableAnimal implements NeutralMob { - super.readAdditionalSaveData(compound); - VariantUtils.readVariant(compound, this.registryAccess(), Registries.WOLF_VARIANT).ifPresent(this::setVariant); - this.setCollarColor(compound.read("CollarColor", DyeColor.LEGACY_ID_CODEC).orElse(DEFAULT_COLLAR_COLOR)); +@@ -244,6 +_,10 @@ + super.readAdditionalSaveData(input); + VariantUtils.readVariant(input, Registries.WOLF_VARIANT).ifPresent(this::setVariant); + this.setCollarColor(input.read("CollarColor", DyeColor.LEGACY_ID_CODEC).orElse(DEFAULT_COLLAR_COLOR)); + // Purpur start - Configurable chance for wolves to spawn rabid -+ this.isRabid = compound.getBooleanOr("Purpur.IsRabid", false); ++ this.isRabid = input.getBooleanOr("Purpur.IsRabid", false); + this.updatePathfinders(false); + // Purpur end - Configurable chance for wolves to spawn rabid - this.readPersistentAngerSaveData(this.level(), compound); - compound.read("sound_variant", ResourceKey.codec(Registries.WOLF_SOUND_VARIANT)) + this.readPersistentAngerSaveData(this.level(), input); + input.read("sound_variant", ResourceKey.codec(Registries.WOLF_SOUND_VARIANT)) .flatMap(resourceKey -> this.registryAccess().lookupOrThrow(Registries.WOLF_SOUND_VARIANT).get((ResourceKey)resourceKey)) -@@ -269,6 +340,10 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -268,6 +_,10 @@ } - this.setSoundVariant(WolfSoundVariants.pickRandomSoundVariant(this.registryAccess(), this.random)); + this.setSoundVariant(WolfSoundVariants.pickRandomSoundVariant(this.registryAccess(), level.getRandom())); + // Purpur start - Configurable chance for wolves to spawn rabid + this.isRabid = level.getLevel().purpurConfig.wolfNaturalRabid > 0.0D && random.nextDouble() <= level.getLevel().purpurConfig.wolfNaturalRabid; + this.updatePathfinders(false); @@ -133,7 +125,7 @@ index d926ecd041ca2a421057bc22efe66a8b811ee649..0487c463806509b1dd93dcfee3b518c9 return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData); } -@@ -319,6 +394,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -318,6 +_,11 @@ public void tick() { super.tick(); if (this.isAlive()) { @@ -145,7 +137,7 @@ index d926ecd041ca2a421057bc22efe66a8b811ee649..0487c463806509b1dd93dcfee3b518c9 this.interestedAngleO = this.interestedAngle; if (this.isInterested()) { this.interestedAngle = this.interestedAngle + (1.0F - this.interestedAngle) * 0.4F; -@@ -532,13 +612,27 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -519,13 +_,27 @@ itemInHand.consume(1, player); this.tryToTame(player); return InteractionResult.SUCCESS_SERVER; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch similarity index 66% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch index 81de8a88e..ae41b8b7c 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 09924cccf9208abda22cc7e1635b567ed166e95a..2f7da367b58fd9c06c4e012e8eb7f59e5a7f9b6d 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -78,6 +78,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -79,6 +_,7 @@ private static final TargetingConditions.Selector LIVING_ENTITY_SELECTOR = (entity, level) -> !entity.getType().is(EntityTypeTags.WITHER_FRIENDS) && entity.attackable(); private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0).selector(LIVING_ENTITY_SELECTOR); @@ -16,7 +8,7 @@ index 09924cccf9208abda22cc7e1635b567ed166e95a..2f7da367b58fd9c06c4e012e8eb7f59e public WitherBoss(EntityType entityType, Level level) { super(entityType, level); -@@ -86,6 +87,17 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -87,6 +_,17 @@ this.xpReward = 50; } @@ -34,23 +26,23 @@ index 09924cccf9208abda22cc7e1635b567ed166e95a..2f7da367b58fd9c06c4e012e8eb7f59e @Override protected PathNavigation createNavigation(Level level) { FlyingPathNavigation flyingPathNavigation = new FlyingPathNavigation(this, level); -@@ -118,6 +130,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { - public void addAdditionalSaveData(CompoundTag compound) { - super.addAdditionalSaveData(compound); - compound.putInt("Invul", this.getInvulnerableTicks()); -+ compound.storeNullable("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC, getSummoner()); // Purpur - Summoner API +@@ -119,6 +_,7 @@ + protected void addAdditionalSaveData(ValueOutput output) { + super.addAdditionalSaveData(output); + output.putInt("Invul", this.getInvulnerableTicks()); ++ output.storeNullable("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC, getSummoner()); // Purpur - Summoner API } @Override -@@ -127,6 +140,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -128,6 +_,7 @@ if (this.hasCustomName()) { this.bossEvent.setName(this.getDisplayName()); } -+ this.setSummoner(compound.read("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC).orElse(null)); // Purpur - Summoner API ++ this.setSummoner(input.read("Purpur.Summoner", net.minecraft.core.UUIDUtil.CODEC).orElse(null)); // Purpur - Summoner API } @Override -@@ -270,7 +284,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -271,7 +_,7 @@ level.explode(this, this.getX(), this.getEyeY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); } // CraftBukkit end @@ -59,7 +51,7 @@ index 09924cccf9208abda22cc7e1635b567ed166e95a..2f7da367b58fd9c06c4e012e8eb7f59e // CraftBukkit start - Use relative location for far away sounds // level.globalLevelEvent(1023, this.blockPosition(), 0); int viewDistance = level.getCraftServer().getViewDistance() * 16; -@@ -377,8 +391,10 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -378,8 +_,10 @@ } } @@ -72,7 +64,7 @@ index 09924cccf9208abda22cc7e1635b567ed166e95a..2f7da367b58fd9c06c4e012e8eb7f59e } this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); -@@ -575,6 +591,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -576,6 +_,7 @@ @Override protected boolean canRide(Entity entity) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch similarity index 70% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch index 6adeae079..8a3b604f5 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch @@ -1,15 +1,7 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java -index 5248f3c22abb608d7d7b338f169f13bfbf4cd2d6..fa20c642c05fa4ed3739cd0b3964e31fd4dba1d3 100644 --- a/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -95,10 +95,13 @@ public class ArmorStand extends LivingEntity { - private boolean noTickPoseDirty = false; +@@ -91,10 +_,13 @@ + public boolean canTickSetByAPI = false; private boolean noTickEquipmentDirty = false; // Paper end - Allow ArmorStands not to tick + public boolean canMovementTick = true; // Purpur - Movement options for armor stands @@ -22,15 +14,15 @@ index 5248f3c22abb608d7d7b338f169f13bfbf4cd2d6..fa20c642c05fa4ed3739cd0b3964e31f } public ArmorStand(Level level, double x, double y, double z) { -@@ -546,6 +549,7 @@ public class ArmorStand extends LivingEntity { - +@@ -521,6 +_,7 @@ + // Paper start - Allow ArmorStands not to tick @Override public void tick() { + maxUpStep = level().purpurConfig.armorstandStepHeight; // Purpur - Add option to set armorstand step height - // Paper start - Allow ArmorStands not to tick if (!this.canTick) { - if (this.noTickPoseDirty) { -@@ -875,4 +879,18 @@ public class ArmorStand extends LivingEntity { + if (this.noTickEquipmentDirty) { + this.noTickEquipmentDirty = false; +@@ -811,4 +_,18 @@ } } // Paper end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch new file mode 100644 index 000000000..b8e9ee681 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch @@ -0,0 +1,41 @@ +--- a/net/minecraft/world/entity/monster/Endermite.java ++++ b/net/minecraft/world/entity/monster/Endermite.java +@@ -30,12 +_,23 @@ + private static final int MAX_LIFE = 2400; + private static final int DEFAULT_LIFE = 0; + public int life = 0; ++ private boolean isPlayerSpawned; // Purpur - Add back player spawned endermite API + + public Endermite(EntityType entityType, Level level) { + super(entityType, level); + this.xpReward = 3; + } + ++ // Purpur start - Add back player spawned endermite API ++ public boolean isPlayerSpawned() { ++ return this.isPlayerSpawned; ++ } ++ ++ public void setPlayerSpawned(boolean playerSpawned) { ++ this.isPlayerSpawned = playerSpawned; ++ } ++ // Purpur end - Add back player spawned endermite API ++ + @Override + protected void registerGoals() { + this.goalSelector.addGoal(1, new FloatGoal(this)); +@@ -81,12 +_,14 @@ + protected void readAdditionalSaveData(ValueInput input) { + super.readAdditionalSaveData(input); + this.life = input.getIntOr("Lifetime", 0); ++ this.isPlayerSpawned = input.getBooleanOr("PlayerSpawned", false); // Purpur - Add back player spawned endermite API + } + + @Override + protected void addAdditionalSaveData(ValueOutput output) { + super.addAdditionalSaveData(output); + output.putInt("Lifetime", this.life); ++ output.putBoolean("PlayerSpawned", this.isPlayerSpawned); // Purpur - Add back player spawned endermite API + } + + @Override diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch similarity index 63% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch index 9b40f2cb6..4af6264e9 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -index bda858b1e1c6b28cd9d5a664758b3e445eaf4f22..6575e8ef16f6011f7a799ba31531a2ebefee0c4d 100644 --- a/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -@@ -129,9 +129,10 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { +@@ -126,9 +_,10 @@ return; } // CraftBukkit end @@ -20,12 +12,12 @@ index bda858b1e1c6b28cd9d5a664758b3e445eaf4f22..6575e8ef16f6011f7a799ba31531a2eb endermite.snapTo(owner.getX(), owner.getY(), owner.getZ(), owner.getYRot(), owner.getXRot()); serverLevel.addFreshEntity(endermite, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.ENDER_PEARL); } -@@ -151,7 +152,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { +@@ -148,7 +_,7 @@ if (serverPlayer1 != null) { serverPlayer1.resetFallDistance(); serverPlayer1.resetCurrentImpulseContext(); -- serverPlayer1.hurtServer(serverPlayer.serverLevel(), this.damageSources().enderPearl().eventEntityDamager(this), 5.0F); // CraftBukkit // Paper - fix DamageSource API -+ serverPlayer1.hurtServer(serverPlayer.serverLevel(), this.damageSources().enderPearl().eventEntityDamager(this), this.level().purpurConfig.enderPearlDamage); // CraftBukkit // Paper - fix DamageSource API // Purpur - Configurable Ender Pearl damage +- serverPlayer1.hurtServer(serverPlayer.level(), this.damageSources().enderPearl().eventEntityDamager(this), 5.0F); // CraftBukkit // Paper - fix DamageSource API ++ serverPlayer1.hurtServer(serverPlayer.level(), this.damageSources().enderPearl().eventEntityDamager(this), this.level().purpurConfig.enderPearlDamage); // CraftBukkit // Paper - fix DamageSource API // Purpur - Configurable Ender Pearl damage } this.playSound(serverLevel, vec3); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch new file mode 100644 index 000000000..5c451611e --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch @@ -0,0 +1,22 @@ +--- a/net/minecraft/world/item/crafting/Ingredient.java ++++ b/net/minecraft/world/item/crafting/Ingredient.java +@@ -36,6 +_,7 @@ + // CraftBukkit start + @javax.annotation.Nullable + private java.util.List itemStacks; ++ public Predicate predicate; // Purpur - Add predicate to recipe's ExactChoice ingredient + + public boolean isExact() { + return this.itemStacks != null; +@@ -90,6 +_,11 @@ + return false; + } + // CraftBukkit end ++ // Purpur start - Add predicate to recipe's ExactChoice ingredient ++ if (predicate != null) { ++ return predicate.test(stack.asBukkitCopy()); ++ } ++ // Purpur end - Add predicate to recipe's ExactChoice ingredient + return stack.is(this.values); + } + diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/ServerExplosion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch similarity index 75% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/ServerExplosion.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch index b911ff6a5..f4e8e281f 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/ServerExplosion.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch @@ -1,14 +1,6 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java -index ec4b63a574e7ff2c807c283c9f4b402229864e51..1953b2e59f4f6e6f78079ade6faa93bff6bf1a27 100644 --- a/net/minecraft/world/level/ServerExplosion.java +++ b/net/minecraft/world/level/ServerExplosion.java -@@ -316,7 +316,7 @@ public class ServerExplosion implements Explosion { +@@ -73,7 +_,7 @@ ) { this.level = level; this.source = source; @@ -17,7 +9,7 @@ index ec4b63a574e7ff2c807c283c9f4b402229864e51..1953b2e59f4f6e6f78079ade6faa93bf this.center = center; this.fire = fire; this.blockInteraction = blockInteraction; -@@ -638,10 +638,27 @@ public class ServerExplosion implements Explosion { +@@ -356,10 +_,27 @@ public void explode() { // CraftBukkit start @@ -43,6 +35,6 @@ index ec4b63a574e7ff2c807c283c9f4b402229864e51..1953b2e59f4f6e6f78079ade6faa93bf + } + } + // Purpur end - Add PreExplodeEvents - // Paper start - collision optimisations - this.blockCache = new it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap<>(); - this.chunkPosCache = new long[CHUNK_CACHE_WIDTH * CHUNK_CACHE_WIDTH]; + this.level.gameEvent(this.source, GameEvent.EXPLODE, this.center); + List list = this.calculateExplodedPositions(); + this.hurtEntities(); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch similarity index 51% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch index 4cf7475eb..e06155335 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch @@ -1,16 +1,8 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/entity/BlockEntity.java b/net/minecraft/world/level/block/entity/BlockEntity.java -index a1075c26d55cc01219acd94d0138f81aa9d34c48..d7a08a4ecac2bb4f5626fb53e27f8d50b6936f1c 100644 --- a/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -105,6 +105,10 @@ public abstract class BlockEntity { - this.persistentDataContainer.putAll((CompoundTag) persistentDataTag); - } +@@ -104,6 +_,10 @@ + input.read("PublicBukkitValues", CompoundTag.CODEC) + .ifPresent(this.persistentDataContainer::putAll); // Paper end - read persistent data container + + @@ -18,22 +10,21 @@ index a1075c26d55cc01219acd94d0138f81aa9d34c48..d7a08a4ecac2bb4f5626fb53e27f8d50 + } - public final void loadWithComponents(CompoundTag tag, HolderLookup.Provider registries) { -@@ -118,6 +122,12 @@ public abstract class BlockEntity { + public final void loadWithComponents(ValueInput input) { +@@ -116,6 +_,11 @@ } - protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { + protected void saveAdditional(ValueOutput output) { + // Purpur start - Persistent BlockEntity Lore and DisplayName + if (this.persistentLore != null) { -+ net.minecraft.resources.RegistryOps registryOps = registries.createSerializationContext(NbtOps.INSTANCE); -+ tag.store("Purpur.persistentLore", net.minecraft.world.item.component.ItemLore.CODEC, registryOps, this.persistentLore); ++ output.store("Purpur.persistentLore", net.minecraft.world.item.component.ItemLore.CODEC, this.persistentLore); + } + // Purpur end - Persistent BlockEntity Lore and DisplayName } public final CompoundTag saveWithFullMetadata(HolderLookup.Provider registries) { -@@ -379,4 +389,17 @@ public abstract class BlockEntity { - private ComponentHelper() { +@@ -400,4 +_,17 @@ + return this.blockEntity.getNameForReporting() + "@" + this.blockEntity.getBlockPos(); } } + diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch new file mode 100644 index 000000000..553410e9a --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch @@ -0,0 +1,67 @@ +--- a/net/minecraft/world/level/block/entity/ConduitBlockEntity.java ++++ b/net/minecraft/world/level/block/entity/ConduitBlockEntity.java +@@ -151,7 +_,7 @@ + BlockPos blockPos1 = pos.offset(i, i1, i2x); + BlockState blockState = level.getBlockState(blockPos1); + +- for (Block block : VALID_BLOCKS) { ++ for (Block block : level.purpurConfig.conduitBlocks) { // Purpur - Conduit behavior configuration + if (blockState.is(block)) { + positions.add(blockPos1); + } +@@ -166,13 +_,13 @@ + + private static void applyEffects(Level level, BlockPos pos, List positions) { + // CraftBukkit start +- ConduitBlockEntity.applyEffects(level, pos, ConduitBlockEntity.getRange(positions)); ++ ConduitBlockEntity.applyEffects(level, pos, ConduitBlockEntity.getRange(positions, level)); // Purpur - Conduit behavior configuration + } + +- public static int getRange(List positions) { ++ public static int getRange(List positions, Level level) { // Purpur - Conduit behavior configuration + // CraftBukkit end + int size = positions.size(); +- int i = size / 7 * 16; ++ int i = size / 7 * level.purpurConfig.conduitDistance; // Purpur - Conduit behavior configuration + // CraftBukkit start + return i; + } +@@ -202,7 +_,7 @@ + EntityReference entityReference = updateDestroyTarget(blockEntity.destroyTarget, level, pos, canDestroy); + LivingEntity livingEntity = EntityReference.get(entityReference, level, LivingEntity.class); + if (damageTarget && livingEntity != null) { // CraftBukkit +- if (livingEntity.hurtServer(level, level.damageSources().magic(), 4.0F)) // CraftBukkit - move up ++ if (livingEntity.hurtServer(level, level.damageSources().magic(), level.purpurConfig.conduitDamageAmount)) // CraftBukkit - move up // Purpur - Conduit behavior configuration + level.playSound( + null, livingEntity.getX(), livingEntity.getY(), livingEntity.getZ(), SoundEvents.CONDUIT_ATTACK_TARGET, SoundSource.BLOCKS, 1.0F, 1.0F + ); +@@ -224,20 +_,26 @@ + return selectNewTarget(level, pos); + } else { + LivingEntity livingEntity = EntityReference.get(destroyTarget, level, LivingEntity.class); +- return livingEntity != null && livingEntity.isAlive() && pos.closerThan(livingEntity.blockPosition(), 8.0) ? destroyTarget : null; ++ return livingEntity != null && livingEntity.isAlive() && pos.closerThan(livingEntity.blockPosition(), level.purpurConfig.conduitDamageDistance) ? destroyTarget : null; // Purpur - Conduit behavior configuration + } + } + + @Nullable + private static EntityReference selectNewTarget(ServerLevel level, BlockPos pos) { + List entitiesOfClass = level.getEntitiesOfClass( +- LivingEntity.class, getDestroyRangeAABB(pos), livingEntity -> livingEntity instanceof Enemy && livingEntity.isInWaterOrRain() ++ LivingEntity.class, getDestroyRangeAABB(pos, level), livingEntity -> livingEntity instanceof Enemy && livingEntity.isInWaterOrRain() // Purpur - Conduit behavior configuration + ); + return entitiesOfClass.isEmpty() ? null : new EntityReference<>(Util.getRandom(entitiesOfClass, level.random)); + } + + public static AABB getDestroyRangeAABB(BlockPos pos) { +- return new AABB(pos).inflate(8.0); ++ // Purpur start - Conduit behavior configuration ++ return getDestroyRangeAABB(pos, null); ++ } ++ ++ private static AABB getDestroyRangeAABB(BlockPos pos, Level level) { ++ // Purpur end - Conduit behavior configuration ++ return new AABB(pos).inflate(level == null ? 8.0 : level.purpurConfig.conduitDamageDistance); // Purpur - Conduit behavior configuration + } + + private static void animationTick(Level level, BlockPos pos, List positions, @Nullable Entity entity, int tickCount) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch new file mode 100644 index 000000000..ab62b82a0 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch @@ -0,0 +1,40 @@ +--- a/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java ++++ b/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java +@@ -30,6 +_,7 @@ + private static final RandomSource RANDOM = RandomSource.create(); + @Nullable + private Component name; ++ private int lapis = 0; // Purpur - Enchantment Table Persists Lapis + + public EnchantingTableBlockEntity(BlockPos pos, BlockState state) { + super(BlockEntityType.ENCHANTING_TABLE, pos, state); +@@ -39,12 +_,14 @@ + protected void saveAdditional(ValueOutput output) { + super.saveAdditional(output); + output.storeNullable("CustomName", ComponentSerialization.CODEC, this.name); ++ output.putInt("Purpur.Lapis", this.lapis); // Purpur - Enchantment Table Persists Lapis + } + + @Override + protected void loadAdditional(ValueInput input) { + super.loadAdditional(input); + this.name = parseCustomNameSafe(input, "CustomName"); ++ this.lapis = input.getIntOr("Purpur.Lapis", 0); // Purpur - Enchantment Table Persists Lapis + } + + public static void bookAnimationTick(Level level, BlockPos pos, BlockState state, EnchantingTableBlockEntity enchantingTable) { +@@ -136,4 +_,14 @@ + public void removeComponentsFromTag(ValueOutput output) { + output.discard("CustomName"); + } ++ ++ // Purpur start - Enchantment Table Persists Lapis ++ public int getLapis() { ++ return this.lapis; ++ } ++ ++ public void setLapis(int lapis) { ++ this.lapis = lapis; ++ } ++ // Purpur end - Enchantment Table Persists Lapis + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch new file mode 100644 index 000000000..3a1098066 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch @@ -0,0 +1,10 @@ +--- a/net/minecraft/world/level/chunk/storage/EntityStorage.java ++++ b/net/minecraft/world/level/chunk/storage/EntityStorage.java +@@ -97,6 +_,7 @@ + ListTag listTag = new ListTag(); + entities.getEntities().forEach(entity -> { + TagValueOutput tagValueOutput = TagValueOutput.createWithContext(scopedCollector.forChild(entity.problemPath()), entity.registryAccess()); ++ if (!entity.canSaveToDisk()) return; // Purpur - Add canSaveToDisk to Entity + if (entity.save(tagValueOutput)) { + CompoundTag compoundTag1 = tagValueOutput.buildResult(); + listTag.add(compoundTag1); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch deleted file mode 100644 index 8c83db8ec..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch +++ /dev/null @@ -1,19 +0,0 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -index b9174ae7e3a3e2de2d570b95ab5012ac3c3a2eda..67cbf9f5760fae5db6f31e64095cd1b6be6ade8e 100644 ---- a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -+++ b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -@@ -86,7 +86,7 @@ public class AcquirePoi { - }; - // Paper start - optimise POI access - final java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); -- io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, acquirablePois, predicate1, mob.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); -+ io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, acquirablePois, predicate1, mob.blockPosition(), level.purpurConfig.villagerAcquirePoiSearchRadius, level.purpurConfig.villagerAcquirePoiSearchRadius*level.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); // Purpur - Configurable villager search radius - final Set, BlockPos>> set = new java.util.HashSet<>(poiposes.size()); - for (final Pair, BlockPos> poiPose : poiposes) { - if (predicate.test(level, poiPose.getSecond())) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch deleted file mode 100644 index 99bb8d0d2..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch +++ /dev/null @@ -1,19 +0,0 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -index 066faa704338c573472381e1ebd063e0d52aaaa4..1f96fd5085bacb4c584576c7cb9f51e7898e9b03 100644 ---- a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -+++ b/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(), level.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); // Purpur - Configurable villager search radius - Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes)); - // Paper end - optimise POI access - if (path != null && path.canReach()) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/horse/Llama.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/horse/Llama.java.patch deleted file mode 100644 index 795e98415..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/horse/Llama.java.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index 6916adb865ff8fea498d3a61c2b5560472a223f4..d4467235e8dc9d10c61dfb6fd9dc32386903dd09 100644 ---- a/net/minecraft/world/entity/animal/horse/Llama.java -+++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -77,6 +77,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { - private Llama caravanHead; - @Nullable - public Llama caravanTail; // Paper -+ public boolean shouldJoinCaravan = true; // Purpur - Llama API - - public Llama(EntityType entityType, Level level) { - super(entityType, level); -@@ -111,6 +112,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { - super.addAdditionalSaveData(compound); - compound.store("Variant", Llama.Variant.LEGACY_CODEC, this.getVariant()); - compound.putInt("Strength", this.getStrength()); -+ compound.putBoolean("Purpur.ShouldJoinCaravan", shouldJoinCaravan); // Purpur - Llama API - } - - @Override -@@ -118,6 +120,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { - this.setStrength(compound.getIntOr("Strength", 0)); - super.readAdditionalSaveData(compound); - this.setVariant(compound.read("Variant", Llama.Variant.LEGACY_CODEC).orElse(Llama.Variant.DEFAULT)); -+ this.shouldJoinCaravan = compound.getBooleanOr("Purpur.ShouldJoinCaravan", true); // Purpur - Llama API - } - - @Override -@@ -399,6 +402,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { - - public void leaveCaravan() { - if (this.caravanHead != null) { -+ new org.purpurmc.purpur.event.entity.LlamaLeaveCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity()).callEvent(); // Purpur - Llama API - this.caravanHead.caravanTail = null; - } - -@@ -406,6 +410,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { - } - - public void joinCaravan(Llama caravanHead) { -+ if (!this.level().purpurConfig.llamaJoinCaravans || !shouldJoinCaravan || !new org.purpurmc.purpur.event.entity.LlamaJoinCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity(), (org.bukkit.entity.Llama) caravanHead.getBukkitEntity()).callEvent()) return; // Purpur - Llama API // Purpur - Config to disable Llama caravans - this.caravanHead = caravanHead; - this.caravanHead.caravanTail = this; - } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Endermite.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Endermite.java.patch deleted file mode 100644 index 34811f4db..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Endermite.java.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java -index 7fad96756972308e71fd38033f06148467a7aecd..37eaed1455f34011c24170ca0b05f606bd03fac0 100644 ---- a/net/minecraft/world/entity/monster/Endermite.java -+++ b/net/minecraft/world/entity/monster/Endermite.java -@@ -29,12 +29,23 @@ public class Endermite extends Monster { - private static final int MAX_LIFE = 2400; - private static final int DEFAULT_LIFE = 0; - public int life = 0; -+ private boolean isPlayerSpawned; // Purpur - Add back player spawned endermite API - - public Endermite(EntityType entityType, Level level) { - super(entityType, level); - this.xpReward = 3; - } - -+ // Purpur start - Add back player spawned endermite API -+ public boolean isPlayerSpawned() { -+ return this.isPlayerSpawned; -+ } -+ -+ public void setPlayerSpawned(boolean playerSpawned) { -+ this.isPlayerSpawned = playerSpawned; -+ } -+ // Purpur end - Add back player spawned endermite API -+ - @Override - protected void registerGoals() { - this.goalSelector.addGoal(1, new FloatGoal(this)); -@@ -80,12 +91,14 @@ public class Endermite extends Monster { - public void readAdditionalSaveData(CompoundTag compound) { - super.readAdditionalSaveData(compound); - this.life = compound.getIntOr("Lifetime", 0); -+ this.isPlayerSpawned = compound.getBooleanOr("PlayerSpawned", false); // Purpur - Add back player spawned endermite API - } - - @Override - public void addAdditionalSaveData(CompoundTag compound) { - super.addAdditionalSaveData(compound); - compound.putInt("Lifetime", this.life); -+ compound.putBoolean("PlayerSpawned", this.isPlayerSpawned); // Purpur - Add back player spawned endermite API - } - - @Override diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/crafting/Ingredient.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/crafting/Ingredient.java.patch deleted file mode 100644 index 222efb182..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/crafting/Ingredient.java.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/crafting/Ingredient.java b/net/minecraft/world/item/crafting/Ingredient.java -index 879c8fe1f20decc793cfa39e686b61d521bd76ba..9c383a1028988cdd3de8b29ba72a4d7bd2a37c7e 100644 ---- a/net/minecraft/world/item/crafting/Ingredient.java -+++ b/net/minecraft/world/item/crafting/Ingredient.java -@@ -36,6 +36,7 @@ public final class Ingredient implements StackedContents.IngredientInfo itemStacks; // Paper - Improve exact choice recipe ingredients -+ public Predicate predicate; // Purpur - Add predicate to recipe's ExactChoice ingredient - - public boolean isExact() { - return this.itemStacks != null; -@@ -88,6 +89,11 @@ public final class Ingredient implements StackedContents.IngredientInfo -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/entity/ConduitBlockEntity.java b/net/minecraft/world/level/block/entity/ConduitBlockEntity.java -index 2f07a23a6151a4dfb28ddc0ab38ec2abefcdd27c..aeb10f21cd9dab3b134d1d8478083453dc37e3f2 100644 ---- a/net/minecraft/world/level/block/entity/ConduitBlockEntity.java -+++ b/net/minecraft/world/level/block/entity/ConduitBlockEntity.java -@@ -151,7 +151,7 @@ public class ConduitBlockEntity extends BlockEntity { - BlockPos blockPos1 = pos.offset(i, i1, i2x); - BlockState blockState = level.getBlockState(blockPos1); - -- for (Block block : VALID_BLOCKS) { -+ for (Block block : level.purpurConfig.conduitBlocks) { // Purpur - Conduit behavior configuration - if (blockState.is(block)) { - positions.add(blockPos1); - } -@@ -166,13 +166,13 @@ public class ConduitBlockEntity extends BlockEntity { - - private static void applyEffects(Level level, BlockPos pos, List positions) { - // CraftBukkit start -- ConduitBlockEntity.applyEffects(level, pos, ConduitBlockEntity.getRange(positions)); -+ ConduitBlockEntity.applyEffects(level, pos, ConduitBlockEntity.getRange(positions, level)); // Purpur - Conduit behavior configuration - } - -- public static int getRange(List positions) { -+ public static int getRange(List positions, Level level) { // Purpur - Conduit behavior configuration - // CraftBukkit end - int size = positions.size(); -- int i = size / 7 * 16; -+ int i = size / 7 * level.purpurConfig.conduitDistance; // Purpur - Conduit behavior configuration - // CraftBukkit start - return i; - } -@@ -209,17 +209,17 @@ public class ConduitBlockEntity extends BlockEntity { - blockEntity.destroyTargetUUID = null; - } else if (blockEntity.destroyTarget == null) { - List entitiesOfClass = level.getEntitiesOfClass( -- LivingEntity.class, getDestroyRangeAABB(pos), collidedEntity -> collidedEntity instanceof Enemy && collidedEntity.isInWaterOrRain() -+ LivingEntity.class, getDestroyRangeAABB(pos, level), collidedEntity -> collidedEntity instanceof Enemy && collidedEntity.isInWaterOrRain() // Purpur - Conduit behavior configuration - ); - if (!entitiesOfClass.isEmpty()) { - blockEntity.destroyTarget = entitiesOfClass.get(level.random.nextInt(entitiesOfClass.size())); - } -- } else if (!blockEntity.destroyTarget.isAlive() || !pos.closerThan(blockEntity.destroyTarget.blockPosition(), 8.0)) { -+ } else if (!blockEntity.destroyTarget.isAlive() || !pos.closerThan(blockEntity.destroyTarget.blockPosition(), level.purpurConfig.conduitDamageDistance)) { // Purpur - Conduit behavior configuration - blockEntity.destroyTarget = null; - } - - if (damageTarget && blockEntity.destroyTarget != null) { // CraftBukkit -- if (blockEntity.destroyTarget.hurtServer((net.minecraft.server.level.ServerLevel) level, level.damageSources().magic().eventBlockDamager(level, pos), 4.0F)) // CraftBukkit -+ if (blockEntity.destroyTarget.hurtServer((net.minecraft.server.level.ServerLevel) level, level.damageSources().magic().eventBlockDamager(level, pos), level.purpurConfig.conduitDamageAmount)) // CraftBukkit // Purpur - Conduit behavior configuration - level.playSound( - null, - blockEntity.destroyTarget.getX(), -@@ -249,16 +249,22 @@ public class ConduitBlockEntity extends BlockEntity { - } - - public static AABB getDestroyRangeAABB(BlockPos pos) { -+ // Purpur start - Conduit behavior configuration -+ return getDestroyRangeAABB(pos, null); -+ } -+ -+ private static AABB getDestroyRangeAABB(BlockPos pos, Level level) { -+ // Purpur end - Conduit behavior configuration - int x = pos.getX(); - int y = pos.getY(); - int z = pos.getZ(); -- return new AABB(x, y, z, x + 1, y + 1, z + 1).inflate(8.0); -+ return new AABB(x, y, z, x + 1, y + 1, z + 1).inflate(level == null ? 8.0 : level.purpurConfig.conduitDamageDistance); // Purpur - Conduit behavior configuration - } - - @Nullable - private static LivingEntity findDestroyTarget(Level level, BlockPos pos, UUID targetId) { - List entitiesOfClass = level.getEntitiesOfClass( -- LivingEntity.class, getDestroyRangeAABB(pos), collidedEntity -> collidedEntity.getUUID().equals(targetId) -+ LivingEntity.class, getDestroyRangeAABB(pos, level), collidedEntity -> collidedEntity.getUUID().equals(targetId) // Purpur - Conduit behavior configuration - ); - return entitiesOfClass.size() == 1 ? entitiesOfClass.get(0) : null; - } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch deleted file mode 100644 index d95ad5bf0..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java b/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java -index 4b2462ece4eb5abb76ea9259b3e6a77f8a8e4e07..d35d04823e5d0de4487310caadd013f7dab1f419 100644 ---- a/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java -+++ b/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java -@@ -31,6 +31,7 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable - private static final RandomSource RANDOM = RandomSource.create(); - @Nullable - private Component name; -+ private int lapis = 0; // Purpur - Enchantment Table Persists Lapis - - public EnchantingTableBlockEntity(BlockPos pos, BlockState state) { - super(BlockEntityType.ENCHANTING_TABLE, pos, state); -@@ -42,12 +43,14 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable - if (this.hasCustomName()) { - tag.store("CustomName", ComponentSerialization.CODEC, registries.createSerializationContext(NbtOps.INSTANCE), this.name); - } -+ tag.putInt("Purpur.Lapis", this.lapis); // Purpur - Enchantment Table Persists Lapis - } - - @Override - protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { - super.loadAdditional(tag, registries); - this.name = parseCustomNameSafe(tag.get("CustomName"), registries); -+ this.lapis = tag.getIntOr("Purpur.Lapis", 0); // Purpur - Enchantment Table Persists Lapis - } - - public static void bookAnimationTick(Level level, BlockPos pos, BlockState state, EnchantingTableBlockEntity enchantingTable) { -@@ -139,4 +142,14 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable - public void removeComponentsFromTag(CompoundTag tag) { - tag.remove("CustomName"); - } -+ -+ // Purpur start - Enchantment Table Persists Lapis -+ public int getLapis() { -+ return this.lapis; -+ } -+ -+ public void setLapis(int lapis) { -+ this.lapis = lapis; -+ } -+ // Purpur end - Enchantment Table Persists Lapis - } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch deleted file mode 100644 index 3e6261b3d..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch +++ /dev/null @@ -1,18 +0,0 @@ -From 10208bcef5c949e133092f588296ebb6e22f36d8 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/chunk/storage/EntityStorage.java b/net/minecraft/world/level/chunk/storage/EntityStorage.java -index f9fb1380be9cbe960127c208c65c19f770e50b6d..17315201b8d3546058e2440b8fb8a5bb465f1259 100644 ---- a/net/minecraft/world/level/chunk/storage/EntityStorage.java -+++ b/net/minecraft/world/level/chunk/storage/EntityStorage.java -@@ -100,6 +100,7 @@ public class EntityStorage implements EntityPersistentStorage { - } - // Paper end - Entity load/save limit per chunk - CompoundTag compoundTag1 = new CompoundTag(); -+ if (!entity.canSaveToDisk()) return; // Purpur - Add canSaveToDisk to Entity - if (entity.save(compoundTag1)) { - listTag.add(compoundTag1); - } From 503c6f4641d05ab1cde532ff9801fd6ad5631379 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 1 Jun 2025 14:58:14 -0700 Subject: [PATCH 114/289] all feature patches applied?? that was too easy... --- .../0001-Ridables.patch | 605 +++++++++--------- ...-Configurable-entity-base-attributes.patch | 280 ++++---- .../0003-Barrels-and-enderchests-6-rows.patch | 12 +- .../0004-Giants-AI-settings.patch | 6 +- .../0005-Chickens-can-retaliate.patch | 8 +- ...-Minecart-settings-and-WASD-controls.patch | 14 +- ...0007-Villagers-follow-emerald-blocks.patch | 26 +- .../0008-Implement-elytra-settings.patch | 20 +- .../0009-Configurable-jockey-options.patch | 20 +- ...ed-to-crystals-and-crystals-shoot-ph.patch | 16 +- .../0011-Phantoms-burn-in-light.patch | 10 +- ...e-entity-breeding-times-configurable.patch | 120 ++-- ...mes-from-item-forms-of-entities-to-e.patch | 16 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 6 +- ...fing-override-to-everything-affected.patch | 62 +- ...0016-Add-EntityTeleportHinderedEvent.patch | 8 +- ...oggle-for-water-sensitive-mob-damage.patch | 234 +++---- ...018-API-for-any-mob-to-burn-daylight.patch | 112 ++-- ...turally-aggressive-to-players-chance.patch | 26 +- .../0020-Mobs-always-drop-experience.patch | 224 +++---- 20 files changed, 907 insertions(+), 918 deletions(-) rename purpur-server/minecraft-patches/{unapplied-features => features}/0001-Ridables.patch (90%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0002-Configurable-entity-base-attributes.patch (87%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0003-Barrels-and-enderchests-6-rows.patch (95%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0004-Giants-AI-settings.patch (93%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0005-Chickens-can-retaliate.patch (91%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0006-Minecart-settings-and-WASD-controls.patch (93%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0007-Villagers-follow-emerald-blocks.patch (86%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0008-Implement-elytra-settings.patch (83%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0009-Configurable-jockey-options.patch (90%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch (94%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0011-Phantoms-burn-in-light.patch (88%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0012-Make-entity-breeding-times-configurable.patch (84%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch (91%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch (98%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0015-Add-mobGriefing-override-to-everything-affected.patch (92%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0016-Add-EntityTeleportHinderedEvent.patch (94%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0017-Toggle-for-water-sensitive-mob-damage.patch (85%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0018-API-for-any-mob-to-burn-daylight.patch (72%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0019-Cows-naturally-aggressive-to-players-chance.patch (82%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0020-Mobs-always-drop-experience.patch (85%) diff --git a/purpur-server/minecraft-patches/unapplied-features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch similarity index 90% rename from purpur-server/minecraft-patches/unapplied-features/0001-Ridables.patch rename to purpur-server/minecraft-patches/features/0001-Ridables.patch index 009aa9ee9..4703d4bed 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Ridables diff --git a/net/minecraft/gametest/framework/GameTestHelper.java b/net/minecraft/gametest/framework/GameTestHelper.java -index fa7a2a85adf7758a753c54a7cf75cc667922d3d7..b0a86aac9603e72062f59dbe67c88ed8f07023e3 100644 +index 61ab8b508d2b614d0f05ae4cc23dc214f8e95a1d..d6e8bd3b302f821b286b15db3d66c8b2a9493ef5 100644 --- a/net/minecraft/gametest/framework/GameTestHelper.java +++ b/net/minecraft/gametest/framework/GameTestHelper.java @@ -294,6 +294,8 @@ public class GameTestHelper { @@ -18,34 +18,34 @@ index fa7a2a85adf7758a753c54a7cf75cc667922d3d7..b0a86aac9603e72062f59dbe67c88ed8 public boolean isClientAuthoritative() { return false; diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 924dc9a32cd78f37078ff47cde54e61844572f47..d1e33c3ed23f4c68694ec3628c64e87dcbc916d9 100644 +index 096ee3a095468a7d0577f9adc7a9bf7cccc4727d..cf3d17009faee82e659b2ca6cabfae70abf96b8a 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1743,6 +1743,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - BlockPhysicsEvent serverLevel.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent serverLevel.updateLagCompensationTick(); // Paper - lag compensation - net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers + serverLevel.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur - Ridables profilerFiller.push(() -> serverLevel + " " + serverLevel.dimension().location()); /* Drop global time updates if (this.tickCount % 20 == 0) { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index f3f53791d4c5532434abc281a5798ee0e2653da2..56eabc55203756461fc679837b55b30a5c503268 100644 +index e4c88e1f99e684fadec47eeceb82420c879897cf..44a8629ec03c01597c7167c26d801c015157c242 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -213,6 +213,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -215,6 +215,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe + public final java.util.UUID uuid; 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) + public boolean hasRidableMoveEvent = false; // Purpur - Ridables @Override public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 5ced523477c2b86e2b46182a77a9d991cf4cdd1f..f55dc4affffd495b4c02b77c8a60f172c1c6cf79 100644 +index 14a7b040e9f5609a0e08783b60a767618a192de7..0c489a6d3357ed0d3dc9341440b87623d007da3f 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -792,6 +792,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -761,6 +761,15 @@ public class ServerPlayer extends Player { this.trackEnteredOrExitedLavaOnVehicle(); this.updatePlayerAttributes(); this.advancements.flushDirty(this, true); @@ -62,10 +62,10 @@ index 5ced523477c2b86e2b46182a77a9d991cf4cdd1f..f55dc4affffd495b4c02b77c8a60f172 private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index c6b2591eb8ba7005919ea4b885f95c4d603305b6..9f695e97d247b24b12a4a115bfb012c7e344ccf8 100644 +index 7cdb4d46bb0ebdece3cdbe0dc2c156fe211da0d0..58be234e80a0c55642ba66a5001bac784c420a95 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2831,6 +2831,8 @@ public class ServerGamePacketListenerImpl +@@ -2773,6 +2773,8 @@ public class ServerGamePacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -75,10 +75,10 @@ index c6b2591eb8ba7005919ea4b885f95c4d603305b6..9f695e97d247b24b12a4a115bfb012c7 if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index b8a0abd1cbdc0c86ae9e68ebaeec14cd4728450e..05b936babba4fb9847dedb823406d06fa79a95c2 100644 +index fe1b49288dabc8aecfcae151b40fa76d633fc8c2..bce2b06cd7c0b9928a6538ddcd370f2c4d84a9ae 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -3110,6 +3110,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3069,6 +3069,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -92,7 +92,7 @@ index b8a0abd1cbdc0c86ae9e68ebaeec14cd4728450e..05b936babba4fb9847dedb823406d06f this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3151,6 +3158,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3110,6 +3117,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -107,7 +107,7 @@ index b8a0abd1cbdc0c86ae9e68ebaeec14cd4728450e..05b936babba4fb9847dedb823406d06f if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5153,4 +5168,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5079,4 +5094,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -153,10 +153,10 @@ index b8a0abd1cbdc0c86ae9e68ebaeec14cd4728450e..05b936babba4fb9847dedb823406d06f + // Purpur end - Ridables } diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java -index bda521cca91f070139f5e9bdef6a50e1497f53ff..351f92e1627f465a9a292d4a5e5c256a8e323ab3 100644 +index f0c452ddc4b299a930de261722cc41a89aa78eeb..8e8ddab59de508c84c4182e105a11554387dcce0 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java -@@ -33,6 +33,19 @@ public class GlowSquid extends Squid { +@@ -34,6 +34,19 @@ public class GlowSquid extends Squid { } // Purpur end - Flying squids! Oh my! @@ -177,10 +177,10 @@ index bda521cca91f070139f5e9bdef6a50e1497f53ff..351f92e1627f465a9a292d4a5e5c256a protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 20d9856daa5ef4c42010381091c2a85e0755fa77..133da6ac0fff416c5849b64f053ca4cd105d00ac 100644 +index 65cb0a0cfa3d75e4d1083b7e6b22ca1b2682dc49..e78d30d8fdfcb1a530bf3380251fabd0c9a18f46 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -226,9 +226,9 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -238,9 +238,9 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin protected int noActionTime; public float lastHurt; public boolean jumping; @@ -193,7 +193,7 @@ index 20d9856daa5ef4c42010381091c2a85e0755fa77..133da6ac0fff416c5849b64f053ca4cd protected InterpolationHandler interpolation = new InterpolationHandler(this); protected double lerpYHeadRot; protected int lerpHeadSteps; -@@ -277,7 +277,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -290,7 +290,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin protected LivingEntity(EntityType entityType, Level level) { super(entityType, level); @@ -202,15 +202,15 @@ index 20d9856daa5ef4c42010381091c2a85e0755fa77..133da6ac0fff416c5849b64f053ca4cd this.craftAttributes = new org.bukkit.craftbukkit.attribute.CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - this.setHealth(this.getMaxHealth()) inlined and simplified to skip the instanceof check for Player, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, this.getMaxHealth()); -@@ -350,6 +350,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - .add(Attributes.MOVEMENT_EFFICIENCY) - .add(Attributes.ATTACK_KNOCKBACK); +@@ -364,6 +364,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin + .add(Attributes.CAMERA_DISTANCE) + .add(Attributes.WAYPOINT_TRANSMIT_RANGE); } + public boolean shouldSendAttribute(Attribute attribute) { return true; } // Purpur - Ridables @Override protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) { -@@ -3577,8 +3578,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3629,8 +3630,10 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin this.pushEntities(); profilerFiller.pop(); // Paper start - Add EntityMoveEvent @@ -223,7 +223,7 @@ index 20d9856daa5ef4c42010381091c2a85e0755fa77..133da6ac0fff416c5849b64f053ca4cd 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()); -@@ -3588,6 +3591,21 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3640,6 +3643,21 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin this.absSnapTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -246,10 +246,10 @@ index 20d9856daa5ef4c42010381091c2a85e0755fa77..133da6ac0fff416c5849b64f053ca4cd // Paper end - Add EntityMoveEvent if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterOrRain()) { diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index e3b804f2d612ed7971db450aeea6768109b63470..ca1d0164c90e695731f05de39c1d2fff947ecfc1 100644 +index 9784ae86390748bf72e2cc75d67b99f766335ee8..3215ca469e0e469089a559672739e91c9db0edaf 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -142,8 +142,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -145,8 +145,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab super(entityType, level); this.goalSelector = new GoalSelector(); this.targetSelector = new GoalSelector(); @@ -260,7 +260,7 @@ index e3b804f2d612ed7971db450aeea6768109b63470..ca1d0164c90e695731f05de39c1d2fff this.jumpControl = new JumpControl(this); this.bodyRotationControl = this.createBodyControl(); this.navigation = this.createNavigation(level); -@@ -1279,7 +1279,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1300,7 +1300,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } protected InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -268,8 +268,8 @@ index e3b804f2d612ed7971db450aeea6768109b63470..ca1d0164c90e695731f05de39c1d2fff + return tryRide(player, hand); // Purpur - Ridables } - public boolean isWithinRestriction() { -@@ -1591,4 +1591,58 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab + public boolean isWithinHome() { +@@ -1617,4 +1617,58 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.getNavigation().updatePathfinderMaxVisitedNodes(); } } @@ -329,7 +329,7 @@ index e3b804f2d612ed7971db450aeea6768109b63470..ca1d0164c90e695731f05de39c1d2fff + // Purpur end - Ridables } diff --git a/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/net/minecraft/world/entity/ai/attributes/AttributeMap.java -index bed9b564c493cd84bf53fc49368fda736f3fbc2b..23576e631ad4a12ec3ff3630be253738534588f3 100644 +index fdb02fc40579866167e8cc9bcefbd961588b53a6..7dd8c1c8e27410854ce1ee90defc607c2710b5a2 100644 --- a/net/minecraft/world/entity/ai/attributes/AttributeMap.java +++ b/net/minecraft/world/entity/ai/attributes/AttributeMap.java @@ -18,14 +18,21 @@ public class AttributeMap { @@ -366,10 +366,10 @@ index bed9b564c493cd84bf53fc49368fda736f3fbc2b..23576e631ad4a12ec3ff3630be253738 @Nullable diff --git a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -index e6fd15c3172a951d6551cf3fb42f92f39f1cf7b8..75d8fe03558ba38caf46c826dfea5208f88bde52 100644 +index 26ffe98c94b2aaf61bf1693e86e8e7962e892a09..4bb7a8955182d786a09fd2667b37a93373ff47be 100644 --- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -@@ -131,7 +131,7 @@ public class DefaultAttributes { +@@ -133,7 +133,7 @@ public class DefaultAttributes { .put(EntityType.OCELOT, Ocelot.createAttributes().build()) .put(EntityType.PANDA, Panda.createAttributes().build()) .put(EntityType.PARROT, Parrot.createAttributes().build()) @@ -379,7 +379,7 @@ index e6fd15c3172a951d6551cf3fb42f92f39f1cf7b8..75d8fe03558ba38caf46c826dfea5208 .put(EntityType.PIGLIN, Piglin.createAttributes().build()) .put(EntityType.PIGLIN_BRUTE, PiglinBrute.createAttributes().build()) diff --git a/net/minecraft/world/entity/ai/control/MoveControl.java b/net/minecraft/world/entity/ai/control/MoveControl.java -index cdd85c11a214db4829305eb54e0de9670a9241ac..88adfbb7998515f1f64b2d4121549179dc719375 100644 +index b6921582adef6f4c48de4dcffd6873ac0f909a08..89ee325b26ec3a647f55e45c9122ff4196433a43 100644 --- a/net/minecraft/world/entity/ai/control/MoveControl.java +++ b/net/minecraft/world/entity/ai/control/MoveControl.java @@ -29,6 +29,20 @@ public class MoveControl implements Control { @@ -426,10 +426,10 @@ index d7f9b3b2b1077ea10e8f64b87c8f4c4354e90858..713f62b34a91fa76f40e49a5e390145f this.lookAtCooldown--; this.getYRotD().ifPresent(rotationWanted -> this.mob.yHeadRot = this.rotateTowards(this.mob.yHeadRot, rotationWanted + 20.0F, this.yMaxRotSpeed)); diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java -index ed8920bb6d29ce49626bc716aa2c2ce938f6d92b..99845dde0c633714acefb0bb482d8422d946dd46 100644 +index c1c9d056f5c78d26c777728c09b2481f9ccd1c3b..ed4016af3532f33023a3267cd0daa10757765fa3 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java -@@ -43,11 +43,58 @@ public class Bat extends AmbientCreature { +@@ -44,11 +44,58 @@ public class Bat extends AmbientCreature { public Bat(EntityType entityType, Level level) { super(entityType, level); @@ -488,7 +488,7 @@ index ed8920bb6d29ce49626bc716aa2c2ce938f6d92b..99845dde0c633714acefb0bb482d8422 @Override public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; -@@ -99,7 +146,7 @@ public class Bat extends AmbientCreature { +@@ -100,7 +147,7 @@ public class Bat extends AmbientCreature { } public static AttributeSupplier.Builder createAttributes() { @@ -497,7 +497,7 @@ index ed8920bb6d29ce49626bc716aa2c2ce938f6d92b..99845dde0c633714acefb0bb482d8422 } public boolean isResting() { -@@ -130,6 +177,14 @@ public class Bat extends AmbientCreature { +@@ -131,6 +178,14 @@ public class Bat extends AmbientCreature { @Override protected void customServerAiStep(ServerLevel level) { @@ -541,10 +541,10 @@ index 4e81bc7215c845b316bcd46ce29f49af7f986088..61e7300bbf272398b2faebf5e537d9c2 // CraftBukkit end player.playSound(SoundEvents.COW_MILK, 1.0F, 1.0F); diff --git a/net/minecraft/world/entity/animal/AbstractFish.java b/net/minecraft/world/entity/animal/AbstractFish.java -index 363582056339f64dbe7e686b61451c095c538c00..2cf95769ec3a1662443ea31e1bc2ba01cb7b523e 100644 +index b18765bb91b4015bef326663dbc8966945929996..0002e39e2670ad92849ccc0aada163b174fe1ec2 100644 --- a/net/minecraft/world/entity/animal/AbstractFish.java +++ b/net/minecraft/world/entity/animal/AbstractFish.java -@@ -88,6 +88,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -90,6 +90,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { @Override protected void registerGoals() { super.registerGoals(); @@ -552,7 +552,7 @@ index 363582056339f64dbe7e686b61451c095c538c00..2cf95769ec3a1662443ea31e1bc2ba01 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)); -@@ -101,7 +102,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -103,7 +104,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { @Override public void travel(Vec3 travelVector) { if (this.isInWater()) { @@ -561,7 +561,7 @@ index 363582056339f64dbe7e686b61451c095c538c00..2cf95769ec3a1662443ea31e1bc2ba01 this.move(MoverType.SELF, this.getDeltaMovement()); this.setDeltaMovement(this.getDeltaMovement().scale(0.9)); if (this.getTarget() == null) { -@@ -161,7 +162,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -163,7 +164,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { protected void playStepSound(BlockPos pos, BlockState block) { } @@ -570,7 +570,7 @@ index 363582056339f64dbe7e686b61451c095c538c00..2cf95769ec3a1662443ea31e1bc2ba01 private final AbstractFish fish; FishMoveControl(AbstractFish mob) { -@@ -169,14 +170,22 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { +@@ -171,14 +172,22 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { this.fish = mob; } @@ -596,10 +596,10 @@ index 363582056339f64dbe7e686b61451c095c538c00..2cf95769ec3a1662443ea31e1bc2ba01 double d = this.wantedX - this.fish.getX(); double d1 = this.wantedY - this.fish.getY(); diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index 585131365c40136cf8a8a715b077982091ee38d5..65ee07e09bb9bafb60abeec4916fdbb065fc26eb 100644 +index 5588eb85a101f118fcaeb0a085f4d3b69498c72d..be1774d479bfcd349e62ecb69bf7367d6eea7d75 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -149,6 +149,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -150,6 +150,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { public Bee(EntityType entityType, Level level) { super(entityType, level); @@ -607,7 +607,7 @@ index 585131365c40136cf8a8a715b077982091ee38d5..65ee07e09bb9bafb60abeec4916fdbb0 // Paper start - Fix MC-167279 class BeeFlyingMoveControl extends FlyingMoveControl { public BeeFlyingMoveControl(final Mob entity, final int maxPitchChange, final boolean noGravity) { -@@ -157,11 +158,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -158,11 +159,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override public void tick() { @@ -632,7 +632,7 @@ index 585131365c40136cf8a8a715b077982091ee38d5..65ee07e09bb9bafb60abeec4916fdbb0 } this.moveControl = new BeeFlyingMoveControl(this, 20, true); // Paper end - Fix MC-167279 -@@ -173,6 +187,40 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -174,6 +188,40 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.setPathfindingMalus(PathType.FENCE, -1.0F); } @@ -673,7 +673,7 @@ index 585131365c40136cf8a8a715b077982091ee38d5..65ee07e09bb9bafb60abeec4916fdbb0 @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); -@@ -187,6 +235,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -188,6 +236,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override protected void registerGoals() { @@ -681,7 +681,7 @@ index 585131365c40136cf8a8a715b077982091ee38d5..65ee07e09bb9bafb60abeec4916fdbb0 this.goalSelector.addGoal(0, new Bee.BeeAttackGoal(this, 1.4F, true)); this.goalSelector.addGoal(1, new Bee.BeeEnterHiveGoal()); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0)); -@@ -204,6 +253,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -205,6 +254,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)); @@ -689,7 +689,7 @@ index 585131365c40136cf8a8a715b077982091ee38d5..65ee07e09bb9bafb60abeec4916fdbb0 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)); -@@ -1083,15 +1133,15 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -1081,15 +1131,15 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } } @@ -709,10 +709,10 @@ index 585131365c40136cf8a8a715b077982091ee38d5..65ee07e09bb9bafb60abeec4916fdbb0 } diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index 7894db23663c4647742f543195b610bd7e1f3360..74a44f97dcf4fabeac28a2f8b31e9b717d47ea49 100644 +index 5b9d8c85f91396287b0deb4deac30e2c136cc461..a960c3a4854f7d2343747d463d1d505b2e39d16b 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java -@@ -91,10 +91,36 @@ public class Cat extends TamableAnimal { +@@ -92,10 +92,36 @@ public class Cat extends TamableAnimal { this.reassessTameGoals(); } @@ -749,7 +749,7 @@ index 7894db23663c4647742f543195b610bd7e1f3360..74a44f97dcf4fabeac28a2f8b31e9b71 this.goalSelector.addGoal(1, new TamableAnimal.TamableAnimalPanicGoal(1.5)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(3, new Cat.CatRelaxOnOwnerGoal(this)); -@@ -107,6 +133,7 @@ public class Cat extends TamableAnimal { +@@ -108,6 +134,7 @@ public class Cat extends TamableAnimal { this.goalSelector.addGoal(10, new BreedGoal(this, 0.8)); this.goalSelector.addGoal(11, new WaterAvoidingRandomStrollGoal(this, 0.8, 1.0000001E-5F)); this.goalSelector.addGoal(12, new LookAtPlayerGoal(this, Player.class, 10.0F)); @@ -757,7 +757,7 @@ index 7894db23663c4647742f543195b610bd7e1f3360..74a44f97dcf4fabeac28a2f8b31e9b71 this.targetSelector.addGoal(1, new NonTameRandomTargetGoal<>(this, Rabbit.class, false, null)); this.targetSelector.addGoal(1, new NonTameRandomTargetGoal<>(this, Turtle.class, false, Turtle.BABY_ON_LAND_SELECTOR)); } -@@ -373,6 +400,7 @@ public class Cat extends TamableAnimal { +@@ -374,6 +401,7 @@ public class Cat extends TamableAnimal { @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -766,10 +766,10 @@ index 7894db23663c4647742f543195b610bd7e1f3360..74a44f97dcf4fabeac28a2f8b31e9b71 Item item = itemInHand.getItem(); if (this.isTame()) { diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java -index 351c29ffe842cc1406c36361520057ab046ca649..8708a6e5a493b6150671b7bdd6b9971371ef309c 100644 +index da408c313d898413dee928e9c80501ddf56d75e8..26732fde9894816cb83ba1249b2ac9b47e2b639b 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java -@@ -71,9 +71,27 @@ public class Chicken extends Animal { +@@ -72,9 +72,27 @@ public class Chicken extends Animal { this.setPathfindingMalus(PathType.WATER, 0.0F); } @@ -821,10 +821,10 @@ index 75509be5b9162c1f7f91f2290ef2d80171ae61df..651c9243902e3c48fb438913974e996d public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index 42c79a88679d2100528150d490554a75589e1ad8..ff1b8c93baccf1d417ef0f9338a6f8d66716dafc 100644 +index 176425cbacea381990386d440059b768a583af98..802c536659d45d0974fe788535ca326b86f90551 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java -@@ -28,6 +28,23 @@ public class Cow extends AbstractCow { +@@ -29,6 +29,23 @@ public class Cow extends AbstractCow { super(entityType, level); } @@ -849,10 +849,10 @@ index 42c79a88679d2100528150d490554a75589e1ad8..ff1b8c93baccf1d417ef0f9338a6f8d6 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java -index bca2e4659f4afdd7106f77e32af1943e4d276f5e..144b163a4a82997ca88e906bbadcf5835636aece 100644 +index f4a6f17bb158146e7287ab46930cd57c0ffb9454..213421070ce6a356aecc31ef7b13701b4403952a 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java -@@ -74,14 +74,82 @@ public class Dolphin extends AgeableWaterCreature { +@@ -75,14 +75,82 @@ public class Dolphin extends AgeableWaterCreature { @Nullable public BlockPos treasurePos; private boolean isNaturallyAggressiveToPlayers; // Purpur - Dolphins naturally aggressive to players chance @@ -936,7 +936,7 @@ index bca2e4659f4afdd7106f77e32af1943e4d276f5e..144b163a4a82997ca88e906bbadcf583 @Nullable @Override public SpawnGroupData finalizeSpawn( -@@ -158,6 +226,7 @@ public class Dolphin extends AgeableWaterCreature { +@@ -159,6 +227,7 @@ public class Dolphin extends AgeableWaterCreature { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.2000000476837158D, true)); // Purpur - Dolphins naturally aggressive to players chance @@ -944,7 +944,7 @@ index bca2e4659f4afdd7106f77e32af1943e4d276f5e..144b163a4a82997ca88e906bbadcf583 this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this)); this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0)); this.goalSelector.addGoal(4, new RandomSwimmingGoal(this, 1.0, 10)); -@@ -168,6 +237,7 @@ public class Dolphin extends AgeableWaterCreature { +@@ -169,6 +238,7 @@ public class Dolphin extends AgeableWaterCreature { 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.0, 1.0)); @@ -952,7 +952,7 @@ index bca2e4659f4afdd7106f77e32af1943e4d276f5e..144b163a4a82997ca88e906bbadcf583 this.targetSelector.addGoal(1, new HurtByTargetGoal(this, Guardian.class).setAlertOthers()); this.targetSelector.addGoal(2, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (ignored, ignored2) -> isNaturallyAggressiveToPlayers)); // Purpur - Dolphins naturally aggressive to players chance } -@@ -213,7 +283,7 @@ public class Dolphin extends AgeableWaterCreature { +@@ -214,7 +284,7 @@ public class Dolphin extends AgeableWaterCreature { @Override protected boolean canRide(Entity entity) { @@ -961,7 +961,7 @@ index bca2e4659f4afdd7106f77e32af1943e4d276f5e..144b163a4a82997ca88e906bbadcf583 } @Override -@@ -242,6 +312,11 @@ public class Dolphin extends AgeableWaterCreature { +@@ -243,6 +313,11 @@ public class Dolphin extends AgeableWaterCreature { @Override public void tick() { super.tick(); @@ -974,10 +974,10 @@ index bca2e4659f4afdd7106f77e32af1943e4d276f5e..144b163a4a82997ca88e906bbadcf583 this.setAirSupply(this.getMaxAirSupply()); } else { diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 4aae42396bd3abb131efe336d7b774384897671d..eb25d655140e425208ee9eeae24ebb756f1b7306 100644 +index 354c7a41407fc6518965d09bfe3089676b6da794..a81ada76bfd6c4b49d1552f48e2009bc7d8c71d2 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -141,6 +141,44 @@ public class Fox extends Animal { +@@ -142,6 +142,44 @@ public class Fox extends Animal { this.getNavigation().setRequiredPathLength(32.0F); } @@ -1022,7 +1022,7 @@ index 4aae42396bd3abb131efe336d7b774384897671d..eb25d655140e425208ee9eeae24ebb75 @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); -@@ -160,6 +198,7 @@ public class Fox extends Animal { +@@ -161,6 +199,7 @@ public class Fox extends Animal { this, AbstractFish.class, 20, false, false, (entity, level) -> entity instanceof AbstractSchoolingFish ); this.goalSelector.addGoal(0, new Fox.FoxFloatGoal()); @@ -1030,7 +1030,7 @@ index 4aae42396bd3abb131efe336d7b774384897671d..eb25d655140e425208ee9eeae24ebb75 this.goalSelector.addGoal(0, new ClimbOnTopOfPowderSnowGoal(this, this.level())); this.goalSelector.addGoal(1, new Fox.FaceplantGoal()); this.goalSelector.addGoal(2, new Fox.FoxPanicGoal(2.2)); -@@ -185,6 +224,7 @@ public class Fox extends Animal { +@@ -186,6 +225,7 @@ public class Fox extends Animal { 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()); @@ -1038,7 +1038,7 @@ index 4aae42396bd3abb131efe336d7b774384897671d..eb25d655140e425208ee9eeae24ebb75 this.targetSelector .addGoal( 3, -@@ -1118,15 +1158,15 @@ public class Fox extends Animal { +@@ -1115,15 +1155,15 @@ public class Fox extends Animal { } } @@ -1057,7 +1057,7 @@ index 4aae42396bd3abb131efe336d7b774384897671d..eb25d655140e425208ee9eeae24ebb75 } } -@@ -1162,15 +1202,15 @@ public class Fox extends Animal { +@@ -1159,15 +1199,15 @@ public class Fox extends Animal { } } @@ -1077,10 +1077,10 @@ index 4aae42396bd3abb131efe336d7b774384897671d..eb25d655140e425208ee9eeae24ebb75 } } diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java -index 91897447d7ef35af3300443e8eb96340081fed48..3a78342a9ce9b5393a280530b50a8c843e201845 100644 +index 25e0438e1a98dc5f6aaabba8af2295cec871d6f1..d7c330e77c384bba800829bdbe07f6b66695896e 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java -@@ -74,9 +74,28 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -75,9 +75,28 @@ public class IronGolem extends AbstractGolem implements NeutralMob { } // Purpur end - Summoner API @@ -1109,7 +1109,7 @@ index 91897447d7ef35af3300443e8eb96340081fed48..3a78342a9ce9b5393a280530b50a8c84 this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9, 32.0F)); this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6, false)); -@@ -84,6 +103,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -85,6 +104,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)); @@ -1117,7 +1117,7 @@ index 91897447d7ef35af3300443e8eb96340081fed48..3a78342a9ce9b5393a280530b50a8c84 this.targetSelector.addGoal(1, new DefendVillageTargetGoal(this)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); -@@ -272,12 +292,12 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -273,12 +293,12 @@ public class IronGolem extends AbstractGolem implements NeutralMob { protected InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); if (!itemInHand.is(Items.IRON_INGOT)) { @@ -1133,10 +1133,10 @@ index 91897447d7ef35af3300443e8eb96340081fed48..3a78342a9ce9b5393a280530b50a8c84 float f = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; this.playSound(SoundEvents.IRON_GOLEM_REPAIR, 1.0F, f); diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index 0931bab3f52ccc4e405be22559323df90bcc065e..f04342dd4addb2be47533f12a2a475f12c1869f1 100644 +index 32f3d5f66fb61074a2f9db751c0b3e16af9cf3ce..80c25b591e0b9f3f8132cdad27d1896d70293cd2 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -61,6 +61,23 @@ public class MushroomCow extends AbstractCow implements Shearable { +@@ -62,6 +62,23 @@ public class MushroomCow extends AbstractCow implements Shearable { super(entityType, level); } @@ -1160,7 +1160,7 @@ index 0931bab3f52ccc4e405be22559323df90bcc065e..f04342dd4addb2be47533f12a2a475f1 @Override public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); -@@ -121,7 +138,7 @@ public class MushroomCow extends AbstractCow implements Shearable { +@@ -122,7 +139,7 @@ public class MushroomCow extends AbstractCow implements Shearable { java.util.List drops = this.generateDefaultDrops(serverLevel, itemInHand); org.bukkit.event.player.PlayerShearEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemInHand, hand, drops); if (event != null) { @@ -1170,10 +1170,10 @@ index 0931bab3f52ccc4e405be22559323df90bcc065e..f04342dd4addb2be47533f12a2a475f1 // Paper end - custom shear drops } diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index 48c8fdfea8687f37187b6092c285275c12963ea0..b8780911350ac5f4f10acdbed2b13523c8692344 100644 +index a304a09eb20b84033ea9b84cf577749fe842fc57..2aad5800fa4e2fc68fb63ab440dc9d5fccb2d86b 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java -@@ -63,6 +63,23 @@ public class Ocelot extends Animal { +@@ -64,6 +64,23 @@ public class Ocelot extends Animal { this.reassessTrustingGoals(); } @@ -1197,7 +1197,7 @@ index 48c8fdfea8687f37187b6092c285275c12963ea0..b8780911350ac5f4f10acdbed2b13523 public boolean isTrusting() { return this.entityData.get(DATA_TRUSTING); } -@@ -94,12 +111,14 @@ public class Ocelot extends Animal { +@@ -95,12 +112,14 @@ public class Ocelot extends Animal { protected void registerGoals() { this.temptGoal = new Ocelot.OcelotTemptGoal(this, 0.6, itemStack -> itemStack.is(ItemTags.OCELOT_FOOD), true); this.goalSelector.addGoal(1, new FloatGoal(this)); @@ -1213,10 +1213,10 @@ index 48c8fdfea8687f37187b6092c285275c12963ea0..b8780911350ac5f4f10acdbed2b13523 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, false, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/net/minecraft/world/entity/animal/Panda.java b/net/minecraft/world/entity/animal/Panda.java -index ecd85f3e33f80084b9ee06c9ff1f57b73399be50..44af6a2bcb1ba60a487555c5240b38798798b769 100644 +index 44c12820b9b39acc5220db8b8d29a31c0e57526e..cbe493c19cd377c3b284dd9b3ea7bf24fee5cd7c 100644 --- a/net/minecraft/world/entity/animal/Panda.java +++ b/net/minecraft/world/entity/animal/Panda.java -@@ -106,6 +106,32 @@ public class Panda extends Animal { +@@ -107,6 +107,32 @@ public class Panda extends Animal { } } @@ -1249,7 +1249,7 @@ index ecd85f3e33f80084b9ee06c9ff1f57b73399be50..44af6a2bcb1ba60a487555c5240b3879 @Override protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) { return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot(); -@@ -259,6 +285,7 @@ public class Panda extends Animal { +@@ -260,6 +286,7 @@ public class Panda extends Animal { @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -1257,7 +1257,7 @@ index ecd85f3e33f80084b9ee06c9ff1f57b73399be50..44af6a2bcb1ba60a487555c5240b3879 this.goalSelector.addGoal(2, new Panda.PandaPanicGoal(this, 2.0)); this.goalSelector.addGoal(2, new Panda.PandaBreedGoal(this, 1.0)); this.goalSelector.addGoal(3, new Panda.PandaAttackGoal(this, 1.2F, true)); -@@ -274,6 +301,7 @@ public class Panda extends Animal { +@@ -275,6 +302,7 @@ public class Panda extends Animal { this.goalSelector.addGoal(12, new Panda.PandaRollGoal(this)); this.goalSelector.addGoal(13, new FollowParentGoal(this, 1.25)); this.goalSelector.addGoal(14, new WaterAvoidingRandomStrollGoal(this, 1.0)); @@ -1265,7 +1265,7 @@ index ecd85f3e33f80084b9ee06c9ff1f57b73399be50..44af6a2bcb1ba60a487555c5240b3879 this.targetSelector.addGoal(1, new Panda.PandaHurtByTargetGoal(this).setAlertOthers(new Class[0])); } -@@ -617,7 +645,7 @@ public class Panda extends Animal { +@@ -618,7 +646,7 @@ public class Panda extends Animal { public InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); if (this.isScared()) { @@ -1274,7 +1274,7 @@ index ecd85f3e33f80084b9ee06c9ff1f57b73399be50..44af6a2bcb1ba60a487555c5240b3879 } else if (this.isOnBack()) { this.setOnBack(false); return InteractionResult.SUCCESS; -@@ -653,7 +681,7 @@ public class Panda extends Animal { +@@ -654,7 +682,7 @@ public class Panda extends Animal { return InteractionResult.SUCCESS_SERVER; } else { @@ -1283,7 +1283,7 @@ index ecd85f3e33f80084b9ee06c9ff1f57b73399be50..44af6a2bcb1ba60a487555c5240b3879 } } -@@ -961,7 +989,7 @@ public class Panda extends Animal { +@@ -962,7 +990,7 @@ public class Panda extends Animal { } } @@ -1292,7 +1292,7 @@ index ecd85f3e33f80084b9ee06c9ff1f57b73399be50..44af6a2bcb1ba60a487555c5240b3879 private final Panda panda; public PandaMoveControl(Panda mob) { -@@ -970,9 +998,9 @@ public class Panda extends Animal { +@@ -971,9 +999,9 @@ public class Panda extends Animal { } @Override @@ -1305,10 +1305,10 @@ index ecd85f3e33f80084b9ee06c9ff1f57b73399be50..44af6a2bcb1ba60a487555c5240b3879 } } diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java -index ca661c215d2eb719392a30c7b917bd622524c4dc..573efbc5f5f4ad0be30868c7faa058e68bf2fd67 100644 +index 50d836960e6b2d7dae760ac648b5999d8c58b785..03e68a5bd1c51da13dafefe002f95884ee5787d0 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java -@@ -129,12 +129,68 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -131,12 +131,68 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { public Parrot(EntityType entityType, Level level) { super(entityType, level); @@ -1378,7 +1378,7 @@ index ca661c215d2eb719392a30c7b917bd622524c4dc..573efbc5f5f4ad0be30868c7faa058e6 @Nullable @Override public SpawnGroupData finalizeSpawn( -@@ -155,9 +211,11 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -157,9 +213,11 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @Override protected void registerGoals() { @@ -1392,10 +1392,10 @@ index ca661c215d2eb719392a30c7b917bd622524c4dc..573efbc5f5f4ad0be30868c7faa058e6 this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0, 5.0F, 1.0F)); diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index 027d47b89d306bf6bc3d5457a163041f6aa7ab49..74d4be1761b9c9b45bf454f187d4454d9ee6a37f 100644 +index 858913db98c6f46867e5f5d3d1231e7f94b669ab..c2ac954b9cdea04450c7d72845568236fff1b686 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java -@@ -65,9 +65,27 @@ public class Pig extends Animal implements ItemSteerable { +@@ -66,9 +66,27 @@ public class Pig extends Animal implements ItemSteerable { super(entityType, level); } @@ -1424,10 +1424,10 @@ index 027d47b89d306bf6bc3d5457a163041f6aa7ab49..74d4be1761b9c9b45bf454f187d4454d this.goalSelector.addGoal(3, new BreedGoal(this, 1.0)); this.goalSelector.addGoal(4, new TemptGoal(this, 1.2, itemStack -> itemStack.is(Items.CARROT_ON_A_STICK), false)); diff --git a/net/minecraft/world/entity/animal/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java -index d018b1a967557cfae0d3227d8f43d281a78a22bc..4561b590b0068bfbcfd990bbf8b6640c0bd1493c 100644 +index 0cbe162c952fe3cba5c33284d766aea514d6a40b..16dcc17778f3bde4c034a12259188d8297685dd9 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java -@@ -59,6 +59,7 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -60,6 +60,7 @@ public class PolarBear extends Animal implements NeutralMob { private int remainingPersistentAngerTime; @Nullable private UUID persistentAngerTarget; @@ -1435,7 +1435,7 @@ index d018b1a967557cfae0d3227d8f43d281a78a22bc..4561b590b0068bfbcfd990bbf8b6640c public PolarBear(EntityType entityType, Level level) { super(entityType, level); -@@ -87,6 +88,34 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -88,6 +89,34 @@ public class PolarBear extends Animal implements NeutralMob { } // Purpur end - Breedable Polar Bears @@ -1470,7 +1470,7 @@ index d018b1a967557cfae0d3227d8f43d281a78a22bc..4561b590b0068bfbcfd990bbf8b6640c @Nullable @Override public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { -@@ -102,6 +131,7 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -103,6 +132,7 @@ public class PolarBear extends Animal implements NeutralMob { protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -1478,7 +1478,7 @@ index d018b1a967557cfae0d3227d8f43d281a78a22bc..4561b590b0068bfbcfd990bbf8b6640c this.goalSelector.addGoal(1, new PolarBear.PolarBearMeleeAttackGoal()); this.goalSelector.addGoal(1, new PanicGoal(this, 2.0, mob -> mob.isBaby() ? DamageTypeTags.PANIC_CAUSES : DamageTypeTags.PANIC_ENVIRONMENTAL_CAUSES)); // Purpur start - Breedable Polar Bears -@@ -114,6 +144,7 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -115,6 +145,7 @@ public class PolarBear extends Animal implements NeutralMob { 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)); @@ -1486,7 +1486,7 @@ index d018b1a967557cfae0d3227d8f43d281a78a22bc..4561b590b0068bfbcfd990bbf8b6640c 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)); -@@ -232,6 +263,12 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -233,6 +264,12 @@ public class PolarBear extends Animal implements NeutralMob { if (!this.level().isClientSide) { this.updatePersistentAnger((ServerLevel)this.level(), true); } @@ -1499,7 +1499,7 @@ index d018b1a967557cfae0d3227d8f43d281a78a22bc..4561b590b0068bfbcfd990bbf8b6640c } @Override -@@ -251,6 +288,7 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -252,6 +289,7 @@ public class PolarBear extends Animal implements NeutralMob { public void setStanding(boolean standing) { this.entityData.set(DATA_STANDING_ID, standing); @@ -1508,10 +1508,10 @@ index d018b1a967557cfae0d3227d8f43d281a78a22bc..4561b590b0068bfbcfd990bbf8b6640c public float getStandingAnimationScale(float partialTick) { diff --git a/net/minecraft/world/entity/animal/Pufferfish.java b/net/minecraft/world/entity/animal/Pufferfish.java -index 4a7201fe9e946fc20ed04e729d00f7986a748bad..c35973498b0abae2dafa63f30ed5e6ca87f6baa5 100644 +index e67f9b26444e3af42feeb0223c1b7c1e536646ba..754cd3c887c22b9b2afb0d70a2c57bfe6b251206 100644 --- a/net/minecraft/world/entity/animal/Pufferfish.java +++ b/net/minecraft/world/entity/animal/Pufferfish.java -@@ -46,6 +46,18 @@ public class Pufferfish extends AbstractFish { +@@ -47,6 +47,18 @@ public class Pufferfish extends AbstractFish { this.refreshDimensions(); } @@ -1531,10 +1531,10 @@ index 4a7201fe9e946fc20ed04e729d00f7986a748bad..c35973498b0abae2dafa63f30ed5e6ca protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index e9445749c5264bd0ce7c426845cb342d34dea713..338a1d3f1352f49ba5b53c55a49abce3ded2b0c0 100644 +index 880cb3bdbd389a798c202c4dd572bf2b74bc0847..4f33044bf7c8fdf867983691b74a7f47b4689267 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java -@@ -90,6 +90,7 @@ public class Rabbit extends Animal { +@@ -91,6 +91,7 @@ public class Rabbit extends Animal { private boolean wasOnGround; private int jumpDelayTicks; public int moreCarrotTicks = 0; @@ -1542,7 +1542,7 @@ index e9445749c5264bd0ce7c426845cb342d34dea713..338a1d3f1352f49ba5b53c55a49abce3 public Rabbit(EntityType entityType, Level level) { super(entityType, level); -@@ -98,9 +99,55 @@ public class Rabbit extends Animal { +@@ -99,9 +100,55 @@ public class Rabbit extends Animal { //this.setSpeedModifier(0.0); // CraftBukkit } @@ -1598,7 +1598,7 @@ index e9445749c5264bd0ce7c426845cb342d34dea713..338a1d3f1352f49ba5b53c55a49abce3 this.goalSelector.addGoal(1, new ClimbOnTopOfPowderSnowGoal(this, this.level())); this.goalSelector.addGoal(1, new Rabbit.RabbitPanicGoal(this, 2.2)); this.goalSelector.addGoal(2, new BreedGoal(this, 0.8)); -@@ -115,6 +162,14 @@ public class Rabbit extends Animal { +@@ -116,6 +163,14 @@ public class Rabbit extends Animal { @Override protected float getJumpPower() { @@ -1613,7 +1613,7 @@ index e9445749c5264bd0ce7c426845cb342d34dea713..338a1d3f1352f49ba5b53c55a49abce3 float f = 0.3F; if (this.moveControl.getSpeedModifier() <= 0.6) { f = 0.2F; -@@ -182,6 +237,12 @@ public class Rabbit extends Animal { +@@ -183,6 +238,12 @@ public class Rabbit extends Animal { @Override public void customServerAiStep(ServerLevel level) { @@ -1626,7 +1626,7 @@ index e9445749c5264bd0ce7c426845cb342d34dea713..338a1d3f1352f49ba5b53c55a49abce3 if (this.jumpDelayTicks > 0) { this.jumpDelayTicks--; } -@@ -510,7 +571,7 @@ public class Rabbit extends Animal { +@@ -511,7 +572,7 @@ public class Rabbit extends Animal { } } @@ -1635,7 +1635,7 @@ index e9445749c5264bd0ce7c426845cb342d34dea713..338a1d3f1352f49ba5b53c55a49abce3 private final Rabbit rabbit; private double nextJumpSpeed; -@@ -520,14 +581,14 @@ public class Rabbit extends Animal { +@@ -521,14 +582,14 @@ public class Rabbit extends Animal { } @Override @@ -1653,10 +1653,10 @@ index e9445749c5264bd0ce7c426845cb342d34dea713..338a1d3f1352f49ba5b53c55a49abce3 @Override diff --git a/net/minecraft/world/entity/animal/Salmon.java b/net/minecraft/world/entity/animal/Salmon.java -index 1786205346bb02835b10676155b65d2f11f0c221..2b60d92eec3192416b0c39ddaa1fa490d15a6137 100644 +index 8a3e1d420263ac53b87ffed026380dcdc4a48285..265b2a6db778cabc1a97726c22c991051e3007fe 100644 --- a/net/minecraft/world/entity/animal/Salmon.java +++ b/net/minecraft/world/entity/animal/Salmon.java -@@ -38,6 +38,18 @@ public class Salmon extends AbstractSchoolingFish { +@@ -39,6 +39,18 @@ public class Salmon extends AbstractSchoolingFish { this.refreshDimensions(); } @@ -1676,10 +1676,10 @@ index 1786205346bb02835b10676155b65d2f11f0c221..2b60d92eec3192416b0c39ddaa1fa490 public int getMaxSchoolSize() { return 5; diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index 67c8f1e82c775818f906eeaa639e55d7c02834c6..aca62391131333d604d21c9aaf2bcea620dc51b3 100644 +index 1a7c14f9307629386af0a62b3e19545728fa3a8d..6c7b218c01f466ccd1d427206c6662e23bea1c0e 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java -@@ -62,12 +62,31 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -63,12 +63,31 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM } // Purpur end - Summoner API @@ -1711,7 +1711,7 @@ index 67c8f1e82c775818f906eeaa639e55d7c02834c6..aca62391131333d604d21c9aaf2bcea6 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Mob.class, 10, true, false, (entity, level) -> entity instanceof Enemy)); } -@@ -112,6 +131,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -113,6 +132,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM return; } @@ -1719,7 +1719,7 @@ index 67c8f1e82c775818f906eeaa639e55d7c02834c6..aca62391131333d604d21c9aaf2bcea6 BlockState blockState = Blocks.SNOW.defaultBlockState(); for (int i = 0; i < 4; i++) { -@@ -154,7 +174,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -155,7 +175,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM org.bukkit.event.player.PlayerShearEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemInHand, hand, drops); if (event != null) { if (event.isCancelled()) { @@ -1728,7 +1728,7 @@ index 67c8f1e82c775818f906eeaa639e55d7c02834c6..aca62391131333d604d21c9aaf2bcea6 } drops = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getDrops()); // Paper end - custom shear drops -@@ -175,7 +195,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -176,7 +196,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM return InteractionResult.SUCCESS; // Purpur end - Snowman drop and put back pumpkin } else { @@ -1813,10 +1813,10 @@ index 2e51e64991d326fc055520b6fefc76e80f7c2d97..21ff0b49a1df9b8a95cb2fdf7b43d9a6 if (noActionTime > 100) { this.squid.movementVector = Vec3.ZERO; diff --git a/net/minecraft/world/entity/animal/TropicalFish.java b/net/minecraft/world/entity/animal/TropicalFish.java -index 89e14f04328995e6491c01321789be0bf9ddd438..d7bea58644dd707b835e0c728b2c89c697c7e554 100644 +index 806fb2561d1eb0fba56dc40ba5c1f306c3105880..cc26b929abd249536659df03a1cafbe83cde6f0f 100644 --- a/net/minecraft/world/entity/animal/TropicalFish.java +++ b/net/minecraft/world/entity/animal/TropicalFish.java -@@ -76,6 +76,18 @@ public class TropicalFish extends AbstractSchoolingFish { +@@ -77,6 +77,18 @@ public class TropicalFish extends AbstractSchoolingFish { super(entityType, level); } @@ -1836,10 +1836,10 @@ index 89e14f04328995e6491c01321789be0bf9ddd438..d7bea58644dd707b835e0c728b2c89c6 return "entity.minecraft.tropical_fish.predefined." + variantId; } diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java -index d24ddf8a585395c0f7b1cd5a61aaea0516636d93..7c97f917b0cc5652c20abdd26428cccad10b8757 100644 +index 8738424b92726f45de2c166a063d46e1071e8b29..4302c302d974bae294d7ffa6f30439f44fe5d0b1 100644 --- a/net/minecraft/world/entity/animal/Turtle.java +++ b/net/minecraft/world/entity/animal/Turtle.java -@@ -85,6 +85,23 @@ public class Turtle extends Animal { +@@ -86,6 +86,23 @@ public class Turtle extends Animal { this.moveControl = new Turtle.TurtleMoveControl(this); } @@ -1863,7 +1863,7 @@ index d24ddf8a585395c0f7b1cd5a61aaea0516636d93..7c97f917b0cc5652c20abdd26428ccca public void setHomePos(BlockPos homePos) { this.homePos = homePos; } -@@ -144,6 +161,7 @@ public class Turtle extends Animal { +@@ -145,6 +162,7 @@ public class Turtle extends Animal { @Override protected void registerGoals() { @@ -1871,7 +1871,7 @@ index d24ddf8a585395c0f7b1cd5a61aaea0516636d93..7c97f917b0cc5652c20abdd26428ccca this.goalSelector.addGoal(0, new Turtle.TurtlePanicGoal(this, 1.2)); this.goalSelector.addGoal(1, new Turtle.TurtleBreedGoal(this, 1.0)); this.goalSelector.addGoal(1, new Turtle.TurtleLayEggGoal(this, 1.0)); -@@ -492,12 +510,14 @@ public class Turtle extends Animal { +@@ -493,12 +511,14 @@ public class Turtle extends Animal { } } @@ -1887,7 +1887,7 @@ index d24ddf8a585395c0f7b1cd5a61aaea0516636d93..7c97f917b0cc5652c20abdd26428ccca } private void updateSpeed() { -@@ -516,7 +536,7 @@ public class Turtle extends Animal { +@@ -517,7 +537,7 @@ public class Turtle extends Animal { } @Override @@ -1896,7 +1896,7 @@ index d24ddf8a585395c0f7b1cd5a61aaea0516636d93..7c97f917b0cc5652c20abdd26428ccca this.updateSpeed(); if (this.operation == MoveControl.Operation.MOVE_TO && !this.turtle.getNavigation().isDone()) { double d = this.wantedX - this.turtle.getX(); -@@ -530,7 +550,7 @@ public class Turtle extends Animal { +@@ -531,7 +551,7 @@ public class Turtle extends Animal { float f = (float)(Mth.atan2(d2, d) * 180.0F / (float)Math.PI) - 90.0F; this.turtle.setYRot(this.rotlerp(this.turtle.getYRot(), f, 90.0F)); this.turtle.yBodyRot = this.turtle.getYRot(); @@ -1906,10 +1906,10 @@ index d24ddf8a585395c0f7b1cd5a61aaea0516636d93..7c97f917b0cc5652c20abdd26428ccca this.turtle.setDeltaMovement(this.turtle.getDeltaMovement().add(0.0, this.turtle.getSpeed() * d1 * 0.1, 0.0)); } diff --git a/net/minecraft/world/entity/animal/allay/Allay.java b/net/minecraft/world/entity/animal/allay/Allay.java -index eaa1745d34323cd684782a7fb2e153851a736471..31371684bb2bddc6bf9592bef1190af3b09f4d65 100644 +index b7b964bd4e2d611a3e48ece072d5787193077a92..e05f92d31cae8ac143274c662b2eca18ebc378d7 100644 --- a/net/minecraft/world/entity/animal/allay/Allay.java +++ b/net/minecraft/world/entity/animal/allay/Allay.java -@@ -117,10 +117,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -114,10 +114,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS private float spinningAnimationTicks; private float spinningAnimationTicks0; public boolean forceDancing = false; // CraftBukkit @@ -1934,7 +1934,7 @@ index eaa1745d34323cd684782a7fb2e153851a736471..31371684bb2bddc6bf9592bef1190af3 this.setCanPickUpLoot(this.canPickUpLoot()); this.vibrationUser = new Allay.VibrationUser(); this.vibrationData = new VibrationSystem.Data(); -@@ -136,6 +149,28 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -133,6 +146,28 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS } // CraftBukkit end @@ -1963,7 +1963,7 @@ index eaa1745d34323cd684782a7fb2e153851a736471..31371684bb2bddc6bf9592bef1190af3 @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -243,6 +278,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -228,6 +263,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("allayBrain"); @@ -1972,10 +1972,10 @@ index eaa1745d34323cd684782a7fb2e153851a736471..31371684bb2bddc6bf9592bef1190af3 profilerFiller.pop(); profilerFiller.push("allayActivityUpdate"); diff --git a/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/net/minecraft/world/entity/animal/armadillo/Armadillo.java -index b72e07ad954efa7f26f876a59f428086b40d9bb2..2b38e942492b3324683e05d36ed906462da92ac4 100644 +index c1798db2972c8f2a343cf6e16fd9354ff212d906..c13745fc848c56bfce6161099c27388dc4164cb3 100644 --- a/net/minecraft/world/entity/animal/armadillo/Armadillo.java +++ b/net/minecraft/world/entity/animal/armadillo/Armadillo.java -@@ -81,6 +81,23 @@ public class Armadillo extends Animal { +@@ -82,6 +82,23 @@ public class Armadillo extends Animal { return Animal.createAnimalAttributes().add(Attributes.MAX_HEALTH, 12.0).add(Attributes.MOVEMENT_SPEED, 0.14); } @@ -2000,10 +2000,10 @@ index b72e07ad954efa7f26f876a59f428086b40d9bb2..2b38e942492b3324683e05d36ed90646 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 233025bc1d4ba2590223def9b206140c68ea5f26..f3f0f5d7fe79e87b893aa52113f02a774ccc057a 100644 +index b0467750dab4c6f411fd2f318009d25f83d94bc0..8a21191672e524457f7f45782c57dd3638df1cec 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -120,6 +120,23 @@ public class Axolotl extends Animal implements Bucketable { +@@ -122,6 +122,23 @@ public class Axolotl extends Animal implements Bucketable { this.lookControl = new Axolotl.AxolotlLookControl(this, 20); } @@ -2027,7 +2027,7 @@ index 233025bc1d4ba2590223def9b206140c68ea5f26..f3f0f5d7fe79e87b893aa52113f02a77 @Override public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; -@@ -329,6 +346,7 @@ public class Axolotl extends Animal implements Bucketable { +@@ -331,6 +348,7 @@ public class Axolotl extends Animal implements Bucketable { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("axolotlBrain"); @@ -2035,7 +2035,7 @@ index 233025bc1d4ba2590223def9b206140c68ea5f26..f3f0f5d7fe79e87b893aa52113f02a77 this.getBrain().tick(level, this); profilerFiller.pop(); profilerFiller.push("axolotlActivityUpdate"); -@@ -578,23 +596,31 @@ public class Axolotl extends Animal implements Bucketable { +@@ -580,23 +598,31 @@ public class Axolotl extends Animal implements Bucketable { } @Override @@ -2070,10 +2070,10 @@ index 233025bc1d4ba2590223def9b206140c68ea5f26..f3f0f5d7fe79e87b893aa52113f02a77 super.tick(); } diff --git a/net/minecraft/world/entity/animal/camel/Camel.java b/net/minecraft/world/entity/animal/camel/Camel.java -index 6336fb58f4314be2fe987d7e3de258d977369417..3d4efc2918fd10a63065a052d9e460b49489cf00 100644 +index 757b63ee059c95e673a098706b4ee7ab4fc21f70..78073cf5c93389224ccf7d7036d6b11af05280b6 100644 --- a/net/minecraft/world/entity/animal/camel/Camel.java +++ b/net/minecraft/world/entity/animal/camel/Camel.java -@@ -89,6 +89,13 @@ public class Camel extends AbstractHorse { +@@ -91,6 +91,13 @@ public class Camel extends AbstractHorse { groundPathNavigation.setCanWalkOverFences(true); } @@ -2085,13 +2085,13 @@ index 6336fb58f4314be2fe987d7e3de258d977369417..3d4efc2918fd10a63065a052d9e460b4 + // Purpur end - Ridables + @Override - public void addAdditionalSaveData(CompoundTag compound) { - super.addAdditionalSaveData(compound); + protected void addAdditionalSaveData(ValueOutput output) { + super.addAdditionalSaveData(output); diff --git a/net/minecraft/world/entity/animal/frog/Frog.java b/net/minecraft/world/entity/animal/frog/Frog.java -index 8ffbe420528cd63f30f9b41d4fb0a6519042eadc..054811d807c56018617dc4a8e10af87ed15ad00c 100644 +index 66f503e045ccb0985ec718b39be07eea538fad8d..0bb0c875b12c94e9fb42b81210c5935cb5efecf8 100644 --- a/net/minecraft/world/entity/animal/frog/Frog.java +++ b/net/minecraft/world/entity/animal/frog/Frog.java -@@ -105,6 +105,8 @@ public class Frog extends Animal { +@@ -106,6 +106,8 @@ public class Frog extends Animal { public final AnimationState croakAnimationState = new AnimationState(); public final AnimationState tongueAnimationState = new AnimationState(); public final AnimationState swimIdleAnimationState = new AnimationState(); @@ -2100,7 +2100,7 @@ index 8ffbe420528cd63f30f9b41d4fb0a6519042eadc..054811d807c56018617dc4a8e10af87e public Frog(EntityType entityType, Level level) { super(entityType, level); -@@ -112,7 +114,55 @@ public class Frog extends Animal { +@@ -113,7 +115,55 @@ public class Frog extends Animal { this.setPathfindingMalus(PathType.WATER, 4.0F); this.setPathfindingMalus(PathType.TRAPDOOR, -1.0F); this.moveControl = new SmoothSwimmingMoveControl(this, 85, 10, 0.02F, 0.1F, true); @@ -2156,7 +2156,7 @@ index 8ffbe420528cd63f30f9b41d4fb0a6519042eadc..054811d807c56018617dc4a8e10af87e @Override protected Brain.Provider brainProvider() { -@@ -205,6 +255,7 @@ public class Frog extends Animal { +@@ -206,6 +256,7 @@ public class Frog extends Animal { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("frogBrain"); @@ -2164,7 +2164,7 @@ index 8ffbe420528cd63f30f9b41d4fb0a6519042eadc..054811d807c56018617dc4a8e10af87e this.getBrain().tick(level, this); profilerFiller.pop(); profilerFiller.push("frogActivityUpdate"); -@@ -389,7 +440,7 @@ public class Frog extends Animal { +@@ -390,7 +441,7 @@ public class Frog extends Animal { return level.getBlockState(pos.below()).is(BlockTags.FROGS_SPAWNABLE_ON) && isBrightEnoughToSpawn(level, pos); } @@ -2174,10 +2174,10 @@ index 8ffbe420528cd63f30f9b41d4fb0a6519042eadc..054811d807c56018617dc4a8e10af87e super(mob); } diff --git a/net/minecraft/world/entity/animal/frog/Tadpole.java b/net/minecraft/world/entity/animal/frog/Tadpole.java -index ebdfd3fb6c0de48982d392bb2aa415f3676c6056..4db2d63fbc021f28b8ad8d20cc1cc1bb257b057f 100644 +index 17f58246849ed407821a987b200cc765eb7943f9..6932e85b3db0205f9a69d9ef965a934f100e6bcf 100644 --- a/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -64,13 +64,50 @@ public class Tadpole extends AbstractFish { +@@ -66,13 +66,50 @@ public class Tadpole extends AbstractFish { MemoryModuleType.IS_PANICKING ); public boolean ageLocked; // Paper @@ -2229,7 +2229,7 @@ index ebdfd3fb6c0de48982d392bb2aa415f3676c6056..4db2d63fbc021f28b8ad8d20cc1cc1bb @Override protected PathNavigation createNavigation(Level level) { return new WaterBoundPathNavigation(this, level); -@@ -100,6 +137,7 @@ public class Tadpole extends AbstractFish { +@@ -102,6 +139,7 @@ public class Tadpole extends AbstractFish { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("tadpoleBrain"); @@ -2238,10 +2238,10 @@ index ebdfd3fb6c0de48982d392bb2aa415f3676c6056..4db2d63fbc021f28b8ad8d20cc1cc1bb profilerFiller.pop(); profilerFiller.push("tadpoleActivityUpdate"); diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index c399192687e01bd4a05e4a85d71493d4c3c3e9a8..b922d8c37b89a5762c8ed29e6a5fa545f408511e 100644 +index d5e5ea2a20739b81742b1a5323d19f2d01baec25..f106d5bbbe9227b2c7cc4cc24ade57d8df9b4e10 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -114,6 +114,23 @@ public class Goat extends Animal { +@@ -115,6 +115,23 @@ public class Goat extends Animal { .orElseGet(() -> new ItemStack(Items.GOAT_HORN)); } @@ -2265,7 +2265,7 @@ index c399192687e01bd4a05e4a85d71493d4c3c3e9a8..b922d8c37b89a5762c8ed29e6a5fa545 @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -191,6 +208,7 @@ public class Goat extends Animal { +@@ -192,6 +209,7 @@ public class Goat extends Animal { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("goatBrain"); @@ -2274,10 +2274,10 @@ index c399192687e01bd4a05e4a85d71493d4c3c3e9a8..b922d8c37b89a5762c8ed29e6a5fa545 profilerFiller.pop(); profilerFiller.push("goatActivityUpdate"); diff --git a/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 7c473eea481f5e055cc70512027726f41f0c6f67..8bd9fd0a017b9822129119d7e16e872f0bdc8c2d 100644 +index 31ed5d7cfbda1a1f98ebfc89f5cbc65332cabdae..ba56d68737cedabcddafafb18022f7c106631ca4 100644 --- a/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/net/minecraft/world/entity/animal/horse/AbstractHorse.java -@@ -126,11 +126,21 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory +@@ -127,11 +127,21 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory protected AbstractHorse(EntityType entityType, Level level) { super(entityType, level); @@ -2299,7 +2299,7 @@ index 7c473eea481f5e055cc70512027726f41f0c6f67..8bd9fd0a017b9822129119d7e16e872f this.goalSelector.addGoal(1, new PanicGoal(this, 1.2)); this.goalSelector.addGoal(1, new RunAroundLikeCrazyGoal(this, 1.2)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0, AbstractHorse.class)); -@@ -141,6 +151,7 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory +@@ -142,6 +152,7 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory if (this.canPerformRearing()) { this.goalSelector.addGoal(9, new RandomStandGoal(this)); } @@ -2326,10 +2326,10 @@ index 5dff98b5b2e4bba5f874d6a99d034a3905775c9b..66dda36aeb668488076f0c93dc83ab6c public SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java -index a0d85cd6c5306385b074a636166ff8eee2b320ce..5b2d1fedf61880990ca29b51b3d83a19e79047d1 100644 +index 2a1d720557c0bd4895a32723e34512c0a557e4f2..f1cb2e315e1d86f9fcd87db11d3ee7a81cfe12f6 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java -@@ -46,6 +46,13 @@ public class Horse extends AbstractHorse { +@@ -47,6 +47,13 @@ public class Horse extends AbstractHorse { super(entityType, level); } @@ -2344,10 +2344,10 @@ index a0d85cd6c5306385b074a636166ff8eee2b320ce..5b2d1fedf61880990ca29b51b3d83a19 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index d4467235e8dc9d10c61dfb6fd9dc32386903dd09..b60fa4cb07d8dc6b52e76b5e9f596bafc815ba2d 100644 +index 5e3382351b1b5728750534f64babc85c4da3ac54..da6450f7573ca9797577d5afae2bb1365d112177 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -83,7 +83,51 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -84,7 +84,51 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { super(entityType, level); this.getNavigation().setRequiredPathLength(40.0F); this.maxDomestication = 30; // Paper - Missing entity API; configure max temper instead of a hardcoded value @@ -2399,7 +2399,7 @@ index d4467235e8dc9d10c61dfb6fd9dc32386903dd09..b60fa4cb07d8dc6b52e76b5e9f596baf public boolean isTraderLlama() { return false; -@@ -126,6 +170,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -127,6 +171,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -2407,7 +2407,7 @@ index d4467235e8dc9d10c61dfb6fd9dc32386903dd09..b60fa4cb07d8dc6b52e76b5e9f596baf this.goalSelector.addGoal(1, new RunAroundLikeCrazyGoal(this, 1.2)); this.goalSelector.addGoal(2, new LlamaFollowCaravanGoal(this, 2.1F)); this.goalSelector.addGoal(3, new RangedAttackGoal(this, 1.25, 40, 20.0F)); -@@ -136,6 +181,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -137,6 +182,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 0.7)); this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(9, new RandomLookAroundGoal(this)); @@ -2434,10 +2434,10 @@ index 39725b7a6bac9390406733cd51d7341d0cb363d1..b1c96936ba8dcba4435a649dd7e6ec3c public SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 797405b187bb8102aafbf880552accd82e2c9af2..b8bdf9d4665cbfa590842727079a740274f13c34 100644 +index 580134c5a075c7efdc7c2f86a179df2fa336eba9..ba0e483df57cc56f356282519105a2e3e77601f8 100644 --- a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -@@ -41,6 +41,13 @@ public class SkeletonHorse extends AbstractHorse { +@@ -42,6 +42,13 @@ public class SkeletonHorse extends AbstractHorse { super(entityType, level); } @@ -2451,7 +2451,7 @@ index 797405b187bb8102aafbf880552accd82e2c9af2..b8bdf9d4665cbfa590842727079a7402 public static AttributeSupplier.Builder createAttributes() { return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } -@@ -60,6 +67,7 @@ public class SkeletonHorse extends AbstractHorse { +@@ -61,6 +68,7 @@ public class SkeletonHorse extends AbstractHorse { @Override protected void addBehaviourGoals() { @@ -2460,10 +2460,10 @@ index 797405b187bb8102aafbf880552accd82e2c9af2..b8bdf9d4665cbfa590842727079a7402 @Override diff --git a/net/minecraft/world/entity/animal/horse/TraderLlama.java b/net/minecraft/world/entity/animal/horse/TraderLlama.java -index 38a5554d6e28ab73c225625531c94592a46d50a8..d67d24e64d387a7f6a18aef1c8dcab1c6df3f824 100644 +index 2cd1b988f44caf271a7d2dfccf118be53b77caba..7214a8d3597cd46cdc8e0837365cdb4a0a5b4cba 100644 --- a/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/net/minecraft/world/entity/animal/horse/TraderLlama.java -@@ -30,6 +30,28 @@ public class TraderLlama extends Llama { +@@ -31,6 +31,28 @@ public class TraderLlama extends Llama { super(entityType, level); } @@ -2524,10 +2524,10 @@ index ee327bdec37df5197c35aef60cf456bb81f8d048..45d09ebcc9ce4321285a4ec49e8ee369 @Override diff --git a/net/minecraft/world/entity/animal/sheep/Sheep.java b/net/minecraft/world/entity/animal/sheep/Sheep.java -index bb51adb44cbff3e7feaa80421f5f1a01c119aa00..a3df1d80dbaefb5bc7e7e2618039876bcf1d3462 100644 +index 4e4887cd2c6d6d22966395d68ed59da090f609a3..f9e86a4f632e96d5cf531c90f2813afe2fb45fbb 100644 --- a/net/minecraft/world/entity/animal/sheep/Sheep.java +++ b/net/minecraft/world/entity/animal/sheep/Sheep.java -@@ -84,10 +84,28 @@ public class Sheep extends Animal implements Shearable { +@@ -62,10 +62,28 @@ public class Sheep extends Animal implements Shearable { super(entityType, level); } @@ -2557,10 +2557,10 @@ index bb51adb44cbff3e7feaa80421f5f1a01c119aa00..a3df1d80dbaefb5bc7e7e2618039876b this.goalSelector.addGoal(2, new BreedGoal(this, 1.0)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.1, stack -> stack.is(ItemTags.SHEEP_FOOD), false)); diff --git a/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/net/minecraft/world/entity/animal/sniffer/Sniffer.java -index d34dcbbdeae41d23d6fb497e0e8da038580b6d01..6c252b8021dbeb2a9ffee8a3744ac0165fd032e8 100644 +index 6a9f31c1f39cc14ad7b5ae3af85908bc7a4caae4..430c2ba035468a81402d6ed0a442006d94d33f09 100644 --- a/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/net/minecraft/world/entity/animal/sniffer/Sniffer.java -@@ -88,6 +88,23 @@ public class Sniffer extends Animal { +@@ -89,6 +89,23 @@ public class Sniffer extends Animal { this.setPathfindingMalus(PathType.DAMAGE_CAUTIOUS, -1.0F); } @@ -2585,10 +2585,10 @@ index d34dcbbdeae41d23d6fb497e0e8da038580b6d01..6c252b8021dbeb2a9ffee8a3744ac016 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java -index 0487c463806509b1dd93dcfee3b518c95b0bdb19..7cac99a33a398528bbc55f90cc57a9848e56ff01 100644 +index 6fc2d5d558832dd55479deb9ad5984fbe81c9bee..d4fa7d17d3fb63e0bdc09db9e454ca4376817265 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java -@@ -187,9 +187,32 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -186,9 +186,32 @@ public class Wolf extends TamableAnimal implements NeutralMob { } // Purpur end - Configurable default collar color @@ -2621,7 +2621,7 @@ index 0487c463806509b1dd93dcfee3b518c95b0bdb19..7cac99a33a398528bbc55f90cc57a984 this.goalSelector.addGoal(1, new TamableAnimal.TamableAnimalPanicGoal(1.5, DamageTypeTags.PANIC_ENVIRONMENTAL_CAUSES)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(3, new Wolf.WolfAvoidEntityGoal<>(this, Llama.class, 24.0F, 1.5, 1.5)); -@@ -202,6 +225,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -201,6 +224,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.goalSelector.addGoal(9, new BegGoal(this, 8.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(10, new RandomLookAroundGoal(this)); @@ -2630,10 +2630,10 @@ index 0487c463806509b1dd93dcfee3b518c95b0bdb19..7cac99a33a398528bbc55f90cc57a984 this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, new HurtByTargetGoal(this).setAlertOthers()); diff --git a/net/minecraft/world/entity/boss/EnderDragonPart.java b/net/minecraft/world/entity/boss/EnderDragonPart.java -index 31f064267514e590944ad809c95915b481e65aaa..c8bc09c3fe27e69360027698c41fd51a111ffa66 100644 +index c9443cbde85109b19e6c84274c562d83a229c763..ec82bd00f7be253beac1dfbe00a36d25daa11775 100644 --- a/net/minecraft/world/entity/boss/EnderDragonPart.java +++ b/net/minecraft/world/entity/boss/EnderDragonPart.java -@@ -27,6 +27,13 @@ public class EnderDragonPart extends Entity { +@@ -28,6 +28,13 @@ public class EnderDragonPart extends Entity { this.name = name; } @@ -2648,10 +2648,10 @@ index 31f064267514e590944ad809c95915b481e65aaa..c8bc09c3fe27e69360027698c41fd51a protected void defineSynchedData(SynchedEntityData.Builder builder) { } diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index ea9d27a3205b3699b9577f42bb04254bd76e700e..a414934ae4332cc6cf622d4bb19c5937713f92a2 100644 +index 3389c79e18601d582f95fe3765c291d46706d015..f669dd446fc07d15c66a2a96006891bc6171baa4 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -91,6 +91,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -92,6 +92,7 @@ public class EnderDragon extends Mob implements Enemy { private final net.minecraft.world.level.Explosion explosionSource; // Paper - reusable source for CraftTNTPrimed.getSource() @Nullable private BlockPos podium; // Paper end @@ -2659,7 +2659,7 @@ index ea9d27a3205b3699b9577f42bb04254bd76e700e..a414934ae4332cc6cf622d4bb19c5937 public EnderDragon(EntityType entityType, Level level) { super(EntityType.ENDER_DRAGON, level); -@@ -107,6 +108,37 @@ public class EnderDragon extends Mob implements Enemy { +@@ -108,6 +109,37 @@ public class EnderDragon extends Mob implements Enemy { this.noPhysics = true; this.phaseManager = new EnderDragonPhaseManager(this); this.explosionSource = new net.minecraft.world.level.ServerExplosion(level.getMinecraftWorld(), this, null, null, new Vec3(Double.NaN, Double.NaN, Double.NaN), Float.NaN, true, net.minecraft.world.level.Explosion.BlockInteraction.DESTROY); // Paper @@ -2697,7 +2697,7 @@ index ea9d27a3205b3699b9577f42bb04254bd76e700e..a414934ae4332cc6cf622d4bb19c5937 } public void setDragonFight(EndDragonFight dragonFight) { -@@ -121,6 +153,17 @@ public class EnderDragon extends Mob implements Enemy { +@@ -122,6 +154,17 @@ public class EnderDragon extends Mob implements Enemy { return this.fightOrigin; } @@ -2713,9 +2713,9 @@ index ea9d27a3205b3699b9577f42bb04254bd76e700e..a414934ae4332cc6cf622d4bb19c5937 + // Purpur end - Ridables + public static AttributeSupplier.Builder createAttributes() { - return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0); + return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0).add(Attributes.CAMERA_DISTANCE, 16.0); } -@@ -170,6 +213,37 @@ public class EnderDragon extends Mob implements Enemy { +@@ -171,6 +214,37 @@ public class EnderDragon extends Mob implements Enemy { @Override public void aiStep() { @@ -2753,7 +2753,7 @@ index ea9d27a3205b3699b9577f42bb04254bd76e700e..a414934ae4332cc6cf622d4bb19c5937 this.processFlappingMovement(); if (this.level().isClientSide) { this.setHealth(this.getHealth()); -@@ -198,6 +272,8 @@ public class EnderDragon extends Mob implements Enemy { +@@ -199,6 +273,8 @@ public class EnderDragon extends Mob implements Enemy { this.oFlapTime = this.flapTime; if (this.isDeadOrDying()) { @@ -2762,7 +2762,7 @@ index ea9d27a3205b3699b9577f42bb04254bd76e700e..a414934ae4332cc6cf622d4bb19c5937 float f = (this.random.nextFloat() - 0.5F) * 8.0F; float f1 = (this.random.nextFloat() - 0.5F) * 4.0F; float f2 = (this.random.nextFloat() - 0.5F) * 8.0F; -@@ -207,9 +283,9 @@ public class EnderDragon extends Mob implements Enemy { +@@ -208,9 +284,9 @@ public class EnderDragon extends Mob implements Enemy { Vec3 deltaMovement = this.getDeltaMovement(); float f1 = 0.2F / ((float)deltaMovement.horizontalDistance() * 10.0F + 1.0F); f1 *= (float)Math.pow(2.0, deltaMovement.y); @@ -2774,7 +2774,7 @@ index ea9d27a3205b3699b9577f42bb04254bd76e700e..a414934ae4332cc6cf622d4bb19c5937 this.flapTime += f1 * 0.5F; } else { this.flapTime += f1; -@@ -220,7 +296,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -221,7 +297,7 @@ public class EnderDragon extends Mob implements Enemy { this.flapTime = 0.5F; } else { this.flightHistory.record(this.getY(), this.getYRot()); @@ -2783,7 +2783,7 @@ index ea9d27a3205b3699b9577f42bb04254bd76e700e..a414934ae4332cc6cf622d4bb19c5937 DragonPhaseInstance currentPhase = this.phaseManager.getCurrentPhase(); currentPhase.doServerTick(serverLevel1); if (this.phaseManager.getCurrentPhase() != currentPhase) { -@@ -295,7 +371,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -296,7 +372,7 @@ public class EnderDragon extends Mob implements Enemy { this.tickPart(this.body, sin1 * 0.5F, 0.0, -cos1 * 0.5F); this.tickPart(this.wing1, cos1 * 4.5F, 2.0, sin1 * 4.5F); this.tickPart(this.wing2, cos1 * -4.5F, 2.0, sin1 * -4.5F); @@ -2792,7 +2792,7 @@ index ea9d27a3205b3699b9577f42bb04254bd76e700e..a414934ae4332cc6cf622d4bb19c5937 this.knockBack( serverLevel2, serverLevel2.getEntities( -@@ -345,9 +421,9 @@ public class EnderDragon extends Mob implements Enemy { +@@ -346,9 +422,9 @@ public class EnderDragon extends Mob implements Enemy { } if (this.level() instanceof ServerLevel serverLevel3) { @@ -2805,10 +2805,10 @@ index ea9d27a3205b3699b9577f42bb04254bd76e700e..a414934ae4332cc6cf622d4bb19c5937 this.dragonFight.updateDragon(this); } diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 2f7da367b58fd9c06c4e012e8eb7f59e5a7f9b6d..15e2c0d566256c4ba175e991d6d7fd4fdcd49c8e 100644 +index c4a2fb6f08e5d6d69571f448c6ac9defaac3fcd3..2c6158de44a8ba95d3c5124ed2827a0aa24b672d 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -70,6 +70,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -71,6 +71,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { private final int[] nextHeadUpdate = new int[2]; private final int[] idleHeadUpdates = new int[2]; private int destroyBlocksTick; @@ -2816,7 +2816,7 @@ index 2f7da367b58fd9c06c4e012e8eb7f59e5a7f9b6d..15e2c0d566256c4ba175e991d6d7fd4f private boolean canPortal = false; // Paper public final ServerBossEvent bossEvent = (ServerBossEvent)new ServerBossEvent( this.getDisplayName(), BossEvent.BossBarColor.PURPLE, BossEvent.BossBarOverlay.PROGRESS -@@ -79,9 +80,23 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -80,9 +81,23 @@ public class WitherBoss extends Monster implements RangedAttackMob { && entity.attackable(); private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0).selector(LIVING_ENTITY_SELECTOR); @Nullable private java.util.UUID summoner; // Purpur - Summoner API @@ -2840,7 +2840,7 @@ index 2f7da367b58fd9c06c4e012e8eb7f59e5a7f9b6d..15e2c0d566256c4ba175e991d6d7fd4f this.moveControl = new FlyingMoveControl(this, 10, false); this.setHealth(this.getMaxHealth()); this.xpReward = 50; -@@ -98,6 +113,105 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -99,6 +114,105 @@ public class WitherBoss extends Monster implements RangedAttackMob { } // Purpur end - Summoner API @@ -2946,7 +2946,7 @@ index 2f7da367b58fd9c06c4e012e8eb7f59e5a7f9b6d..15e2c0d566256c4ba175e991d6d7fd4f @Override protected PathNavigation createNavigation(Level level) { FlyingPathNavigation flyingPathNavigation = new FlyingPathNavigation(this, level); -@@ -108,11 +222,13 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -109,11 +223,13 @@ public class WitherBoss extends Monster implements RangedAttackMob { @Override protected void registerGoals() { @@ -2960,7 +2960,7 @@ index 2f7da367b58fd9c06c4e012e8eb7f59e5a7f9b6d..15e2c0d566256c4ba175e991d6d7fd4f this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 0, false, false, LIVING_ENTITY_SELECTOR)); } -@@ -272,6 +388,15 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -273,6 +389,15 @@ public class WitherBoss extends Monster implements RangedAttackMob { @Override protected void customServerAiStep(ServerLevel level) { @@ -2976,7 +2976,7 @@ index 2f7da367b58fd9c06c4e012e8eb7f59e5a7f9b6d..15e2c0d566256c4ba175e991d6d7fd4f if (this.getInvulnerableTicks() > 0) { int i = this.getInvulnerableTicks() - 1; this.bossEvent.setProgress(1.0F - i / 220.0F); -@@ -578,11 +703,11 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -579,11 +704,11 @@ public class WitherBoss extends Monster implements RangedAttackMob { } public int getAlternativeTarget(int head) { @@ -2991,7 +2991,7 @@ index 2f7da367b58fd9c06c4e012e8eb7f59e5a7f9b6d..15e2c0d566256c4ba175e991d6d7fd4f public boolean isPowered() { diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 025b74f7fe2094110a9fd293911588f361785d0a..607be674b6dcb9b099e9182b268c6bd960c5a87d 100644 +index fa124fc779aaf7c1747a2007a2d5826cd4fde13a..caa018d1dd0b6e97ec9d3fa70bbffe9eb3b1edec 100644 --- a/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -73,12 +73,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -3093,10 +3093,10 @@ index 4ab7072b4290db7fbe72f81b89d3c428b05f737c..971b974c6717a544f7f96c441cd76e9d if (this.nextHeightOffsetChangeTick <= 0) { this.nextHeightOffsetChangeTick = 100; diff --git a/net/minecraft/world/entity/monster/Bogged.java b/net/minecraft/world/entity/monster/Bogged.java -index c279d38ed8d5d0fef6dea4afdc3ab308456f31a7..f572ee0a8edd6c4adb17c06083e165d4d8ed8550 100644 +index afb4cee70d0feecab93d943baf7ddfd83ad7f3b5..b1f06656bf60eda01e06cd4cfd908edc7b51c628 100644 --- a/net/minecraft/world/entity/monster/Bogged.java +++ b/net/minecraft/world/entity/monster/Bogged.java -@@ -42,6 +42,23 @@ public class Bogged extends AbstractSkeleton implements Shearable { +@@ -43,6 +43,23 @@ public class Bogged extends AbstractSkeleton implements Shearable { super(entityType, level); } @@ -3149,10 +3149,10 @@ index 2e32567fca7a2a4cd87bc078a6eeb30e3ffabfce..4873a3d8dd9c160ecdbda594ee546c35 public boolean doHurtTarget(ServerLevel level, Entity source) { if (super.doHurtTarget(level, source)) { diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java -index c2327306f093c834da9574f9466236fbec572aec..562641cdb76e7a50706459bee8a2dcdf441588cd 100644 +index d82fe9db4d074a0484d8c5e2998ff9faf87dfd6e..5684ab59acb554f097d713d7c1a9860452bd3564 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java -@@ -55,21 +55,98 @@ public class Creeper extends Monster { +@@ -56,21 +56,98 @@ public class Creeper extends Monster { private int droppedSkulls; public @Nullable Entity entityIgniter; // CraftBukkit private boolean exploding = false; // Purpur - Config to make Creepers explode on death @@ -3251,7 +3251,7 @@ index c2327306f093c834da9574f9466236fbec572aec..562641cdb76e7a50706459bee8a2dcdf this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); } -@@ -310,6 +387,7 @@ public class Creeper extends Monster { +@@ -311,6 +388,7 @@ public class Creeper extends Monster { 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(DATA_IS_IGNITED, event.isIgnited()); @@ -3260,10 +3260,10 @@ index c2327306f093c834da9574f9466236fbec572aec..562641cdb76e7a50706459bee8a2dcdf } } diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java -index c0afb6f85cecf26bb1a08669ac3fcec8fea6cbfc..be7b7eb8328277dc790b9953161c3603d3bbe873 100644 +index 84c6b5552f2b408b7b9f24a85b8c4fd54310c349..fb7a06d64a2f3ac2355bcf9eb515d4504786c585 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java -@@ -75,6 +75,23 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -71,6 +71,23 @@ public class Drowned extends Zombie implements RangedAttackMob { return Zombie.createAttributes().add(Attributes.STEP_HEIGHT, 1.0); } @@ -3285,9 +3285,9 @@ index c0afb6f85cecf26bb1a08669ac3fcec8fea6cbfc..be7b7eb8328277dc790b9953161c3603 + // Purpur end - Ridables + @Override - protected void addBehaviourGoals() { - this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0)); -@@ -411,7 +428,7 @@ public class Drowned extends Zombie implements RangedAttackMob { + protected PathNavigation createNavigation(Level level) { + return new AmphibiousPathNavigation(this, level); +@@ -405,7 +422,7 @@ public class Drowned extends Zombie implements RangedAttackMob { } } @@ -3296,7 +3296,7 @@ index c0afb6f85cecf26bb1a08669ac3fcec8fea6cbfc..be7b7eb8328277dc790b9953161c3603 private final Drowned drowned; public DrownedMoveControl(Drowned mob) { -@@ -420,7 +437,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -414,7 +431,7 @@ public class Drowned extends Zombie implements RangedAttackMob { } @Override @@ -3305,7 +3305,7 @@ index c0afb6f85cecf26bb1a08669ac3fcec8fea6cbfc..be7b7eb8328277dc790b9953161c3603 LivingEntity target = this.drowned.getTarget(); if (this.drowned.wantsToSwim() && this.drowned.isInWater()) { if (target != null && target.getY() > this.drowned.getY() || this.drowned.searchingForLand) { -@@ -440,7 +457,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -434,7 +451,7 @@ public class Drowned extends Zombie implements RangedAttackMob { float f = (float)(Mth.atan2(d2, d) * 180.0F / (float)Math.PI) - 90.0F; this.drowned.setYRot(this.rotlerp(this.drowned.getYRot(), f, 90.0F)); this.drowned.yBodyRot = this.drowned.getYRot(); @@ -3314,7 +3314,7 @@ index c0afb6f85cecf26bb1a08669ac3fcec8fea6cbfc..be7b7eb8328277dc790b9953161c3603 float f2 = Mth.lerp(0.125F, this.drowned.getSpeed(), f1); this.drowned.setSpeed(f2); this.drowned.setDeltaMovement(this.drowned.getDeltaMovement().add(f2 * d * 0.005, f2 * d1 * 0.1, f2 * d2 * 0.005)); -@@ -449,7 +466,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -443,7 +460,7 @@ public class Drowned extends Zombie implements RangedAttackMob { this.drowned.setDeltaMovement(this.drowned.getDeltaMovement().add(0.0, -0.008, 0.0)); } @@ -3324,7 +3324,7 @@ index c0afb6f85cecf26bb1a08669ac3fcec8fea6cbfc..be7b7eb8328277dc790b9953161c3603 } } diff --git a/net/minecraft/world/entity/monster/ElderGuardian.java b/net/minecraft/world/entity/monster/ElderGuardian.java -index fd33a8b59f40299ab644a4c52921b66a9b6552ca..eccbb27aa7efa6e24e04db114b06c7dbf54f9938 100644 +index 7eef05b988d52391ab061382fd8898705c705e03..07355eb21c7b06d282be32f6956d4de9e399b9c9 100644 --- a/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/net/minecraft/world/entity/monster/ElderGuardian.java @@ -31,6 +31,18 @@ public class ElderGuardian extends Guardian { @@ -3347,10 +3347,10 @@ index fd33a8b59f40299ab644a4c52921b66a9b6552ca..eccbb27aa7efa6e24e04db114b06c7db return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0); } diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index 19a047c99c3afc6f8b23d7279491b156785a2c28..f991e59e896fc39da8f318871168b4c9bb0d8328 100644 +index ddb916856cff7179eca474738dfbba910408434c..6836b44d88d8c7b74c05f56b66887c0319805ee7 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -91,9 +91,27 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -89,9 +89,27 @@ public class EnderMan extends Monster implements NeutralMob { this.setPathfindingMalus(PathType.WATER, -1.0F); } @@ -3378,7 +3378,7 @@ index 19a047c99c3afc6f8b23d7279491b156785a2c28..f991e59e896fc39da8f318871168b4c9 this.goalSelector.addGoal(1, new EnderMan.EndermanFreezeWhenLookedAt(this)); this.goalSelector.addGoal(2, new MeleeAttackGoal(this, 1.0, false)); this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0, 0.0F)); -@@ -101,6 +119,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -99,6 +117,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)); @@ -3386,7 +3386,7 @@ index 19a047c99c3afc6f8b23d7279491b156785a2c28..f991e59e896fc39da8f318871168b4c9 this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, 10, true, false, (entityliving, ignored) -> entityliving.level().purpurConfig.endermanAggroEndermites && entityliving instanceof Endermite endermite && (!entityliving.level().purpurConfig.endermanAggroEndermitesOnlyIfPlayerSpawned || endermite.isPlayerSpawned()))); // Purpur -@@ -263,7 +282,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -259,7 +278,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override protected void customServerAiStep(ServerLevel level) { @@ -3395,7 +3395,7 @@ index 19a047c99c3afc6f8b23d7279491b156785a2c28..f991e59e896fc39da8f318871168b4c9 float lightLevelDependentMagicValue = this.getLightLevelDependentMagicValue(); if (lightLevelDependentMagicValue > 0.5F && level.canSeeSky(this.blockPosition()) -@@ -376,6 +395,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -372,6 +391,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) { if (this.isInvulnerableTo(level, damageSource)) { return false; @@ -3404,10 +3404,10 @@ index 19a047c99c3afc6f8b23d7279491b156785a2c28..f991e59e896fc39da8f318871168b4c9 } else { AbstractThrownPotion abstractThrownPotion1 = damageSource.getDirectEntity() instanceof AbstractThrownPotion abstractThrownPotion diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java -index 37eaed1455f34011c24170ca0b05f606bd03fac0..ddb40c13cee7db16fc9b094828356e743e9507f2 100644 +index 50eefb77a6c346b2643324f526c5c01d5e667ce4..0d03bebf2cda34072db561f6e27b06a7d26095d1 100644 --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java -@@ -46,14 +46,33 @@ public class Endermite extends Monster { +@@ -47,14 +47,33 @@ public class Endermite extends Monster { } // Purpur end - Add back player spawned endermite API @@ -3442,10 +3442,10 @@ index 37eaed1455f34011c24170ca0b05f606bd03fac0..ddb40c13cee7db16fc9b094828356e74 this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } diff --git a/net/minecraft/world/entity/monster/Evoker.java b/net/minecraft/world/entity/monster/Evoker.java -index cf9f0c60efc4f7cbc275ed9b154c979e82b4d50c..889f6be331b3b7b80de60c414b77d68947477f9e 100644 +index 7efa39ab1fb34da41a04cd6816f2571c6eba98f5..10142de6bdf9474958ca939c956a428218ee48db 100644 --- a/net/minecraft/world/entity/monster/Evoker.java +++ b/net/minecraft/world/entity/monster/Evoker.java -@@ -50,10 +50,28 @@ public class Evoker extends SpellcasterIllager { +@@ -48,10 +48,28 @@ public class Evoker extends SpellcasterIllager { this.xpReward = 10; } @@ -3474,7 +3474,7 @@ index cf9f0c60efc4f7cbc275ed9b154c979e82b4d50c..889f6be331b3b7b80de60c414b77d689 this.goalSelector.addGoal(1, new Evoker.EvokerCastingSpellGoal()); this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Player.class, 8.0F, 0.6, 1.0)); this.goalSelector.addGoal(3, new AvoidEntityGoal<>(this, Creaking.class, 8.0F, 0.6, 1.0)); -@@ -63,6 +81,7 @@ public class Evoker extends SpellcasterIllager { +@@ -61,6 +79,7 @@ public class Evoker extends SpellcasterIllager { this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.6)); this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 3.0F, 1.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F)); @@ -3483,11 +3483,11 @@ index cf9f0c60efc4f7cbc275ed9b154c979e82b4d50c..889f6be331b3b7b80de60c414b77d689 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/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java -index 97b4352671910d2deedc6d280f3ce6e645597f3c..e087a2348dee66e0374246e992ed66bb8f18dce0 100644 +index bbdff8b4043f27045684a2aa5687e2b7ca7afbb5..c7ac650f9618fd124035f9cf01fffada7efc97e1 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java -@@ -43,11 +43,47 @@ public class Ghast extends FlyingMob implements Enemy { - this.moveControl = new Ghast.GhastMoveControl(this); +@@ -52,11 +52,47 @@ public class Ghast extends Mob implements Enemy { + this.moveControl = new Ghast.GhastMoveControl(this, false, () -> false); } + // Purpur start - Ridables @@ -3534,35 +3534,26 @@ index 97b4352671910d2deedc6d280f3ce6e645597f3c..e087a2348dee66e0374246e992ed66bb this.targetSelector .addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (entity, level) -> Math.abs(entity.getY() - this.getY()) <= 4.0)); } -@@ -102,7 +138,7 @@ public class Ghast extends FlyingMob implements Enemy { - } - - public static AttributeSupplier.Builder createAttributes() { -- return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 10.0).add(Attributes.FOLLOW_RANGE, 100.0); -+ return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 10.0).add(Attributes.FOLLOW_RANGE, 100.0).add(Attributes.FLYING_SPEED, 0.6D); // Purpur - Ridables - } - - @Override -@@ -190,7 +226,7 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -236,7 +272,7 @@ public class Ghast extends Mob implements Enemy { } } -- static class GhastMoveControl extends MoveControl { -+ static class GhastMoveControl extends org.purpurmc.purpur.controller.FlyingMoveControllerWASD { // Purpur - Ridables - private final Ghast ghast; +- public static class GhastMoveControl extends MoveControl { ++ public static class GhastMoveControl extends org.purpurmc.purpur.controller.FlyingMoveControllerWASD { // Purpur - Ridables + private final Mob ghast; private int floatDuration; - -@@ -200,7 +236,7 @@ public class Ghast extends FlyingMob implements Enemy { + private final boolean careful; +@@ -250,7 +286,7 @@ public class Ghast extends Mob implements Enemy { } @Override - public void tick() { + public void vanillaTick() { // Purpur - Ridables - if (this.operation == MoveControl.Operation.MOVE_TO) { - if (this.floatDuration-- <= 0) { - this.floatDuration = this.floatDuration + this.ghast.getRandom().nextInt(5) + 2; + if (this.shouldBeStopped.getAsBoolean()) { + this.operation = MoveControl.Operation.WAIT; + this.ghast.stopInPlace(); diff --git a/net/minecraft/world/entity/monster/Giant.java b/net/minecraft/world/entity/monster/Giant.java -index 969eb604851d1cce50f0f99ed479189061d5de0c..135f83484ac31db7dcc225ba6f94e2e4ca27eea8 100644 +index ab0b44fd3e20fcab4e2fea985e7471575b619069..c098fc14eb4f2ebd7dc1f6be9507279296416eea 100644 --- a/net/minecraft/world/entity/monster/Giant.java +++ b/net/minecraft/world/entity/monster/Giant.java @@ -12,6 +12,29 @@ public class Giant extends Monster { @@ -3593,8 +3584,8 @@ index 969eb604851d1cce50f0f99ed479189061d5de0c..135f83484ac31db7dcc225ba6f94e2e4 + // Purpur end - Ridables + 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); - } + return Monster.createMonsterAttributes() + .add(Attributes.MAX_HEALTH, 100.0) diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java index a36f0181e1aa24538d6c868a8675da89427bdeae..26fb38b9741304f4fe461c929ead0f392255a3de 100644 --- a/net/minecraft/world/entity/monster/Guardian.java @@ -3800,10 +3791,10 @@ index 889c31cc9257fbbd5df8325ccee9ce39b026ec4b..4a1299d6cee2807522de0c2d0d4745c5 @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 73edb1a4e5daee16fa518c05de24e413847ab65d..2653cf2c353d7ae360201e74c4860a4745dd4948 100644 +index 2abb55d84507fd29817760cb0068dd083f7f1c37..99194cf1fa89d3112719ead9f7de260ca5b9b676 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -61,6 +61,64 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -62,6 +62,64 @@ public class Phantom extends Mob implements Enemy { this.lookControl = new Phantom.PhantomLookControl(this); } @@ -3868,7 +3859,7 @@ index 73edb1a4e5daee16fa518c05de24e413847ab65d..2653cf2c353d7ae360201e74c4860a47 @Override public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; -@@ -73,9 +131,11 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -74,9 +132,11 @@ public class Phantom extends Mob implements Enemy { @Override protected void registerGoals() { @@ -3880,7 +3871,7 @@ index 73edb1a4e5daee16fa518c05de24e413847ab65d..2653cf2c353d7ae360201e74c4860a47 this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal()); } -@@ -91,6 +151,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -92,6 +152,7 @@ public class Phantom extends Mob implements Enemy { private void updatePhantomSizeInfo() { this.refreshDimensions(); @@ -3888,7 +3879,7 @@ index 73edb1a4e5daee16fa518c05de24e413847ab65d..2653cf2c353d7ae360201e74c4860a47 this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(6 + this.getPhantomSize()); } -@@ -148,6 +209,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -149,6 +210,7 @@ public class Phantom extends Mob implements Enemy { @Override public void aiStep() { if (this.isAlive() && this.shouldBurnInDay && this.isSunBurnTick()) { // Paper - shouldBurnInDay API @@ -3896,7 +3887,7 @@ index 73edb1a4e5daee16fa518c05de24e413847ab65d..2653cf2c353d7ae360201e74c4860a47 this.igniteForSeconds(8.0F); } -@@ -404,25 +466,42 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -419,25 +481,42 @@ public class Phantom extends Mob implements Enemy { } } @@ -3944,10 +3935,10 @@ index 73edb1a4e5daee16fa518c05de24e413847ab65d..2653cf2c353d7ae360201e74c4860a47 Phantom.this.setYRot(Phantom.this.getYRot() + 180.0F); this.speed = 0.1F; diff --git a/net/minecraft/world/entity/monster/Pillager.java b/net/minecraft/world/entity/monster/Pillager.java -index d7b05fed206cfb63a75fab94f687d69fb230de9c..852316c9a9d0860a538eae32001e60f05dc6938f 100644 +index 4f72db7e6f99844761de2f749e52cda156b08ad7..fa49ed77f33bca6335812e9f56176cc053a364ad 100644 --- a/net/minecraft/world/entity/monster/Pillager.java +++ b/net/minecraft/world/entity/monster/Pillager.java -@@ -63,16 +63,35 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve +@@ -64,16 +64,35 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve super(entityType, level); } @@ -3984,10 +3975,10 @@ index d7b05fed206cfb63a75fab94f687d69fb230de9c..852316c9a9d0860a538eae32001e60f0 this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)); diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index 85018a01b5d803a91228e2fa02717c2c518a3004..382ef8b0f8d5c5ef6a7698097e9b41b7adc04353 100644 +index 2b9a72b8742bf13c69df5ce0c905d47a92b9d8bc..b67ac487ce4a7fd8b2f62452ab0b87f4a55006f2 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java -@@ -69,15 +69,40 @@ public class Ravager extends Raider { +@@ -70,15 +70,40 @@ public class Ravager extends Raider { this.setPathfindingMalus(PathType.LEAVES, 0.0F); } @@ -4028,7 +4019,7 @@ index 85018a01b5d803a91228e2fa02717c2c518a3004..382ef8b0f8d5c5ef6a7698097e9b41b7 this.targetSelector.addGoal(2, new HurtByTargetGoal(this, Raider.class).setAlertOthers()); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true, (entity, level) -> !entity.isBaby())); -@@ -134,7 +159,7 @@ public class Ravager extends Raider { +@@ -135,7 +160,7 @@ public class Ravager extends Raider { @Override public void aiStep() { super.aiStep(); @@ -4038,10 +4029,10 @@ index 85018a01b5d803a91228e2fa02717c2c518a3004..382ef8b0f8d5c5ef6a7698097e9b41b7 this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.0); } else { diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index a8c5c2ad80afd03b3fc53127b519b5c2b73bff85..14cddb216b32990c2ce2381a4d6bf6f76c686f95 100644 +index aaa95836e7d767ab6d162ff227f8a82a41255304..e0c70493e771b50885b0263ff07e8ee594c2dfdc 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -109,12 +109,31 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -110,12 +110,31 @@ public class Shulker extends AbstractGolem implements Enemy { } // Purpur end - Shulker change color with dye @@ -4073,7 +4064,7 @@ index a8c5c2ad80afd03b3fc53127b519b5c2b73bff85..14cddb216b32990c2ce2381a4d6bf6f7 this.targetSelector.addGoal(1, new HurtByTargetGoal(this, this.getClass()).setAlertOthers()); this.targetSelector.addGoal(2, new Shulker.ShulkerNearestAttackGoal(this)); this.targetSelector.addGoal(3, new Shulker.ShulkerDefenseAttackGoal(this)); -@@ -718,7 +737,7 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -719,7 +738,7 @@ public class Shulker extends AbstractGolem implements Enemy { } } @@ -4121,10 +4112,10 @@ index 4e34833ea5c71b817c9f42a58320fe100981ec93..19dcc657fd2a995638d5e23c2b043d01 this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java -index 1f35105f6ddd33fc9558d19590a5696479d2de83..5394a5c302c4bd9417dfb304848747fcd2180f07 100644 +index d53364e33bd9e15ad419f306d7cc2e09c9de242c..ed4f0d48120384d847291724ac995cdee00d10aa 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -26,6 +26,23 @@ public class Skeleton extends AbstractSkeleton { +@@ -27,6 +27,23 @@ public class Skeleton extends AbstractSkeleton { super(entityType, level); } @@ -4149,10 +4140,10 @@ index 1f35105f6ddd33fc9558d19590a5696479d2de83..5394a5c302c4bd9417dfb304848747fc protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java -index 5a81172c88f5699f1440b69b331a8ea353c1950a..b3a78d66c0e64e7c8bf54d820c7fff13d46b396b 100644 +index 7b9105cc38380d60892647e52608787dbde28f0d..7ac6449dc3ede6bda51579282b1155371f0800d3 100644 --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java -@@ -58,6 +58,7 @@ public class Slime extends Mob implements Enemy { +@@ -59,6 +59,7 @@ public class Slime extends Mob implements Enemy { public float oSquish; private boolean wasOnGround = false; private boolean canWander = true; // Paper - Slime pathfinder events @@ -4160,7 +4151,7 @@ index 5a81172c88f5699f1440b69b331a8ea353c1950a..b3a78d66c0e64e7c8bf54d820c7fff13 public Slime(EntityType entityType, Level level) { super(entityType, level); -@@ -65,12 +66,48 @@ public class Slime extends Mob implements Enemy { +@@ -66,12 +67,48 @@ public class Slime extends Mob implements Enemy { this.moveControl = new Slime.SlimeMoveControl(this); } @@ -4209,7 +4200,7 @@ index 5a81172c88f5699f1440b69b331a8ea353c1950a..b3a78d66c0e64e7c8bf54d820c7fff13 this.targetSelector .addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (entity, level) -> Math.abs(entity.getY() - this.getY()) <= 4.0)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); -@@ -359,6 +396,7 @@ public class Slime extends Mob implements Enemy { +@@ -360,6 +397,7 @@ public class Slime extends Mob implements Enemy { Vec3 deltaMovement = this.getDeltaMovement(); this.setDeltaMovement(deltaMovement.x, this.getJumpPower(), deltaMovement.z); this.hasImpulse = true; @@ -4217,7 +4208,7 @@ index 5a81172c88f5699f1440b69b331a8ea353c1950a..b3a78d66c0e64e7c8bf54d820c7fff13 } @Nullable -@@ -523,7 +561,7 @@ public class Slime extends Mob implements Enemy { +@@ -524,7 +562,7 @@ public class Slime extends Mob implements Enemy { } } @@ -4226,7 +4217,7 @@ index 5a81172c88f5699f1440b69b331a8ea353c1950a..b3a78d66c0e64e7c8bf54d820c7fff13 private float yRot; private int jumpDelay; private final Slime slime; -@@ -541,21 +579,33 @@ public class Slime extends Mob implements Enemy { +@@ -542,21 +580,33 @@ public class Slime extends Mob implements Enemy { } public void setWantedMovement(double speed) { @@ -4263,7 +4254,7 @@ index 5a81172c88f5699f1440b69b331a8ea353c1950a..b3a78d66c0e64e7c8bf54d820c7fff13 if (this.jumpDelay-- <= 0) { this.jumpDelay = this.slime.getJumpDelay(); if (this.isAggressive) { -@@ -572,7 +622,7 @@ public class Slime extends Mob implements Enemy { +@@ -573,7 +623,7 @@ public class Slime extends Mob implements Enemy { this.mob.setSpeed(0.0F); } } else { @@ -4385,10 +4376,10 @@ index 4b9e60d930bc3a4bfe9aad2e81391e57cfc45d40..ddd3a0d629f720b7acacf01bf2a7db53 if (isFood && !this.isSilent()) { this.level() diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index bc74bdc3e13f1d51ed6d31470f3ac6f9855778c9..720060d422a6b77020da478b514e9581d8d7e4eb 100644 +index b6f570c0140200ddaf29fe8334d6c1e729acf8a0..970eab5794263e40243f0527ab8be98252841fb0 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java -@@ -58,6 +58,50 @@ public class Vex extends Monster implements TraceableEntity { +@@ -60,6 +60,50 @@ public class Vex extends Monster implements TraceableEntity { this.xpReward = 3; } @@ -4439,7 +4430,7 @@ index bc74bdc3e13f1d51ed6d31470f3ac6f9855778c9..720060d422a6b77020da478b514e9581 @Override public boolean isFlapping() { return this.tickCount % TICKS_PER_FLAP == 0; -@@ -70,7 +114,7 @@ public class Vex extends Monster implements TraceableEntity { +@@ -72,7 +116,7 @@ public class Vex extends Monster implements TraceableEntity { @Override public void tick() { @@ -4448,7 +4439,7 @@ index bc74bdc3e13f1d51ed6d31470f3ac6f9855778c9..720060d422a6b77020da478b514e9581 super.tick(); this.noPhysics = false; this.setNoGravity(true); -@@ -84,17 +128,19 @@ public class Vex extends Monster implements TraceableEntity { +@@ -86,17 +130,19 @@ public class Vex extends Monster implements TraceableEntity { protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -4469,7 +4460,7 @@ index bc74bdc3e13f1d51ed6d31470f3ac6f9855778c9..720060d422a6b77020da478b514e9581 } @Override -@@ -291,13 +337,13 @@ public class Vex extends Monster implements TraceableEntity { +@@ -298,13 +344,13 @@ public class Vex extends Monster implements TraceableEntity { } } @@ -4485,7 +4476,7 @@ index bc74bdc3e13f1d51ed6d31470f3ac6f9855778c9..720060d422a6b77020da478b514e9581 if (this.operation == MoveControl.Operation.MOVE_TO) { Vec3 vec3 = new Vec3(this.wantedX - Vex.this.getX(), this.wantedY - Vex.this.getY(), this.wantedZ - Vex.this.getZ()); double len = vec3.length(); -@@ -305,7 +351,7 @@ public class Vex extends Monster implements TraceableEntity { +@@ -312,7 +358,7 @@ public class Vex extends Monster implements TraceableEntity { this.operation = MoveControl.Operation.WAIT; Vex.this.setDeltaMovement(Vex.this.getDeltaMovement().scale(0.5)); } else { @@ -4495,10 +4486,10 @@ index bc74bdc3e13f1d51ed6d31470f3ac6f9855778c9..720060d422a6b77020da478b514e9581 Vec3 deltaMovement = Vex.this.getDeltaMovement(); Vex.this.setYRot(-((float)Mth.atan2(deltaMovement.x, deltaMovement.z)) * (180.0F / (float)Math.PI)); diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index 79c2248b0dce457fed6d61d4b38eeb92bbc3927e..922c5ce69fc2a3cb53dc230f4efe96bde91cd96a 100644 +index 86886889f4a2859eaf35c57b5130b2b10143a368..f908db6eeff5ee5a1ab2783d8e8bbb1598c3ace3 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -56,15 +56,34 @@ public class Vindicator extends AbstractIllager { +@@ -57,15 +57,34 @@ public class Vindicator extends AbstractIllager { super(entityType, level); } @@ -4603,10 +4594,10 @@ index 3ff71ba1bd29faa4d8380dad9397ab34ef930234..d8c10f5f93e3ca92a49e1df321625645 protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/net/minecraft/world/entity/monster/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java -index 4405f465ad5b136390c4204b177967c6e47738dd..636b1e88f6d76a4c0110fa34e89634eee3fbdcdf 100644 +index 0dbc528bcad2b2f79585e2462a265d43fcbebe76..4379832f464824260a25055ed7338c2879a9a194 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java -@@ -86,6 +86,23 @@ public class Zoglin extends Monster implements HoglinBase { +@@ -87,6 +87,23 @@ public class Zoglin extends Monster implements HoglinBase { this.xpReward = 5; } @@ -4630,7 +4621,7 @@ index 4405f465ad5b136390c4204b177967c6e47738dd..636b1e88f6d76a4c0110fa34e89634ee @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -251,6 +268,7 @@ public class Zoglin extends Monster implements HoglinBase { +@@ -252,6 +269,7 @@ public class Zoglin extends Monster implements HoglinBase { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("zoglinBrain"); @@ -4639,10 +4630,10 @@ index 4405f465ad5b136390c4204b177967c6e47738dd..636b1e88f6d76a4c0110fa34e89634ee profilerFiller.pop(); this.updateActivity(); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index e15df574282e0f5ba5791435020bc6ac96860d15..f9233f0689b26a8c65d60ab9421c1216d436bae7 100644 +index e8f54f358b0af0a6755912df7cceb2909da9f0a9..5d68fa532c588ed942d6b9703cc1047feca4e641 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -104,11 +104,30 @@ public class Zombie extends Monster { +@@ -103,11 +103,30 @@ public class Zombie extends Monster { this(EntityType.ZOMBIE, level); } @@ -4674,11 +4665,11 @@ index e15df574282e0f5ba5791435020bc6ac96860d15..f9233f0689b26a8c65d60ab9421c1216 } diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 6b0bbcf99941d768d235b9f96c3e112a4dfea2fc..2d3636697a544e78113fc1e6902dd216acee070b 100644 +index 75a8f3ecaec5cdfe98aa8363326a8a2047ea75b1..317693bccccbb41f38dc726a71cf059d5a861e27 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -77,6 +77,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { - .ifPresent(profession -> this.setVillagerData(this.getVillagerData().withProfession(profession))); +@@ -76,6 +76,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { + super(entityType, level); } + // Purpur start - Ridables @@ -4702,10 +4693,10 @@ index 6b0bbcf99941d768d235b9f96c3e112a4dfea2fc..2d3636697a544e78113fc1e6902dd216 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index eff0dec6efe043ad0cb0126061583bc5b67ba0e2..f16aa79ba5137cd6132452c21b0dc81cbf4fac8b 100644 +index 1be7c756d56cca63347d97f7896b491f3a343fa4..deb47d4828ac94f8d68a799b98cc696674d94a6f 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -63,6 +63,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -64,6 +64,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { this.setPathfindingMalus(PathType.LAVA, 8.0F); } @@ -4730,10 +4721,10 @@ index eff0dec6efe043ad0cb0126061583bc5b67ba0e2..f16aa79ba5137cd6132452c21b0dc81c public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; diff --git a/net/minecraft/world/entity/monster/creaking/Creaking.java b/net/minecraft/world/entity/monster/creaking/Creaking.java -index bdefd070cfebe7f3f792c998f2f53be720cbfbcd..a23d624abb0622d362af0dc816425283e25c479a 100644 +index 567e7952efec69b4222563fae724d18a9902bb05..b87ad5259b416693e57e3863327f46ee08a4928f 100644 --- a/net/minecraft/world/entity/monster/creaking/Creaking.java +++ b/net/minecraft/world/entity/monster/creaking/Creaking.java -@@ -102,6 +102,29 @@ public class Creaking extends Monster { +@@ -103,6 +103,29 @@ public class Creaking extends Monster { return this.getHomePos() != null; } @@ -4763,7 +4754,7 @@ index bdefd070cfebe7f3f792c998f2f53be720cbfbcd..a23d624abb0622d362af0dc816425283 @Override protected BodyRotationControl createBodyControl() { return new Creaking.CreakingBodyRotationControl(this); -@@ -571,28 +594,28 @@ public class Creaking extends Monster { +@@ -572,28 +595,28 @@ public class Creaking extends Monster { } } @@ -4799,10 +4790,10 @@ index bdefd070cfebe7f3f792c998f2f53be720cbfbcd..a23d624abb0622d362af0dc816425283 } } diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 0d05d21158a59dc3aa648c1d6541121c5bb547e6..7c83e0612b8b0d48966aa3808d86daac79753584 100644 +index 0ecf8533f6cad081df8713856feb74db93028f71..fce1a2dda2587c55e39e4ef51c30b5556efe0b33 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -95,6 +95,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -96,6 +96,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { this.xpReward = 5; } @@ -4826,7 +4817,7 @@ index 0d05d21158a59dc3aa648c1d6541121c5bb547e6..7c83e0612b8b0d48966aa3808d86daac @VisibleForTesting public void setTimeInOverworld(int timeInOverworld) { this.timeInOverworld = timeInOverworld; -@@ -163,6 +180,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -164,6 +181,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("hoglinBrain"); @@ -4835,10 +4826,10 @@ index 0d05d21158a59dc3aa648c1d6541121c5bb547e6..7c83e0612b8b0d48966aa3808d86daac profilerFiller.pop(); HoglinAi.updateActivity(this); diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index e200e974e46de6166d56e051806c00a69aefc9bb..589e3014fb86448456c249c0255186644abb13c2 100644 +index 8392ff1316f0c5be685a6ded7ccd08933c10ff4e..29c687a5f459e100a78f77a2edbf9e607f17a5ab 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -136,6 +136,23 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -137,6 +137,23 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento this.xpReward = 5; } @@ -4860,9 +4851,9 @@ index e200e974e46de6166d56e051806c00a69aefc9bb..589e3014fb86448456c249c025518664 + // Purpur end - Ridables + @Override - public void addAdditionalSaveData(CompoundTag compound) { - super.addAdditionalSaveData(compound); -@@ -321,6 +338,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento + protected void addAdditionalSaveData(ValueOutput output) { + super.addAdditionalSaveData(output); +@@ -322,6 +339,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("piglinBrain"); @@ -4907,10 +4898,10 @@ index 219978cb0341b2d691f44c1146707d875788881e..4c8e49ba064241ec7ac505fa6f5df6d7 profilerFiller.pop(); PiglinBruteAi.updateActivity(this); diff --git a/net/minecraft/world/entity/monster/warden/Warden.java b/net/minecraft/world/entity/monster/warden/Warden.java -index cd28ca290c081d9f5e4498f59d7b87a566f81544..8d61d5347896481f250a18d04d17fd4d2088f633 100644 +index 4a4cc7f9c95d4f4b6ad4948e3ed3504efbbcef15..f8a6aba7d6f0f357c72602f4ac6c2537b604eb6c 100644 --- a/net/minecraft/world/entity/monster/warden/Warden.java +++ b/net/minecraft/world/entity/monster/warden/Warden.java -@@ -126,8 +126,32 @@ public class Warden extends Monster implements VibrationSystem { +@@ -124,8 +124,32 @@ public class Warden extends Monster implements VibrationSystem { this.setPathfindingMalus(PathType.LAVA, 8.0F); this.setPathfindingMalus(PathType.DAMAGE_FIRE, 0.0F); this.setPathfindingMalus(PathType.DANGER_FIRE, 0.0F); @@ -4943,7 +4934,7 @@ index cd28ca290c081d9f5e4498f59d7b87a566f81544..8d61d5347896481f250a18d04d17fd4d @Override public Packet getAddEntityPacket(ServerEntity entity) { return new ClientboundAddEntityPacket(this, entity, this.hasPose(Pose.EMERGING) ? 1 : 0); -@@ -391,6 +415,7 @@ public class Warden extends Monster implements VibrationSystem { +@@ -389,6 +413,7 @@ public class Warden extends Monster implements VibrationSystem { @Contract("null->false") public boolean canTargetEntity(@Nullable Entity entity) { @@ -4952,10 +4943,10 @@ index cd28ca290c081d9f5e4498f59d7b87a566f81544..8d61d5347896481f250a18d04d17fd4d && this.level() == entity.level() && EntitySelector.NO_CREATIVE_OR_SPECTATOR.test(entity) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 49d43837b88d8f278baa5062aed83a297fe20ed8..15669f9157dc3d3d5e3fb76a668c7e3b43ee8a52 100644 +index bcd191dc713d426b0af739ad67953fa130d0898c..dc5622cbb9d6a3ba92db634d5572d3c1c16d2bf6 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -249,6 +249,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -250,6 +250,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end - Lobotomize stuck villagers @@ -4984,7 +4975,7 @@ index 49d43837b88d8f278baa5062aed83a297fe20ed8..15669f9157dc3d3d5e3fb76a668c7e3b @Override public Brain getBrain() { return (Brain)super.getBrain(); -@@ -358,7 +380,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -359,7 +381,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end - Lobotomize stuck villagers // Pufferfish start @@ -4993,7 +4984,7 @@ index 49d43837b88d8f278baa5062aed83a297fe20ed8..15669f9157dc3d3d5e3fb76a668c7e3b this.getBrain().tick(level, this); // Paper - EAR 2 } else if (this.isLobotomized && shouldRestock()) restock(); // Purpur - Lobotomize stuck villagers -@@ -418,7 +440,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -419,7 +441,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return super.mobInteract(player, hand); } else if (this.isBaby()) { this.setUnhappy(); @@ -5002,7 +4993,7 @@ index 49d43837b88d8f278baa5062aed83a297fe20ed8..15669f9157dc3d3d5e3fb76a668c7e3b } else { if (!this.level().isClientSide) { boolean isEmpty = this.getOffers().isEmpty(); -@@ -431,9 +453,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -432,9 +454,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } if (isEmpty) { @@ -5016,10 +5007,10 @@ index 49d43837b88d8f278baa5062aed83a297fe20ed8..15669f9157dc3d3d5e3fb76a668c7e3b this.startTrading(player); } diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index b0eec451b68a6a2697b1620410f07b25c4d2fda7..21ab5911d52e49ec2de99071cb85ff2daa090dc4 100644 +index 93ed977260f369677028bbd8396862f344dfeaa3..e5d6d8bd30876832e6219969849e826070343f45 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -66,6 +66,23 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -67,6 +67,23 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill } // Purpur end - Allow leashing villagers @@ -5043,7 +5034,7 @@ index b0eec451b68a6a2697b1620410f07b25c4d2fda7..21ab5911d52e49ec2de99071cb85ff2d @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -@@ -127,8 +144,9 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -128,8 +145,9 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill if (!this.level().isClientSide) { if (this.getOffers().isEmpty()) { @@ -5055,10 +5046,10 @@ index b0eec451b68a6a2697b1620410f07b25c4d2fda7..21ab5911d52e49ec2de99071cb85ff2d if (this.level().purpurConfig.wanderingTraderAllowTrading) { // Purpur - Add config for villager trading this.setTradingPlayer(player); diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index bd4d3a920e015db49436336cc180bc0b937750a0..2417c26a03decf756ad93cd54265277c95c653ca 100644 +index aba0104c4953ef514118ee8af76d029100081fc4..c421cc7dc6c401a19eaf193abd970f21e910f927 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java -@@ -230,6 +230,19 @@ public abstract class Player extends LivingEntity { +@@ -239,6 +239,19 @@ public abstract class Player extends LivingEntity { } // CraftBukkit end @@ -5075,7 +5066,7 @@ index bd4d3a920e015db49436336cc180bc0b937750a0..2417c26a03decf756ad93cd54265277c + } + // Purpur end - Ridables + - public Player(Level level, BlockPos pos, float yRot, GameProfile gameProfile) { + public Player(Level level, GameProfile gameProfile) { super(EntityType.PLAYER, level); this.setUUID(gameProfile.getId()); diff --git a/net/minecraft/world/entity/projectile/LlamaSpit.java b/net/minecraft/world/entity/projectile/LlamaSpit.java @@ -5096,10 +5087,10 @@ index f736f72b8e76dd82236badcdd2756f0d4da89aa4..0dbfbadcabcf1b719addb034e676cb51 protected double getDefaultGravity() { return 0.06; diff --git a/net/minecraft/world/entity/projectile/WitherSkull.java b/net/minecraft/world/entity/projectile/WitherSkull.java -index c96dc62b9f890335892a8075ed9b1285f98c9e8a..8e95577de28fc4834dcfc3d4fed747d9d14b1618 100644 +index 5f20dded96fac2dd5d1b0282e7f8487344beb4ee..3b68e1a73da3e70f459cdc31e8447bcee37a914d 100644 --- a/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/net/minecraft/world/entity/projectile/WitherSkull.java -@@ -109,6 +109,14 @@ public class WitherSkull extends AbstractHurtingProjectile { +@@ -110,6 +110,14 @@ public class WitherSkull extends AbstractHurtingProjectile { } // Purpur end - Add canSaveToDisk to Entity diff --git a/purpur-server/minecraft-patches/unapplied-features/0002-Configurable-entity-base-attributes.patch b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch similarity index 87% rename from purpur-server/minecraft-patches/unapplied-features/0002-Configurable-entity-base-attributes.patch rename to purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch index 8f2f93849..c732be65e 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0002-Configurable-entity-base-attributes.patch +++ b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java -index 351f92e1627f465a9a292d4a5e5c256a8e323ab3..b6f52326f52ce2885ece346944a321d7c924a470 100644 +index 8e8ddab59de508c84c4182e105a11554387dcce0..1896f91e10a5e17332836d5354813a18a4dfe6dc 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java -@@ -46,6 +46,13 @@ public class GlowSquid extends Squid { +@@ -47,6 +47,13 @@ public class GlowSquid extends Squid { } // Purpur end - Ridables @@ -23,10 +23,10 @@ index 351f92e1627f465a9a292d4a5e5c256a8e323ab3..b6f52326f52ce2885ece346944a321d7 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index a6739650bfee639925a63f345ac39c6e0c5c3209..5208518ad9fe86e25b07aeffa9633407aa6f2f1c 100644 +index e78d30d8fdfcb1a530bf3380251fabd0c9a18f46..ae0c2f41c522656bde37d4f31699ee6172b5a79d 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -278,6 +278,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -291,6 +291,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin protected LivingEntity(EntityType entityType, Level level) { super(entityType, level); this.attributes = new AttributeMap(DefaultAttributes.getSupplier(entityType), this); // Purpur - Ridables @@ -34,7 +34,7 @@ index a6739650bfee639925a63f345ac39c6e0c5c3209..5208518ad9fe86e25b07aeffa9633407 this.craftAttributes = new org.bukkit.craftbukkit.attribute.CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - this.setHealth(this.getMaxHealth()) inlined and simplified to skip the instanceof check for Player, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, this.getMaxHealth()); -@@ -297,6 +298,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -309,6 +310,8 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin return new EntityEquipment(); } @@ -44,10 +44,10 @@ index a6739650bfee639925a63f345ac39c6e0c5c3209..5208518ad9fe86e25b07aeffa9633407 return this.brain; } diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java -index 99845dde0c633714acefb0bb482d8422d946dd46..581894f58df1df4b50aa537252cb4be6bbcebf80 100644 +index ed4016af3532f33023a3267cd0daa10757765fa3..d25da9a9560ce171df3ada22756e4c54a91ff378 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java -@@ -95,6 +95,21 @@ public class Bat extends AmbientCreature { +@@ -96,6 +96,21 @@ public class Bat extends AmbientCreature { } // Purpur end - Ridables @@ -70,10 +70,10 @@ index 99845dde0c633714acefb0bb482d8422d946dd46..581894f58df1df4b50aa537252cb4be6 public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index e55507fa09001b431519ef9c76bf444d7df3f7ea..d07a708f06ba738369882ddaa968c2de9c6c560e 100644 +index be1774d479bfcd349e62ecb69bf7367d6eea7d75..bdb16d355dac48760c9a083303035265f6a1fc74 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -472,6 +472,14 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -473,6 +473,14 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { return beehiveBlockEntity != null && beehiveBlockEntity.isFireNearby(); } @@ -89,10 +89,10 @@ index e55507fa09001b431519ef9c76bf444d7df3f7ea..d07a708f06ba738369882ddaa968c2de public int getRemainingPersistentAngerTime() { return this.entityData.get(DATA_REMAINING_ANGER_TIME); diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index 74a44f97dcf4fabeac28a2f8b31e9b717d47ea49..d2813c68df511a2702f2b57c31f828730a9a21c8 100644 +index a960c3a4854f7d2343747d463d1d505b2e39d16b..d429beb03da8b499f19c3ed721b110d916849698 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java -@@ -116,6 +116,14 @@ public class Cat extends TamableAnimal { +@@ -117,6 +117,14 @@ public class Cat extends TamableAnimal { } // Purpur end - Ridables @@ -108,10 +108,10 @@ index 74a44f97dcf4fabeac28a2f8b31e9b717d47ea49..d2813c68df511a2702f2b57c31f82873 protected void registerGoals() { this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true); diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java -index 8708a6e5a493b6150671b7bdd6b9971371ef309c..40fc57f1c298e1c70fddf8b6eb2f3e8e9e41e60c 100644 +index 26732fde9894816cb83ba1249b2ac9b47e2b639b..b4b2cebbc8d4645dec0b1bfe4243426a1e7ccda5 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java -@@ -88,6 +88,14 @@ public class Chicken extends Animal { +@@ -89,6 +89,14 @@ public class Chicken extends Animal { } // Purpur end - Ridables @@ -145,10 +145,10 @@ index 651c9243902e3c48fb438913974e996d67d6f746..ed52fbbf93e7a238d0f45981f8629ba8 public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index ff1b8c93baccf1d417ef0f9338a6f8d66716dafc..7c4f1eadcbc13010f6b4b5748b8e0d5c822458e1 100644 +index 802c536659d45d0974fe788535ca326b86f90551..9dbc5f7b3896acb199577afa85451da38f2d2a01 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java -@@ -45,6 +45,14 @@ public class Cow extends AbstractCow { +@@ -46,6 +46,14 @@ public class Cow extends AbstractCow { } // Purpur end - Ridables @@ -164,10 +164,10 @@ index ff1b8c93baccf1d417ef0f9338a6f8d66716dafc..7c4f1eadcbc13010f6b4b5748b8e0d5c protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java -index 144b163a4a82997ca88e906bbadcf5835636aece..932ec7ed4ec102f64fa977835d2c7ebe23afa6e3 100644 +index 213421070ce6a356aecc31ef7b13701b4403952a..c8ed91c1902261d6b15744e1fbe1bf7f861b51a8 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java -@@ -150,6 +150,14 @@ public class Dolphin extends AgeableWaterCreature { +@@ -151,6 +151,14 @@ public class Dolphin extends AgeableWaterCreature { } // Purpur end - Ridables @@ -183,10 +183,10 @@ index 144b163a4a82997ca88e906bbadcf5835636aece..932ec7ed4ec102f64fa977835d2c7ebe @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index eb25d655140e425208ee9eeae24ebb756f1b7306..8d69b6bb1d5efd0b47595a12acdd2088cddd5ace 100644 +index a81ada76bfd6c4b49d1552f48e2009bc7d8c71d2..869a0154c81593db8933f9daa6a7d3a9d02facc5 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -179,6 +179,14 @@ public class Fox extends Animal { +@@ -180,6 +180,14 @@ public class Fox extends Animal { } // Purpur end - Ridables @@ -202,10 +202,10 @@ index eb25d655140e425208ee9eeae24ebb756f1b7306..8d69b6bb1d5efd0b47595a12acdd2088 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java -index 3a78342a9ce9b5393a280530b50a8c843e201845..fd0d1abcb34862fc7a812f1e3d96969a5c917352 100644 +index d7c330e77c384bba800829bdbe07f6b66695896e..1cb7e0985a59e83f118d4656e94a79f4d81836ff 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java -@@ -91,6 +91,14 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -92,6 +92,14 @@ public class IronGolem extends AbstractGolem implements NeutralMob { } // Purpur end - Ridables @@ -221,10 +221,10 @@ index 3a78342a9ce9b5393a280530b50a8c843e201845..fd0d1abcb34862fc7a812f1e3d96969a protected void registerGoals() { if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur - Iron golem calm anger options diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index f04342dd4addb2be47533f12a2a475f12c1869f1..af035af33db993cf7c573b87df576529e98a842e 100644 +index 80c25b591e0b9f3f8132cdad27d1896d70293cd2..8cfbe37df24647c3f0a2d64bcc3451de1402c86f 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -78,6 +78,13 @@ public class MushroomCow extends AbstractCow implements Shearable { +@@ -79,6 +79,13 @@ public class MushroomCow extends AbstractCow implements Shearable { } // Purpur end - Ridables @@ -239,10 +239,10 @@ index f04342dd4addb2be47533f12a2a475f12c1869f1..af035af33db993cf7c573b87df576529 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index b8780911350ac5f4f10acdbed2b13523c8692344..b05aea388ddadaa5bc28bee9f3f4d7fbf673eaa7 100644 +index 2aad5800fa4e2fc68fb63ab440dc9d5fccb2d86b..84664a62dcae89dff1b63b0ac952756440ee090f 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java -@@ -80,6 +80,14 @@ public class Ocelot extends Animal { +@@ -81,6 +81,14 @@ public class Ocelot extends Animal { } // Purpur end - Ridables @@ -258,10 +258,10 @@ index b8780911350ac5f4f10acdbed2b13523c8692344..b05aea388ddadaa5bc28bee9f3f4d7fb return this.entityData.get(DATA_TRUSTING); } diff --git a/net/minecraft/world/entity/animal/Panda.java b/net/minecraft/world/entity/animal/Panda.java -index 44af6a2bcb1ba60a487555c5240b38798798b769..ebeed4fab4fff87ac61a3a4ef28443eb4746c3fa 100644 +index cbe493c19cd377c3b284dd9b3ea7bf24fee5cd7c..4ec69b45049b2c947e0d9ef71619e8acd358e7ad 100644 --- a/net/minecraft/world/entity/animal/Panda.java +++ b/net/minecraft/world/entity/animal/Panda.java -@@ -132,6 +132,15 @@ public class Panda extends Animal { +@@ -133,6 +133,15 @@ public class Panda extends Animal { } // Purpur end - Ridables @@ -277,7 +277,7 @@ index 44af6a2bcb1ba60a487555c5240b38798798b769..ebeed4fab4fff87ac61a3a4ef28443eb @Override protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) { return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot(); -@@ -625,7 +634,11 @@ public class Panda extends Animal { +@@ -626,7 +635,11 @@ public class Panda extends Animal { public void setAttributes() { if (this.isWeak()) { @@ -291,10 +291,10 @@ index 44af6a2bcb1ba60a487555c5240b38798798b769..ebeed4fab4fff87ac61a3a4ef28443eb if (this.isLazy()) { diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java -index 573efbc5f5f4ad0be30868c7faa058e68bf2fd67..94031cbd5d40c9a5536b1d1c404bbe2666e8ae0a 100644 +index 03e68a5bd1c51da13dafefe002f95884ee5787d0..d997102941a6add1b116053c119bcd6690eb42a5 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java -@@ -191,6 +191,14 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -193,6 +193,14 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { } // Purpur end - Ridables @@ -310,10 +310,10 @@ index 573efbc5f5f4ad0be30868c7faa058e68bf2fd67..94031cbd5d40c9a5536b1d1c404bbe26 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index 9e15bf55aa3986a227452fb1a5ebc4315f6f4d6c..70d5debdf6a7e9b631e21b47e7e35b15c065410b 100644 +index c2ac954b9cdea04450c7d72845568236fff1b686..9f511a6a2692dc46c14e0e0e59518c0a3040cfb9 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java -@@ -82,6 +82,14 @@ public class Pig extends Animal implements ItemSteerable { +@@ -83,6 +83,14 @@ public class Pig extends Animal implements ItemSteerable { } // Purpur end - Ridables @@ -329,10 +329,10 @@ index 9e15bf55aa3986a227452fb1a5ebc4315f6f4d6c..70d5debdf6a7e9b631e21b47e7e35b15 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java -index 4561b590b0068bfbcfd990bbf8b6640c0bd1493c..d6f5c2573f5fd072a7eaed39790b43e7a67cf3b8 100644 +index 16dcc17778f3bde4c034a12259188d8297685dd9..28919a96de837a15d116c6b863eba5c8a1cf6a7b 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java -@@ -116,6 +116,14 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -117,6 +117,14 @@ public class PolarBear extends Animal implements NeutralMob { } // Purpur end - Ridables @@ -348,10 +348,10 @@ index 4561b590b0068bfbcfd990bbf8b6640c0bd1493c..d6f5c2573f5fd072a7eaed39790b43e7 @Override public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { diff --git a/net/minecraft/world/entity/animal/Pufferfish.java b/net/minecraft/world/entity/animal/Pufferfish.java -index c35973498b0abae2dafa63f30ed5e6ca87f6baa5..bed7d937f02d1fbc8fdd277a2d0524e79b19f707 100644 +index 754cd3c887c22b9b2afb0d70a2c57bfe6b251206..dbdb7f71464ccd06a04a47ace24a86e6854409fc 100644 --- a/net/minecraft/world/entity/animal/Pufferfish.java +++ b/net/minecraft/world/entity/animal/Pufferfish.java -@@ -58,6 +58,13 @@ public class Pufferfish extends AbstractFish { +@@ -59,6 +59,13 @@ public class Pufferfish extends AbstractFish { } // Purpur end - Ridables @@ -366,10 +366,10 @@ index c35973498b0abae2dafa63f30ed5e6ca87f6baa5..bed7d937f02d1fbc8fdd277a2d0524e7 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index 338a1d3f1352f49ba5b53c55a49abce3ded2b0c0..8e3dcd912d7631bc7863a576e28f85c8d1cb2818 100644 +index 4f33044bf7c8fdf867983691b74a7f47b4689267..d74b492c5d1c3a323106b5de5bbf595a38d976a1 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java -@@ -144,6 +144,14 @@ public class Rabbit extends Animal { +@@ -145,6 +145,14 @@ public class Rabbit extends Animal { } // Purpur end - Ridables @@ -385,10 +385,10 @@ index 338a1d3f1352f49ba5b53c55a49abce3ded2b0c0..8e3dcd912d7631bc7863a576e28f85c8 public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Salmon.java b/net/minecraft/world/entity/animal/Salmon.java -index 2b60d92eec3192416b0c39ddaa1fa490d15a6137..8559e7e8c5163eb55b997521dca2e96b5ae3c9bc 100644 +index 265b2a6db778cabc1a97726c22c991051e3007fe..e426b3280b519a3cd727b200794324361c62b67e 100644 --- a/net/minecraft/world/entity/animal/Salmon.java +++ b/net/minecraft/world/entity/animal/Salmon.java -@@ -50,6 +50,13 @@ public class Salmon extends AbstractSchoolingFish { +@@ -51,6 +51,13 @@ public class Salmon extends AbstractSchoolingFish { } // Purpur end - Ridables @@ -403,10 +403,10 @@ index 2b60d92eec3192416b0c39ddaa1fa490d15a6137..8559e7e8c5163eb55b997521dca2e96b public int getMaxSchoolSize() { return 5; diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index aca62391131333d604d21c9aaf2bcea620dc51b3..764429b9d20ac105c9ae3b050adf5d3defbd6038 100644 +index 6c7b218c01f466ccd1d427206c6662e23bea1c0e..2350e5a0ba3d4c3782332a4ef51e2b0ef0b53f39 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java -@@ -79,6 +79,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -80,6 +80,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM } // Purpur end - Ridables @@ -441,10 +441,10 @@ index 21ff0b49a1df9b8a95cb2fdf7b43d9a676a497a6..2a0dc779ec2a53a4feb4d2d665cf9d82 protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/net/minecraft/world/entity/animal/TropicalFish.java b/net/minecraft/world/entity/animal/TropicalFish.java -index d7bea58644dd707b835e0c728b2c89c697c7e554..946874b3146bd7b226b4cb07110eec57c2968bb7 100644 +index cc26b929abd249536659df03a1cafbe83cde6f0f..c102db5ffdfc7dcb0ec7e59fb031fe6afcdd8237 100644 --- a/net/minecraft/world/entity/animal/TropicalFish.java +++ b/net/minecraft/world/entity/animal/TropicalFish.java -@@ -88,6 +88,13 @@ public class TropicalFish extends AbstractSchoolingFish { +@@ -89,6 +89,13 @@ public class TropicalFish extends AbstractSchoolingFish { } // Purpur end - Ridables @@ -459,10 +459,10 @@ index d7bea58644dd707b835e0c728b2c89c697c7e554..946874b3146bd7b226b4cb07110eec57 return "entity.minecraft.tropical_fish.predefined." + variantId; } diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java -index 7c97f917b0cc5652c20abdd26428cccad10b8757..11772e81d932fae6542a0cb2d283ef91b5bbbd76 100644 +index 4302c302d974bae294d7ffa6f30439f44fe5d0b1..e26b97e92ecfadb351e91aeae38beb4c4da87e26 100644 --- a/net/minecraft/world/entity/animal/Turtle.java +++ b/net/minecraft/world/entity/animal/Turtle.java -@@ -102,6 +102,14 @@ public class Turtle extends Animal { +@@ -103,6 +103,14 @@ public class Turtle extends Animal { } // Purpur end - Ridables @@ -478,10 +478,10 @@ index 7c97f917b0cc5652c20abdd26428cccad10b8757..11772e81d932fae6542a0cb2d283ef91 this.homePos = homePos; } diff --git a/net/minecraft/world/entity/animal/allay/Allay.java b/net/minecraft/world/entity/animal/allay/Allay.java -index 31371684bb2bddc6bf9592bef1190af3b09f4d65..062f2ca0c8f2443cf890dc917b9de46310eb79bc 100644 +index e05f92d31cae8ac143274c662b2eca18ebc378d7..cf6ff7b7b4a007d7ff4b3c5a25d4f5a36422c683 100644 --- a/net/minecraft/world/entity/animal/allay/Allay.java +++ b/net/minecraft/world/entity/animal/allay/Allay.java -@@ -171,6 +171,14 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -168,6 +168,14 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS } // Purpur end - Ridables @@ -497,10 +497,10 @@ index 31371684bb2bddc6bf9592bef1190af3b09f4d65..062f2ca0c8f2443cf890dc917b9de463 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/net/minecraft/world/entity/animal/armadillo/Armadillo.java -index 2b38e942492b3324683e05d36ed906462da92ac4..67a93960b3c6fe5725783ebf9f1c5b57e931f58c 100644 +index c13745fc848c56bfce6161099c27388dc4164cb3..e4c8376c009984e40b90c01f78c65e76e260ee0b 100644 --- a/net/minecraft/world/entity/animal/armadillo/Armadillo.java +++ b/net/minecraft/world/entity/animal/armadillo/Armadillo.java -@@ -98,6 +98,14 @@ public class Armadillo extends Animal { +@@ -99,6 +99,14 @@ public class Armadillo extends Animal { } // Purpur end - Ridables @@ -516,10 +516,10 @@ index 2b38e942492b3324683e05d36ed906462da92ac4..67a93960b3c6fe5725783ebf9f1c5b57 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index f3f0f5d7fe79e87b893aa52113f02a774ccc057a..83b1080765eb49a8a606258bb2db8b1a7daea081 100644 +index 8a21191672e524457f7f45782c57dd3638df1cec..17b20b36a3edafaea089288d22ad3e07795b9770 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -137,6 +137,14 @@ public class Axolotl extends Animal implements Bucketable { +@@ -139,6 +139,14 @@ public class Axolotl extends Animal implements Bucketable { } // Purpur end - Ridables @@ -535,10 +535,10 @@ index f3f0f5d7fe79e87b893aa52113f02a774ccc057a..83b1080765eb49a8a606258bb2db8b1a public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; diff --git a/net/minecraft/world/entity/animal/camel/Camel.java b/net/minecraft/world/entity/animal/camel/Camel.java -index 3d4efc2918fd10a63065a052d9e460b49489cf00..6c6ef89aacbc328a2cb2dc05022998dbd79cfaf8 100644 +index 78073cf5c93389224ccf7d7036d6b11af05280b6..f45d1ba8dc0bb4b7041c5efba5d6261a3a5f5ff4 100644 --- a/net/minecraft/world/entity/animal/camel/Camel.java +++ b/net/minecraft/world/entity/animal/camel/Camel.java -@@ -334,6 +334,23 @@ public class Camel extends AbstractHorse { +@@ -336,6 +336,23 @@ public class Camel extends AbstractHorse { return this.dashCooldown; } @@ -563,10 +563,10 @@ index 3d4efc2918fd10a63065a052d9e460b49489cf00..6c6ef89aacbc328a2cb2dc05022998db public SoundEvent getAmbientSound() { return SoundEvents.CAMEL_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 8bd9fd0a017b9822129119d7e16e872f0bdc8c2d..601e2912790759487c8d2f270f30a82689c52236 100644 +index ba56d68737cedabcddafafb18022f7c106631ca4..e78ef459d6eecb7f69882ed95cd9f9967f53989f 100644 --- a/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/net/minecraft/world/entity/animal/horse/AbstractHorse.java -@@ -138,6 +138,46 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory +@@ -139,6 +139,46 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory } // Purpur end - Ridables @@ -613,7 +613,7 @@ index 8bd9fd0a017b9822129119d7e16e872f0bdc8c2d..601e2912790759487c8d2f270f30a826 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HorseHasRider(this)); // Purpur - Ridables -@@ -1054,7 +1094,7 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory +@@ -1051,7 +1091,7 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory spawnGroupData = new AgeableMob.AgeableMobGroupData(0.2F); } @@ -651,10 +651,10 @@ index 66dda36aeb668488076f0c93dc83ab6cc4ec1a31..3aa12702cd1f4ef160180bc6ba64a656 public SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java -index 5b2d1fedf61880990ca29b51b3d83a19e79047d1..e0346014de51958976459eeb6677d886e7f261ab 100644 +index f1cb2e315e1d86f9fcd87db11d3ee7a81cfe12f6..53c0eac62018a0d88e30b8c13de94216ff829cd8 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java -@@ -53,6 +53,23 @@ public class Horse extends AbstractHorse { +@@ -54,6 +54,23 @@ public class Horse extends AbstractHorse { } // Purpur end - Ridables @@ -679,10 +679,10 @@ index 5b2d1fedf61880990ca29b51b3d83a19e79047d1..e0346014de51958976459eeb6677d886 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index b60fa4cb07d8dc6b52e76b5e9f596bafc815ba2d..10e7724d424cd39c96b91cf3de4bc4524d9311a4 100644 +index da6450f7573ca9797577d5afae2bb1365d112177..6fe6507edbf4c3c2795b8fe000d230d5fe6a2486 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -129,6 +129,23 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -130,6 +130,23 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { } // Purpur end - Ridables @@ -735,10 +735,10 @@ index b1c96936ba8dcba4435a649dd7e6ec3c921c3702..0107bb5fc029c5390d73e9a4cd08c138 public SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index b8bdf9d4665cbfa590842727079a740274f13c34..b7903386ce4648ef577b1d4875866b7c268c888b 100644 +index ba0e483df57cc56f356282519105a2e3e77601f8..a7bcc0ff10e429ebfe91173c392e9a0c07903289 100644 --- a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -@@ -48,6 +48,23 @@ public class SkeletonHorse extends AbstractHorse { +@@ -49,6 +49,23 @@ public class SkeletonHorse extends AbstractHorse { } // Purpur end - Ridables @@ -763,10 +763,10 @@ index b8bdf9d4665cbfa590842727079a740274f13c34..b7903386ce4648ef577b1d4875866b7c return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/horse/TraderLlama.java b/net/minecraft/world/entity/animal/horse/TraderLlama.java -index d67d24e64d387a7f6a18aef1c8dcab1c6df3f824..4664de247745c5346f1d131b19aac0512d394647 100644 +index 7214a8d3597cd46cdc8e0837365cdb4a0a5b4cba..39175d4537e84ef39bcbdafc5200ed7b14482d62 100644 --- a/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/net/minecraft/world/entity/animal/horse/TraderLlama.java -@@ -52,6 +52,23 @@ public class TraderLlama extends Llama { +@@ -53,6 +53,23 @@ public class TraderLlama extends Llama { } // Purpur end - Ridables @@ -819,10 +819,10 @@ index 45d09ebcc9ce4321285a4ec49e8ee369290f6b2c..3d597bd355b6c918ea1bf4b7d537ad4f return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/sheep/Sheep.java b/net/minecraft/world/entity/animal/sheep/Sheep.java -index a3df1d80dbaefb5bc7e7e2618039876bcf1d3462..7d4d13d78da258bdceae82cc57e0aa5a3e06fd7d 100644 +index f9e86a4f632e96d5cf531c90f2813afe2fb45fbb..8e4a14ca6a0cef1c52c64de3502077d7d25b0308 100644 --- a/net/minecraft/world/entity/animal/sheep/Sheep.java +++ b/net/minecraft/world/entity/animal/sheep/Sheep.java -@@ -101,6 +101,14 @@ public class Sheep extends Animal implements Shearable { +@@ -79,6 +79,14 @@ public class Sheep extends Animal implements Shearable { } // Purpur end - Ridables @@ -838,10 +838,10 @@ index a3df1d80dbaefb5bc7e7e2618039876bcf1d3462..7d4d13d78da258bdceae82cc57e0aa5a protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/net/minecraft/world/entity/animal/sniffer/Sniffer.java -index 6c252b8021dbeb2a9ffee8a3744ac0165fd032e8..fab5a8d0974aab57a1e4a803eb4f3b47a3ee4a07 100644 +index 430c2ba035468a81402d6ed0a442006d94d33f09..683c9f82bfb2306f81b094464462d7d372ef5b22 100644 --- a/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/net/minecraft/world/entity/animal/sniffer/Sniffer.java -@@ -105,6 +105,14 @@ public class Sniffer extends Animal { +@@ -106,6 +106,14 @@ public class Sniffer extends Animal { } // Purpur end - Ridables @@ -857,10 +857,10 @@ index 6c252b8021dbeb2a9ffee8a3744ac0165fd032e8..fab5a8d0974aab57a1e4a803eb4f3b47 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java -index cff9bc3d8c9ef1935c25c4001dfd638855062573..601343a604322bae7ef91eecc91da70ee377d8f3 100644 +index d4fa7d17d3fb63e0bdc09db9e454ca4376817265..7326debf3725844bfe8730dab480da7b1d6e99aa 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java -@@ -209,6 +209,14 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -208,6 +208,14 @@ public class Wolf extends TamableAnimal implements NeutralMob { } // Purpur end - Ridables @@ -876,10 +876,10 @@ index cff9bc3d8c9ef1935c25c4001dfd638855062573..601343a604322bae7ef91eecc91da70e protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index a414934ae4332cc6cf622d4bb19c5937713f92a2..793567170b33ba21016b8767598d294fca4acec4 100644 +index f669dd446fc07d15c66a2a96006891bc6171baa4..40c92ff02c22ef18b36f5d8677096dc82a60f1bb 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -164,6 +164,13 @@ public class EnderDragon extends Mob implements Enemy { +@@ -165,6 +165,13 @@ public class EnderDragon extends Mob implements Enemy { } // Purpur end - Ridables @@ -891,9 +891,9 @@ index a414934ae4332cc6cf622d4bb19c5937713f92a2..793567170b33ba21016b8767598d294f + // Purpur end - Configurable entity base attributes + public static AttributeSupplier.Builder createAttributes() { - return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0); + return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0).add(Attributes.CAMERA_DISTANCE, 16.0); } -@@ -1062,7 +1069,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -1063,7 +1070,7 @@ public class EnderDragon extends Mob implements Enemy { @Override protected float sanitizeScale(float scale) { @@ -903,10 +903,10 @@ index a414934ae4332cc6cf622d4bb19c5937713f92a2..793567170b33ba21016b8767598d294f // CraftBukkit start - SPIGOT-2420: Special case, the ender dragon drops 12000 xp for the first kill and 500 xp for every other kill and this over time. diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 15e2c0d566256c4ba175e991d6d7fd4fdcd49c8e..f0ec9334d9e6bf879568a085db691c46f7c652b6 100644 +index 2c6158de44a8ba95d3c5124ed2827a0aa24b672d..7aaa905034979e557db97456eae3563614aab8d1 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -212,6 +212,14 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -213,6 +213,14 @@ public class WitherBoss extends Monster implements RangedAttackMob { } // Purpur end - Ridables @@ -921,7 +921,7 @@ index 15e2c0d566256c4ba175e991d6d7fd4fdcd49c8e..f0ec9334d9e6bf879568a085db691c46 @Override protected PathNavigation createNavigation(Level level) { FlyingPathNavigation flyingPathNavigation = new FlyingPathNavigation(this, level); -@@ -434,7 +442,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -435,7 +443,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { this.setInvulnerableTicks(i); if (this.tickCount % 10 == 0) { @@ -950,10 +950,10 @@ index 971b974c6717a544f7f96c441cd76e9dc8d0cc2c..1636e2809701013a18700ac17807fe7e protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/Bogged.java b/net/minecraft/world/entity/monster/Bogged.java -index f572ee0a8edd6c4adb17c06083e165d4d8ed8550..bc8f46b656895d916e44a9e1dc9175da96c2fde8 100644 +index b1f06656bf60eda01e06cd4cfd908edc7b51c628..cace310ad4ad320a8a5745c6af3ec4b57e75b6a5 100644 --- a/net/minecraft/world/entity/monster/Bogged.java +++ b/net/minecraft/world/entity/monster/Bogged.java -@@ -59,6 +59,14 @@ public class Bogged extends AbstractSkeleton implements Shearable { +@@ -60,6 +60,14 @@ public class Bogged extends AbstractSkeleton implements Shearable { } // Purpur end - Ridables @@ -988,10 +988,10 @@ index 4873a3d8dd9c160ecdbda594ee546c35ec03a1e7..64eecd8d1acd318743800c1daa77cd97 public boolean doHurtTarget(ServerLevel level, Entity source) { if (super.doHurtTarget(level, source)) { diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java -index 562641cdb76e7a50706459bee8a2dcdf441588cd..53a7390c61b9ada8784eae0c9b4e78ee85c68317 100644 +index 5684ab59acb554f097d713d7c1a9860452bd3564..60e420d79b73dd844bdae6c3846c6f4838fe2ca2 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java -@@ -135,6 +135,14 @@ public class Creeper extends Monster { +@@ -136,6 +136,14 @@ public class Creeper extends Monster { } // Purpur end - Ridables @@ -1007,12 +1007,12 @@ index 562641cdb76e7a50706459bee8a2dcdf441588cd..53a7390c61b9ada8784eae0c9b4e78ee protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java -index be7b7eb8328277dc790b9953161c3603d3bbe873..526de34154d873d1479f9276981e181be959ebef 100644 +index fb7a06d64a2f3ac2355bcf9eb515d4504786c585..ec0f27d04125765e91e43c4c18415b29db62b181 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java -@@ -92,6 +92,19 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -93,6 +93,19 @@ public class Drowned extends Zombie implements RangedAttackMob { + return new AmphibiousPathNavigation(this, level); } - // Purpur end - Ridables + // Purpur start - Configurable entity base attributes + @Override @@ -1031,7 +1031,7 @@ index be7b7eb8328277dc790b9953161c3603d3bbe873..526de34154d873d1479f9276981e181b protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0)); diff --git a/net/minecraft/world/entity/monster/ElderGuardian.java b/net/minecraft/world/entity/monster/ElderGuardian.java -index eccbb27aa7efa6e24e04db114b06c7dbf54f9938..15f037dbd9bafc8a978911dfa04c42f3c19dc7fd 100644 +index 07355eb21c7b06d282be32f6956d4de9e399b9c9..7ebc7224d3db38cc5137112d5a74999f6e23b8d5 100644 --- a/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/net/minecraft/world/entity/monster/ElderGuardian.java @@ -43,6 +43,14 @@ public class ElderGuardian extends Guardian { @@ -1050,10 +1050,10 @@ index eccbb27aa7efa6e24e04db114b06c7dbf54f9938..15f037dbd9bafc8a978911dfa04c42f3 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0); } diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index f991e59e896fc39da8f318871168b4c9bb0d8328..c01c91db94136700f9501624763e3bd735986a9f 100644 +index 6836b44d88d8c7b74c05f56b66887c0319805ee7..c83d7c43969a94432f6bec076f78fb500f672926 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -108,6 +108,14 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -106,6 +106,14 @@ public class EnderMan extends Monster implements NeutralMob { } // Purpur end - Ridables @@ -1069,10 +1069,10 @@ index f991e59e896fc39da8f318871168b4c9bb0d8328..c01c91db94136700f9501624763e3bd7 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java -index ddb40c13cee7db16fc9b094828356e743e9507f2..a3095f2a5ff162d502502ad2ed0a485daba86962 100644 +index 0d03bebf2cda34072db561f6e27b06a7d26095d1..2c3e44b82b396dd8e870f548f1d18d8f4b91ad1d 100644 --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java -@@ -63,6 +63,14 @@ public class Endermite extends Monster { +@@ -64,6 +64,14 @@ public class Endermite extends Monster { } // Purpur end - Ridables @@ -1088,10 +1088,10 @@ index ddb40c13cee7db16fc9b094828356e743e9507f2..a3095f2a5ff162d502502ad2ed0a485d protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Evoker.java b/net/minecraft/world/entity/monster/Evoker.java -index 889f6be331b3b7b80de60c414b77d68947477f9e..5773dd99ad2b014dde6666f4b32a1e6ee024a9fc 100644 +index 10142de6bdf9474958ca939c956a428218ee48db..e8aac93cffa3a9d4105c03c1aeb4d571ee0eba6c 100644 --- a/net/minecraft/world/entity/monster/Evoker.java +++ b/net/minecraft/world/entity/monster/Evoker.java -@@ -67,6 +67,14 @@ public class Evoker extends SpellcasterIllager { +@@ -65,6 +65,14 @@ public class Evoker extends SpellcasterIllager { } // Purpur end - Ridables @@ -1107,10 +1107,10 @@ index 889f6be331b3b7b80de60c414b77d68947477f9e..5773dd99ad2b014dde6666f4b32a1e6e protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java -index e087a2348dee66e0374246e992ed66bb8f18dce0..a55d588709bbf04d4267bd991fb3be0daaba34d4 100644 +index c7ac650f9618fd124035f9cf01fffada7efc97e1..5e2ae3ada994b5fa7758a61cdf1c0e9f26c23a79 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java -@@ -77,6 +77,14 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -86,6 +86,14 @@ public class Ghast extends Mob implements Enemy { } // Purpur end - Ridables @@ -1126,7 +1126,7 @@ index e087a2348dee66e0374246e992ed66bb8f18dce0..a55d588709bbf04d4267bd991fb3be0d protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/Giant.java b/net/minecraft/world/entity/monster/Giant.java -index 135f83484ac31db7dcc225ba6f94e2e4ca27eea8..13021800af7cc9263ef4f393f9cfbda5061a32ae 100644 +index c098fc14eb4f2ebd7dc1f6be9507279296416eea..e673f488bfab9648075857bc40e1339f974a903c 100644 --- a/net/minecraft/world/entity/monster/Giant.java +++ b/net/minecraft/world/entity/monster/Giant.java @@ -35,6 +35,16 @@ public class Giant extends Monster { @@ -1144,8 +1144,8 @@ index 135f83484ac31db7dcc225ba6f94e2e4ca27eea8..13021800af7cc9263ef4f393f9cfbda5 + // Purpur end - Configurable entity base attributes + 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); - } + return Monster.createMonsterAttributes() + .add(Attributes.MAX_HEALTH, 100.0) diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java index 26fb38b9741304f4fe461c929ead0f392255a3de..2b03af6e0f378d855c42fa688d0cd2bc8480102b 100644 --- a/net/minecraft/world/entity/monster/Guardian.java @@ -1189,7 +1189,7 @@ index 0335e85f196363c06597812149e9a93cba57fa9e..5b0794bd87423715cada1f860b4141fd EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index d75eb765f271fb7e33d0332079aea024788dc227..09804a8c789bff4f40277c2697c3f9aed00c4d15 100644 +index 304a1ce41071e5597859b1235fa014f966ff5cfb..c45786fa6b9c7834b73fa0266ad4f37dfdfb8937 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -74,6 +74,16 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -1243,10 +1243,10 @@ index 4a1299d6cee2807522de0c2d0d4745c5810e4121..bb1364c4a220cc93f7ac01cbaa617561 return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 2653cf2c353d7ae360201e74c4860a4745dd4948..2f14561a3722f8175a234ad656ef64d4c58e3b96 100644 +index 99194cf1fa89d3112719ead9f7de260ca5b9b676..96ef89704122485948a526bcc323379474ac9343 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -152,7 +152,10 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -153,7 +153,10 @@ public class Phantom extends Mob implements Enemy { private void updatePhantomSizeInfo() { this.refreshDimensions(); if (level().purpurConfig.phantomFlamesOnSwoop && attackPhase == AttackPhase.SWOOP) shoot(); // Purpur - Ridables - Phantom flames on swoop @@ -1258,7 +1258,7 @@ index 2653cf2c353d7ae360201e74c4860a4745dd4948..2f14561a3722f8175a234ad656ef64d4 } public int getPhantomSize() { -@@ -177,6 +180,23 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -178,6 +181,23 @@ public class Phantom extends Mob implements Enemy { return true; } @@ -1283,10 +1283,10 @@ index 2653cf2c353d7ae360201e74c4860a4745dd4948..2f14561a3722f8175a234ad656ef64d4 public void tick() { super.tick(); diff --git a/net/minecraft/world/entity/monster/Pillager.java b/net/minecraft/world/entity/monster/Pillager.java -index 852316c9a9d0860a538eae32001e60f05dc6938f..eb4fcf0e78c39a4b94b7edb733694a87e3103552 100644 +index fa49ed77f33bca6335812e9f56176cc053a364ad..bcc20f9642e9d20cf18bb5f8e63daa277154be1a 100644 --- a/net/minecraft/world/entity/monster/Pillager.java +++ b/net/minecraft/world/entity/monster/Pillager.java -@@ -80,6 +80,14 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve +@@ -81,6 +81,14 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve } // Purpur end - Ridables @@ -1302,10 +1302,10 @@ index 852316c9a9d0860a538eae32001e60f05dc6938f..eb4fcf0e78c39a4b94b7edb733694a87 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index 382ef8b0f8d5c5ef6a7698097e9b41b7adc04353..3adf0ec66db61b556a06ffe0fe835b57f8520948 100644 +index b67ac487ce4a7fd8b2f62452ab0b87f4a55006f2..9e7b07f353fb8f0650b8805014c371368eaabcd5 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java -@@ -92,6 +92,14 @@ public class Ravager extends Raider { +@@ -93,6 +93,14 @@ public class Ravager extends Raider { } // Purpur end - Ridables @@ -1321,10 +1321,10 @@ index 382ef8b0f8d5c5ef6a7698097e9b41b7adc04353..3adf0ec66db61b556a06ffe0fe835b57 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index 14cddb216b32990c2ce2381a4d6bf6f76c686f95..2b19edafe00be425427f47cac045bf301e3caa39 100644 +index e0c70493e771b50885b0263ff07e8ee594c2dfdc..069dacf455e597a4cb2efae03553479cac2a5fec 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -126,6 +126,14 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -127,6 +127,14 @@ public class Shulker extends AbstractGolem implements Enemy { } // Purpur end - Ridables @@ -1339,7 +1339,7 @@ index 14cddb216b32990c2ce2381a4d6bf6f76c686f95..2b19edafe00be425427f47cac045bf30 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables -@@ -609,7 +617,7 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -610,7 +618,7 @@ public class Shulker extends AbstractGolem implements Enemy { @Override protected float sanitizeScale(float scale) { @@ -1370,10 +1370,10 @@ index 19dcc657fd2a995638d5e23c2b043d012d978e79..c200d57841304ba0d7a76fdd9a440fe9 protected void registerGoals() { this.friendsGoal = new Silverfish.SilverfishWakeUpFriendsGoal(this); diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java -index 9a197c2be40e0a69f4a68ff045c2395802f0a5f3..54941e5f93579db512472d324a48a9b272787b91 100644 +index ed4f0d48120384d847291724ac995cdee00d10aa..c19b76a1a0572cb52ee83769384cdb44e4cdf700 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -43,6 +43,13 @@ public class Skeleton extends AbstractSkeleton { +@@ -44,6 +44,13 @@ public class Skeleton extends AbstractSkeleton { } // Purpur end - Ridables @@ -1388,10 +1388,10 @@ index 9a197c2be40e0a69f4a68ff045c2395802f0a5f3..54941e5f93579db512472d324a48a9b2 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java -index 9127e99d632bcd01c2f042c33dc87dd49736b96f..015af82ab82c3676a7b80c01b83eaf61ee28b61b 100644 +index 7ac6449dc3ede6bda51579282b1155371f0800d3..38cdc67bd683b653eb76b1c70e5b493f08245fe6 100644 --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java -@@ -100,6 +100,39 @@ public class Slime extends Mob implements Enemy { +@@ -101,6 +101,39 @@ public class Slime extends Mob implements Enemy { } // Purpur end - Ridables @@ -1431,7 +1431,7 @@ index 9127e99d632bcd01c2f042c33dc87dd49736b96f..015af82ab82c3676a7b80c01b83eaf61 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables -@@ -130,9 +163,9 @@ public class Slime extends Mob implements Enemy { +@@ -131,9 +164,9 @@ public class Slime extends Mob implements Enemy { this.entityData.set(ID_SIZE, i); this.reapplyPosition(); this.refreshDimensions(); @@ -1481,7 +1481,7 @@ index 4a7dbd1e4d927240433882a95822e9edfc83b827..b5465b552c5aea7603a54cfdeafe451b EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java -index bb46a6ec3ad6a7d0943bf61028d5f9abf76bbeb7..4ea92637677997ab4c98da437394f5682ba2389a 100644 +index ddd3a0d629f720b7acacf01bf2a7db53ee28724e..a68e9f3f96f37b6dd685fd02072f38b9e320fffc 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java @@ -109,6 +109,14 @@ public class Strider extends Animal implements ItemSteerable { @@ -1500,10 +1500,10 @@ index bb46a6ec3ad6a7d0943bf61028d5f9abf76bbeb7..4ea92637677997ab4c98da437394f568 EntityType entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index 129c712f767fbbdcc7d0df83f838194102efcd15..43de5ca497f5e3ac3d64345cb998f392852e6e3b 100644 +index 970eab5794263e40243f0527ab8be98252841fb0..b5e0f1a2c3ca138cfa1cc4138cf1c5e76dcb9436 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java -@@ -102,6 +102,14 @@ public class Vex extends Monster implements TraceableEntity { +@@ -104,6 +104,14 @@ public class Vex extends Monster implements TraceableEntity { } // Purpur end - Ridables @@ -1519,10 +1519,10 @@ index 129c712f767fbbdcc7d0df83f838194102efcd15..43de5ca497f5e3ac3d64345cb998f392 public boolean isFlapping() { return this.tickCount % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index 922c5ce69fc2a3cb53dc230f4efe96bde91cd96a..01a5357d5359394b61f2456fdee8bf3aadf0ca32 100644 +index f908db6eeff5ee5a1ab2783d8e8bbb1598c3ace3..0abc1da5154bef4c7aa03d44f651af39b289c187 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -73,6 +73,14 @@ public class Vindicator extends AbstractIllager { +@@ -74,6 +74,14 @@ public class Vindicator extends AbstractIllager { } // Purpur end - Ridables @@ -1576,10 +1576,10 @@ index d8c10f5f93e3ca92a49e1df3216256450c62f219..213530a2378411db2bc597ba7e0bb68c protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/net/minecraft/world/entity/monster/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java -index 636b1e88f6d76a4c0110fa34e89634eee3fbdcdf..9f5db385dabb01bda033aecaebd1d9b7c9e2ed0b 100644 +index 4379832f464824260a25055ed7338c2879a9a194..5333aea53ff61eb6143138c4e44ad85977e524d5 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java -@@ -103,6 +103,14 @@ public class Zoglin extends Monster implements HoglinBase { +@@ -104,6 +104,14 @@ public class Zoglin extends Monster implements HoglinBase { } // Purpur end - Ridables @@ -1595,10 +1595,10 @@ index 636b1e88f6d76a4c0110fa34e89634eee3fbdcdf..9f5db385dabb01bda033aecaebd1d9b7 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index f9233f0689b26a8c65d60ab9421c1216d436bae7..126c5982c1b274cad67649b8e26391c7c4011bab 100644 +index 5d68fa532c588ed942d6b9703cc1047feca4e641..6f26221e6982db3c97a77d4496686c666a80e3a4 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -121,6 +121,14 @@ public class Zombie extends Monster { +@@ -120,6 +120,14 @@ public class Zombie extends Monster { } // Purpur end - Ridables @@ -1613,7 +1613,7 @@ index f9233f0689b26a8c65d60ab9421c1216d436bae7..126c5982c1b274cad67649b8e26391c7 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables -@@ -633,7 +641,7 @@ public class Zombie extends Monster { +@@ -632,7 +640,7 @@ public class Zombie extends Monster { } protected void randomizeReinforcementsChance() { @@ -1623,10 +1623,10 @@ index f9233f0689b26a8c65d60ab9421c1216d436bae7..126c5982c1b274cad67649b8e26391c7 @Override diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 2d3636697a544e78113fc1e6902dd216acee070b..239e78203dec09653ef8e001aef3e4b95b0f7a7c 100644 +index 317693bccccbb41f38dc726a71cf059d5a861e27..537bff97a27e043ed2f71fc82580689ecb784ac8 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -94,6 +94,18 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -93,6 +93,18 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } // Purpur end - Ridables @@ -1646,10 +1646,10 @@ index 2d3636697a544e78113fc1e6902dd216acee070b..239e78203dec09653ef8e001aef3e4b9 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index f16aa79ba5137cd6132452c21b0dc81cbf4fac8b..ada982eb4dca7c75a5fd3576d3793f1f12819e51 100644 +index deb47d4828ac94f8d68a799b98cc696674d94a6f..f0a809464d9e7f1839e1932955a7313e744384b1 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -80,6 +80,14 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -81,6 +81,14 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { } // Purpur end - Ridables @@ -1664,7 +1664,7 @@ index f16aa79ba5137cd6132452c21b0dc81cbf4fac8b..ada982eb4dca7c75a5fd3576d3793f1f @Override public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; -@@ -265,7 +273,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -266,7 +274,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @Override protected void randomizeReinforcementsChance() { @@ -1674,10 +1674,10 @@ index f16aa79ba5137cd6132452c21b0dc81cbf4fac8b..ada982eb4dca7c75a5fd3576d3793f1f @Nullable diff --git a/net/minecraft/world/entity/monster/creaking/Creaking.java b/net/minecraft/world/entity/monster/creaking/Creaking.java -index a23d624abb0622d362af0dc816425283e25c479a..d19f34616942177e736ba507c27ec93ba1e1e903 100644 +index b87ad5259b416693e57e3863327f46ee08a4928f..1b01d2b37dd221d5832cb68c072af9863aeb6868 100644 --- a/net/minecraft/world/entity/monster/creaking/Creaking.java +++ b/net/minecraft/world/entity/monster/creaking/Creaking.java -@@ -125,6 +125,14 @@ public class Creaking extends Monster { +@@ -126,6 +126,14 @@ public class Creaking extends Monster { } // Purpur end - Ridables @@ -1693,10 +1693,10 @@ index a23d624abb0622d362af0dc816425283e25c479a..d19f34616942177e736ba507c27ec93b protected BodyRotationControl createBodyControl() { return new Creaking.CreakingBodyRotationControl(this); diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 7c83e0612b8b0d48966aa3808d86daac79753584..6b0eb12e9d879f22098eb2294d0d73db6ca266ed 100644 +index fce1a2dda2587c55e39e4ef51c30b5556efe0b33..c2de8c58f43a43df77f28e077fbbf00e0f930ba7 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -112,6 +112,14 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -113,6 +113,14 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Ridables @@ -1712,10 +1712,10 @@ index 7c83e0612b8b0d48966aa3808d86daac79753584..6b0eb12e9d879f22098eb2294d0d73db public void setTimeInOverworld(int timeInOverworld) { this.timeInOverworld = timeInOverworld; diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index 589e3014fb86448456c249c0255186644abb13c2..b37038568b83db1602dca06aa06d72c4c4978cdd 100644 +index 29c687a5f459e100a78f77a2edbf9e607f17a5ab..a86cd2da7d0467e5b7d79ec2daceb65c86750445 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -153,6 +153,14 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -154,6 +154,14 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento } // Purpur end - Ridables @@ -1728,8 +1728,8 @@ index 589e3014fb86448456c249c0255186644abb13c2..b37038568b83db1602dca06aa06d72c4 + // Purpur end - Configurable entity base attributes + @Override - public void addAdditionalSaveData(CompoundTag compound) { - super.addAdditionalSaveData(compound); + protected void addAdditionalSaveData(ValueOutput output) { + super.addAdditionalSaveData(output); diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java index 4c8e49ba064241ec7ac505fa6f5df6d7f9c009b6..f52aba35ee7e202074cda8fb4dfd6a7d9ded1f09 100644 --- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java @@ -1750,10 +1750,10 @@ index 4c8e49ba064241ec7ac505fa6f5df6d7f9c009b6..f52aba35ee7e202074cda8fb4dfd6a7d return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 15669f9157dc3d3d5e3fb76a668c7e3b43ee8a52..b2687ee9494d491971fa4124382b214d7c3ba9be 100644 +index dc5622cbb9d6a3ba92db634d5572d3c1c16d2bf6..b91c7bdfa4df80bf52ed714efc877a30cdcb3f36 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -271,6 +271,14 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -272,6 +272,14 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end - Ridables @@ -1769,10 +1769,10 @@ index 15669f9157dc3d3d5e3fb76a668c7e3b43ee8a52..b2687ee9494d491971fa4124382b214d public Brain getBrain() { return (Brain)super.getBrain(); diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 21ab5911d52e49ec2de99071cb85ff2daa090dc4..4abc4037a059b9c1dc58bf7a776e6269c5188868 100644 +index e5d6d8bd30876832e6219969849e826070343f45..28c86505efa994f9c7657538f5ffdf12772fb0a9 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -83,6 +83,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -84,6 +84,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill } // Purpur end - Ridables diff --git a/purpur-server/minecraft-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch similarity index 95% rename from purpur-server/minecraft-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch rename to purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch index 3d833c13f..c8acefc2e 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch +++ b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index f7b12d5924005a24899aef11746b9f056fac3559..aaebaa42eef53af8a8c1606b79caf6bb4a99f4f9 100644 +index 7a247b713ceb3a513de1f91cdda1d30a32845d13..f9f3deed9f892ece5568a6ede9955c8e19937b60 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -1041,6 +1041,27 @@ public abstract class PlayerList { +@@ -1040,6 +1040,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API @@ -37,10 +37,10 @@ index f7b12d5924005a24899aef11746b9f056fac3559..aaebaa42eef53af8a8c1606b79caf6bb public boolean isWhiteListed(GameProfile profile) { diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index 2417c26a03decf756ad93cd54265277c95c653ca..87c8bc6f9128d2fcb19628bc3ef354e517b632bb 100644 +index c421cc7dc6c401a19eaf193abd970f21e910f927..acb53dba83fe9481508fa4d4704203a08f575450 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java -@@ -212,6 +212,7 @@ public abstract class Player extends LivingEntity { +@@ -221,6 +221,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 burpDelay = 0; // Purpur - Burp delay public boolean canPortalInstant = false; // Purpur - Add portal permission bypass @@ -84,7 +84,7 @@ index 0fffa384f928ab84451331380968fb4650eafe26..0399092c9f7a43ac100c11505176ade6 return new ChestMenu(MenuType.GENERIC_9x6, containerId, playerInventory, container, 6); } diff --git a/net/minecraft/world/inventory/PlayerEnderChestContainer.java b/net/minecraft/world/inventory/PlayerEnderChestContainer.java -index bc2b95973192069fc64581b59583b19df876f55d..b68d57eee9605dba8ecd31f82185ec3ea81d60c1 100644 +index beb74bc8398de8b48f41af7daef14d624826310e..7ae8d115b6f4af45db9309b46ed4b4fdd8e25c08 100644 --- a/net/minecraft/world/inventory/PlayerEnderChestContainer.java +++ b/net/minecraft/world/inventory/PlayerEnderChestContainer.java @@ -25,11 +25,18 @@ public class PlayerEnderChestContainer extends SimpleContainer { @@ -159,7 +159,7 @@ index 5077a9ff7b78801bdc53536a37aee07b8d86ee4d..72794e204f7fcc31ece94913b7fd9f36 public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { return new EnderChestBlockEntity(pos, state); diff --git a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java -index 027502d0af5512c31878978c4d05c52fa3029cca..f5216355ef13593bc7333d50a003012e25b3d7ea 100644 +index d679ab599dfd0bdbdc3ab5530d7fcd1c38baf7fa..0e4f6455ec48c5a7fcd4613c1c5b79d599e4960a 100644 --- a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java +++ b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java @@ -56,7 +56,17 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { diff --git a/purpur-server/minecraft-patches/unapplied-features/0004-Giants-AI-settings.patch b/purpur-server/minecraft-patches/features/0004-Giants-AI-settings.patch similarity index 93% rename from purpur-server/minecraft-patches/unapplied-features/0004-Giants-AI-settings.patch rename to purpur-server/minecraft-patches/features/0004-Giants-AI-settings.patch index 0418b7349..c50df5bb9 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0004-Giants-AI-settings.patch +++ b/purpur-server/minecraft-patches/features/0004-Giants-AI-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Giants AI settings diff --git a/net/minecraft/world/entity/monster/Giant.java b/net/minecraft/world/entity/monster/Giant.java -index 13021800af7cc9263ef4f393f9cfbda5061a32ae..73da18c4b54e250c434fd75971ef0a8f7c8cf6a3 100644 +index e673f488bfab9648075857bc40e1339f974a903c..f5565d314ded2145219debc446c7ddcb93b660e9 100644 --- a/net/minecraft/world/entity/monster/Giant.java +++ b/net/minecraft/world/entity/monster/Giant.java @@ -30,8 +30,25 @@ public class Giant extends Monster { @@ -36,8 +36,8 @@ index 13021800af7cc9263ef4f393f9cfbda5061a32ae..73da18c4b54e250c434fd75971ef0a8f } // Purpur end - Ridables -@@ -49,8 +66,36 @@ 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); +@@ -53,8 +70,36 @@ public class Giant extends Monster { + .add(Attributes.CAMERA_DISTANCE, 16.0); } + // Purpur - Giants AI settings diff --git a/purpur-server/minecraft-patches/unapplied-features/0005-Chickens-can-retaliate.patch b/purpur-server/minecraft-patches/features/0005-Chickens-can-retaliate.patch similarity index 91% rename from purpur-server/minecraft-patches/unapplied-features/0005-Chickens-can-retaliate.patch rename to purpur-server/minecraft-patches/features/0005-Chickens-can-retaliate.patch index eb8fb9cec..91143d225 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0005-Chickens-can-retaliate.patch +++ b/purpur-server/minecraft-patches/features/0005-Chickens-can-retaliate.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Chickens can retaliate diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java -index 40fc57f1c298e1c70fddf8b6eb2f3e8e9e41e60c..fc3291b5e1a2c3956802b268abb58189b24a7a16 100644 +index b4b2cebbc8d4645dec0b1bfe4243426a1e7ccda5..6f6d99c075b3e402742e3c7401dea366f2d871b6 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java -@@ -93,6 +93,11 @@ public class Chicken extends Animal { +@@ -94,6 +94,11 @@ public class Chicken extends Animal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.chickenMaxHealth); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.chickenScale); @@ -20,7 +20,7 @@ index 40fc57f1c298e1c70fddf8b6eb2f3e8e9e41e60c..fc3291b5e1a2c3956802b268abb58189 } // Purpur end - Configurable entity base attributes -@@ -100,13 +105,21 @@ public class Chicken extends Animal { +@@ -101,13 +106,21 @@ public class Chicken extends Animal { protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables @@ -43,7 +43,7 @@ index 40fc57f1c298e1c70fddf8b6eb2f3e8e9e41e60c..fc3291b5e1a2c3956802b268abb58189 } @Override -@@ -115,7 +128,7 @@ public class Chicken extends Animal { +@@ -116,7 +129,7 @@ public class Chicken extends Animal { } public static AttributeSupplier.Builder createAttributes() { diff --git a/purpur-server/minecraft-patches/unapplied-features/0006-Minecart-settings-and-WASD-controls.patch b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch similarity index 93% rename from purpur-server/minecraft-patches/unapplied-features/0006-Minecart-settings-and-WASD-controls.patch rename to purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch index 10367a373..9c035117e 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0006-Minecart-settings-and-WASD-controls.patch +++ b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index f55dc4affffd495b4c02b77c8a60f172c1c6cf79..47a6a607513c97910c7d57e8fb4862f6de74f9ac 100644 +index 0c489a6d3357ed0d3dc9341440b87623d007da3f..ed63c0cc2750485ab4d53c242fec94c1a66e9dbe 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -1192,6 +1192,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1170,6 +1170,11 @@ public class ServerPlayer extends Player { } else { // Purpur start - Add boat fall damage config if (damageSource.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) { @@ -21,10 +21,10 @@ index f55dc4affffd495b4c02b77c8a60f172c1c6cf79..47a6a607513c97910c7d57e8fb4862f6 return false; } diff --git a/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index 99617c08cbd989092ba357d8df928786fd04c89a..9d88b260528c3cea2c5fe8e2760094b0a8a35667 100644 +index 7e61d68b36ca2768f70dc1fc130a8d7b95347b6b..00eb9aef52ee54f9750c44832f2b3a9321a9f81a 100644 --- a/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/net/minecraft/world/entity/vehicle/AbstractMinecart.java -@@ -103,6 +103,10 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -102,6 +102,10 @@ public abstract class AbstractMinecart extends VehicleEntity { private double flyingY = 0.95; private double flyingZ = 0.95; public @Nullable Double maxSpeed; @@ -35,7 +35,7 @@ index 99617c08cbd989092ba357d8df928786fd04c89a..9d88b260528c3cea2c5fe8e2760094b0 public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Friction API // CraftBukkit end -@@ -111,8 +115,13 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -110,8 +114,13 @@ public abstract class AbstractMinecart extends VehicleEntity { this.blocksBuilding = true; if (useExperimentalMovement(level)) { this.behavior = new NewMinecartBehavior(this); @@ -49,7 +49,7 @@ index 99617c08cbd989092ba357d8df928786fd04c89a..9d88b260528c3cea2c5fe8e2760094b0 } } -@@ -277,6 +286,14 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -276,6 +285,14 @@ public abstract class AbstractMinecart extends VehicleEntity { @Override public void tick() { @@ -64,7 +64,7 @@ index 99617c08cbd989092ba357d8df928786fd04c89a..9d88b260528c3cea2c5fe8e2760094b0 // CraftBukkit start double prevX = this.getX(); double prevY = this.getY(); -@@ -384,15 +401,61 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -390,15 +407,61 @@ public abstract class AbstractMinecart extends VehicleEntity { this.behavior.moveAlongTrack(level); } diff --git a/purpur-server/minecraft-patches/unapplied-features/0007-Villagers-follow-emerald-blocks.patch b/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch similarity index 86% rename from purpur-server/minecraft-patches/unapplied-features/0007-Villagers-follow-emerald-blocks.patch rename to purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch index fc5022641..612d28fa9 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0007-Villagers-follow-emerald-blocks.patch +++ b/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Villagers follow emerald blocks diff --git a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -index 75d8fe03558ba38caf46c826dfea5208f88bde52..46022a0aabc9c319deeb75913d356eeb74f1a12c 100644 +index 4bb7a8955182d786a09fd2667b37a93373ff47be..bead2f6800bdc404228500c12caf326559fa47de 100644 --- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -@@ -162,7 +162,7 @@ public class DefaultAttributes { +@@ -164,7 +164,7 @@ public class DefaultAttributes { .put(EntityType.VILLAGER, Villager.createAttributes().build()) .put(EntityType.VINDICATOR, Vindicator.createAttributes().build()) .put(EntityType.WARDEN, Warden.createAttributes().build()) @@ -18,10 +18,10 @@ index 75d8fe03558ba38caf46c826dfea5208f88bde52..46022a0aabc9c319deeb75913d356eeb .put(EntityType.WITHER, WitherBoss.createAttributes().build()) .put(EntityType.WITHER_SKELETON, AbstractSkeleton.createAttributes().build()) diff --git a/net/minecraft/world/entity/ai/goal/TemptGoal.java b/net/minecraft/world/entity/ai/goal/TemptGoal.java -index 438d6347778a94b4fe430320b268a2d67afa209a..f88f618d34fb343b31de3af1a875d6633703df71 100644 +index dae935cc68e2e571d50e56ac8913c099a11cf771..a805c9426630c2c46db9d0dd536f1d16769395d3 100644 --- a/net/minecraft/world/entity/ai/goal/TemptGoal.java +++ b/net/minecraft/world/entity/ai/goal/TemptGoal.java -@@ -58,7 +58,7 @@ public class TemptGoal extends Goal { +@@ -71,7 +71,7 @@ public class TemptGoal extends Goal { } private boolean shouldFollow(LivingEntity entity) { @@ -31,10 +31,10 @@ index 438d6347778a94b4fe430320b268a2d67afa209a..f88f618d34fb343b31de3af1a875d663 @Override diff --git a/net/minecraft/world/entity/npc/AbstractVillager.java b/net/minecraft/world/entity/npc/AbstractVillager.java -index 1d3381f1481bb2b192bb78462c85c2a185d94ad5..e574c38e1c1c13fc2f96340138f784697cef8c48 100644 +index f8782cdcf3015cad2693663a3c222bd60822f45b..d1a77544df7bcaa5f1dbca3139324107d687ae0d 100644 --- a/net/minecraft/world/entity/npc/AbstractVillager.java +++ b/net/minecraft/world/entity/npc/AbstractVillager.java -@@ -35,6 +35,7 @@ import net.minecraft.world.level.portal.TeleportTransition; +@@ -35,6 +35,7 @@ import net.minecraft.world.level.storage.ValueOutput; import net.minecraft.world.phys.Vec3; public abstract class AbstractVillager extends AgeableMob implements InventoryCarrier, Npc, Merchant { @@ -43,10 +43,10 @@ index 1d3381f1481bb2b192bb78462c85c2a185d94ad5..e574c38e1c1c13fc2f96340138f78469 public static final int VILLAGER_SLOT_OFFSET = 300; private static final int VILLAGER_INVENTORY_SIZE = 8; diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index b2687ee9494d491971fa4124382b214d7c3ba9be..005af720a6385056f09f939813e97c10a7414a91 100644 +index b91c7bdfa4df80bf52ed714efc877a30cdcb3f36..4a68a8124716a57801f2d42a87e4d68c99d2f348 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -268,6 +268,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -269,6 +269,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); @@ -54,7 +54,7 @@ index b2687ee9494d491971fa4124382b214d7c3ba9be..005af720a6385056f09f939813e97c10 } // Purpur end - Ridables -@@ -276,6 +277,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -277,6 +278,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.villagerMaxHealth); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.villagerScale); @@ -62,7 +62,7 @@ index b2687ee9494d491971fa4124382b214d7c3ba9be..005af720a6385056f09f939813e97c10 } // Purpur end - Configurable entity base attributes -@@ -344,7 +346,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -345,7 +347,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public static AttributeSupplier.Builder createAttributes() { @@ -72,10 +72,10 @@ index b2687ee9494d491971fa4124382b214d7c3ba9be..005af720a6385056f09f939813e97c10 public boolean assignProfessionWhenSpawned() { diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 4abc4037a059b9c1dc58bf7a776e6269c5188868..e726893a3ddf49bdfd2d190477bccf6e33de1847 100644 +index 28c86505efa994f9c7657538f5ffdf12772fb0a9..2917820bf01b1a2ca7301a7099b7b3dcd6c3ee67 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -87,9 +87,16 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -88,9 +88,16 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @Override public void initAttributes() { this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.wanderingTraderMaxHealth); @@ -92,7 +92,7 @@ index 4abc4037a059b9c1dc58bf7a776e6269c5188868..e726893a3ddf49bdfd2d190477bccf6e @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -@@ -124,6 +131,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -125,6 +132,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill this.goalSelector.addGoal(1, new PanicGoal(this, 0.5)); this.goalSelector.addGoal(1, new LookAtTradingPlayerGoal(this)); this.goalSelector.addGoal(2, new WanderingTrader.WanderToPositionGoal(this, 2.0, 0.35)); diff --git a/purpur-server/minecraft-patches/unapplied-features/0008-Implement-elytra-settings.patch b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch similarity index 83% rename from purpur-server/minecraft-patches/unapplied-features/0008-Implement-elytra-settings.patch rename to purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch index b03972156..436e1a581 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0008-Implement-elytra-settings.patch +++ b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index a3b83376f1468dbdb4e17fb86d199e66047f686c..5dd1a36b967176f96a18cb0d842ccb73b7b584ef 100644 +index ae0c2f41c522656bde37d4f31699ee6172b5a79d..4f149e5e17d2d2f2964e2f6626e20f52121e72d9 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -3643,7 +3643,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3699,7 +3699,18 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin .filter(equipmentSlot1 -> canGlideUsing(this.getItemBySlot(equipmentSlot1), equipmentSlot1)) .toList(); EquipmentSlot equipmentSlot = Util.getRandom(list, this.random); @@ -29,14 +29,13 @@ index a3b83376f1468dbdb4e17fb86d199e66047f686c..5dd1a36b967176f96a18cb0d842ccb73 this.gameEvent(GameEvent.ELYTRA_GLIDE); diff --git a/net/minecraft/world/item/FireworkRocketItem.java b/net/minecraft/world/item/FireworkRocketItem.java -index 18d63d2da49451a2d5e1da7bf0c00e05e2f192bc..1f081e098ce3bec61b7f374e9b737838783657bb 100644 +index 83cfe63b0245f79d0873477ab3aae75f690ecb68..f32370217735b5e9556a0df7652682d89f23c595 100644 --- a/net/minecraft/world/item/FireworkRocketItem.java +++ b/net/minecraft/world/item/FireworkRocketItem.java -@@ -62,6 +62,19 @@ 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) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemInHand), (org.bukkit.entity.Firework) delayed.projectile().getBukkitEntity(), org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand)); - if (event.callEvent() && delayed.attemptSpawn()) { - player.awardStat(Stats.ITEM_USED.get(this)); // Moved up from below -+ +@@ -72,6 +72,17 @@ public class FireworkRocketItem extends Item implements ProjectileItem { + if (player.dropAllLeashConnections(null)) { + level.playSound(null, player, SoundEvents.LEAD_BREAK, SoundSource.NEUTRAL, 1.0F, 1.0F); + } + // Purpur start - Implement elytra settings + if (level.purpurConfig.elytraDamagePerFireworkBoost > 0) { + java.util.List list = net.minecraft.world.entity.EquipmentSlot.VALUES.stream().filter((enumitemslot) -> net.minecraft.world.entity.LivingEntity.canGlideUsing(player.getItemBySlot(enumitemslot), enumitemslot)).toList(); @@ -48,15 +47,14 @@ index 18d63d2da49451a2d5e1da7bf0c00e05e2f192bc..1f081e098ce3bec61b7f374e9b737838 + } + } + // Purpur end - Implement elytra settings -+ if (event.shouldConsume() && !player.hasInfiniteMaterials()) { itemInHand.shrink(1); // Moved up from below } else { diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java -index 6de42886ed681b5e00903f0d213e4d2fcaea1482..36677cb0db42b74fa84d67b85717f629f84b4dd0 100644 +index 52aaa325476af53eca97fc14ad5f82fbb9193c80..d512ee6b1039b80b908816b625ef1aa9cd50461c 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java -@@ -724,6 +724,14 @@ public final class ItemStack implements DataComponentHolder { +@@ -700,6 +700,14 @@ public final class ItemStack implements DataComponentHolder { org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent(serverPlayer, this); // Paper - Add EntityDamageItemEvent } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/unapplied-features/0009-Configurable-jockey-options.patch b/purpur-server/minecraft-patches/features/0009-Configurable-jockey-options.patch similarity index 90% rename from purpur-server/minecraft-patches/unapplied-features/0009-Configurable-jockey-options.patch rename to purpur-server/minecraft-patches/features/0009-Configurable-jockey-options.patch index 8b865c59d..c53d8777b 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0009-Configurable-jockey-options.patch +++ b/purpur-server/minecraft-patches/features/0009-Configurable-jockey-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable jockey options diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java -index 526de34154d873d1479f9276981e181be959ebef..2004595c51564d863aee65fc47541014ea184e10 100644 +index ec0f27d04125765e91e43c4c18415b29db62b181..ffd9e34b4d57bdafc597b2208f754c7454afd48a 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java -@@ -105,6 +105,23 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -106,6 +106,23 @@ public class Drowned extends Zombie implements RangedAttackMob { } // Purpur end - Configurable entity base attributes @@ -61,10 +61,10 @@ index 5b0794bd87423715cada1f860b4141fdacd9ede6..75cb1db5584c04e442583ab2f50a2613 EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index 126c5982c1b274cad67649b8e26391c7c4011bab..02073d4374580278829e680b875d596844213e78 100644 +index 6f26221e6982db3c97a77d4496686c666a80e3a4..ede9101c44ba53c5bd67254bea6fcff7f00b5b47 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -129,6 +129,20 @@ public class Zombie extends Monster { +@@ -128,6 +128,20 @@ public class Zombie extends Monster { } // Purpur end - Configurable entity base attributes @@ -85,7 +85,7 @@ index 126c5982c1b274cad67649b8e26391c7c4011bab..02073d4374580278829e680b875d5968 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables -@@ -558,19 +572,18 @@ public class Zombie extends Monster { +@@ -557,19 +571,18 @@ public class Zombie extends Monster { } if (spawnGroupData instanceof Zombie.ZombieGroupData zombieGroupData) { @@ -111,7 +111,7 @@ index 126c5982c1b274cad67649b8e26391c7c4011bab..02073d4374580278829e680b875d5968 Chicken chicken1 = EntityType.CHICKEN.create(this.level(), EntitySpawnReason.JOCKEY); if (chicken1 != null) { chicken1.snapTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), 0.0F); -@@ -579,6 +592,7 @@ public class Zombie extends Monster { +@@ -578,6 +591,7 @@ public class Zombie extends Monster { this.startRiding(chicken1); level.addFreshEntity(chicken1, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit } @@ -120,10 +120,10 @@ index 126c5982c1b274cad67649b8e26391c7c4011bab..02073d4374580278829e680b875d5968 } } diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 239e78203dec09653ef8e001aef3e4b95b0f7a7c..6bd633390df582e0b1999f5c67cd76e2b23a04eb 100644 +index 537bff97a27e043ed2f71fc82580689ecb784ac8..02b503453fb8b64cbf0b9db1e498566289c6bbe3 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -106,6 +106,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -105,6 +105,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } // Purpur end - Configurable entity base attributes @@ -148,10 +148,10 @@ index 239e78203dec09653ef8e001aef3e4b95b0f7a7c..6bd633390df582e0b1999f5c67cd76e2 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index ada982eb4dca7c75a5fd3576d3793f1f12819e51..a8916a8fe5bed57e7b1f755a20e15bed544567fb 100644 +index f0a809464d9e7f1839e1932955a7313e744384b1..2adee917a4275742968a2e1e8b65bce4b9ac3cc3 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -88,6 +88,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -89,6 +89,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { } // Purpur end - Configurable entity base attributes diff --git a/purpur-server/minecraft-patches/unapplied-features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/purpur-server/minecraft-patches/features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 94% rename from purpur-server/minecraft-patches/unapplied-features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to purpur-server/minecraft-patches/features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 203e0f291..0045fa085 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/purpur-server/minecraft-patches/features/0010-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/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index 57f9f705c62706902efe9a7873f0e3866820f7d9..90ac1e4bdca5b6233eeae9bc84549770bed383da 100644 +index 5bff703ae4f95091620dec5347246d7c0cbe5d5e..220a828717e1933a44c5282b56713ba0053d2440 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -@@ -26,6 +26,12 @@ public class EndCrystal extends Entity { +@@ -27,6 +27,12 @@ public class EndCrystal extends Entity { private static final boolean DEFAULT_SHOW_BOTTOM = true; public int time; public boolean generatedByDragonFight = false; // Paper - Fix invulnerable end crystals @@ -21,7 +21,7 @@ index 57f9f705c62706902efe9a7873f0e3866820f7d9..90ac1e4bdca5b6233eeae9bc84549770 public EndCrystal(EntityType entityType, Level level) { super(entityType, level); -@@ -94,6 +100,49 @@ public class EndCrystal extends Entity { +@@ -95,6 +101,49 @@ public class EndCrystal extends Entity { // Paper end - Fix invulnerable end crystals 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 - End Crystal Cramming @@ -72,10 +72,10 @@ index 57f9f705c62706902efe9a7873f0e3866820f7d9..90ac1e4bdca5b6233eeae9bc84549770 @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 2f14561a3722f8175a234ad656ef64d4c58e3b96..6c41a2cc9a772c216abfc2b241429ec712119bb4 100644 +index 96ef89704122485948a526bcc323379474ac9343..f9f6199f5b64733be69e9e8dbdb3cd26700d822b 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -48,6 +48,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -49,6 +49,7 @@ public class Phantom extends Mob implements Enemy { @Nullable public BlockPos anchorPoint; Phantom.AttackPhase attackPhase = Phantom.AttackPhase.CIRCLE; @@ -83,7 +83,7 @@ index 2f14561a3722f8175a234ad656ef64d4c58e3b96..6c41a2cc9a772c216abfc2b241429ec7 // Paper start @Nullable public java.util.UUID spawningEntity; -@@ -119,6 +120,25 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -120,6 +121,25 @@ public class Phantom extends Mob implements Enemy { } // Purpur end - Ridables @@ -109,7 +109,7 @@ index 2f14561a3722f8175a234ad656ef64d4c58e3b96..6c41a2cc9a772c216abfc2b241429ec7 @Override public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; -@@ -132,9 +152,15 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -133,9 +153,15 @@ public class Phantom extends Mob implements Enemy { @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables @@ -128,7 +128,7 @@ index 2f14561a3722f8175a234ad656ef64d4c58e3b96..6c41a2cc9a772c216abfc2b241429ec7 this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal()); } -@@ -502,6 +528,124 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -517,6 +543,124 @@ public class Phantom extends Mob implements Enemy { } } diff --git a/purpur-server/minecraft-patches/unapplied-features/0011-Phantoms-burn-in-light.patch b/purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch similarity index 88% rename from purpur-server/minecraft-patches/unapplied-features/0011-Phantoms-burn-in-light.patch rename to purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch index 2b429096d..79cdba713 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0011-Phantoms-burn-in-light.patch +++ b/purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Phantoms burn in light diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 6c41a2cc9a772c216abfc2b241429ec712119bb4..eaa5f2db1bc6b01ef6a508cc5a60ff1e252c2360 100644 +index f9f6199f5b64733be69e9e8dbdb3cd26700d822b..f0351975340dec2b2bd51670f193baf44a62ae16 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -54,6 +54,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -55,6 +55,7 @@ public class Phantom extends Mob implements Enemy { public java.util.UUID spawningEntity; public boolean shouldBurnInDay = true; // Paper end @@ -16,7 +16,7 @@ index 6c41a2cc9a772c216abfc2b241429ec712119bb4..eaa5f2db1bc6b01ef6a508cc5a60ff1e public Phantom(EntityType entityType, Level level) { super(entityType, level); -@@ -254,7 +255,11 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -255,7 +256,11 @@ public class Phantom extends Mob implements Enemy { @Override public void aiStep() { @@ -29,7 +29,7 @@ index 6c41a2cc9a772c216abfc2b241429ec712119bb4..eaa5f2db1bc6b01ef6a508cc5a60ff1e if (getRider() == null || !this.isControllable()) // Purpur - Ridables this.igniteForSeconds(8.0F); } -@@ -363,6 +368,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -378,6 +383,7 @@ public class Phantom extends Mob implements Enemy { List nearbyPlayers = serverLevel.getNearbyPlayers( this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0, 64.0, 16.0) ); @@ -37,7 +37,7 @@ index 6c41a2cc9a772c216abfc2b241429ec712119bb4..eaa5f2db1bc6b01ef6a508cc5a60ff1e if (!nearbyPlayers.isEmpty()) { nearbyPlayers.sort(Comparator.comparing(Entity::getY).reversed()); -@@ -732,6 +738,12 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -747,6 +753,12 @@ public class Phantom extends Mob implements Enemy { return false; } else if (!target.isAlive()) { return false; diff --git a/purpur-server/minecraft-patches/unapplied-features/0012-Make-entity-breeding-times-configurable.patch b/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch similarity index 84% rename from purpur-server/minecraft-patches/unapplied-features/0012-Make-entity-breeding-times-configurable.patch rename to purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch index 00f5a1ca0..136aa01b4 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0012-Make-entity-breeding-times-configurable.patch +++ b/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch @@ -22,18 +22,18 @@ index 2591e4bbd234e51ff2c6b00db888d3b158f5a07d..e3d48c7c6615185f8a14bc96476a665b // CraftBukkit end - call EntityBreedEvent level.broadcastEntityEvent(breedOffspring, (byte)12); diff --git a/net/minecraft/world/entity/animal/Animal.java b/net/minecraft/world/entity/animal/Animal.java -index 2ce0099460c14a6dd8b128f268ee915ea4be5183..1cae770340e969ec4f037b9121142878894102d3 100644 +index 235f6514328338d28c2bf967bcd06f1413f12c65..4d99a1bf2dc141630a76942ccbf1f60824cf7495 100644 --- a/net/minecraft/world/entity/animal/Animal.java +++ b/net/minecraft/world/entity/animal/Animal.java -@@ -42,6 +42,7 @@ public abstract class Animal extends AgeableMob { +@@ -43,6 +43,7 @@ public abstract class Animal extends AgeableMob { @Nullable - public UUID loveCause; + public EntityReference loveCause; public @Nullable ItemStack breedItem; // CraftBukkit - Add breedItem variable + public abstract int getPurpurBreedTime(); // Purpur - Make entity breeding times configurable protected Animal(EntityType entityType, Level level) { super(entityType, level); -@@ -283,8 +284,10 @@ public abstract class Animal extends AgeableMob { +@@ -279,8 +280,10 @@ public abstract class Animal extends AgeableMob { player.awardStat(Stats.ANIMALS_BRED); CriteriaTriggers.BRED_ANIMALS.trigger(player, this, animal, baby); } // Paper - Call EntityBreedEvent @@ -47,10 +47,10 @@ index 2ce0099460c14a6dd8b128f268ee915ea4be5183..1cae770340e969ec4f037b9121142878 animal.resetLove(); level.broadcastEntityEvent(this, (byte)18); diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index 7fbf46efe8007e4b0e2f07c3ada8f0e02484d59d..68acacdf30834fe318862d1900cb18800caa0e13 100644 +index bdb16d355dac48760c9a083303035265f6a1fc74..11a7cbb1781e396ecb2b9fdbad7af2c55ea2606a 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -480,6 +480,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -481,6 +481,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } // Purpur end - Configurable entity base attributes @@ -65,10 +65,10 @@ index 7fbf46efe8007e4b0e2f07c3ada8f0e02484d59d..68acacdf30834fe318862d1900cb1880 public int getRemainingPersistentAngerTime() { return this.entityData.get(DATA_REMAINING_ANGER_TIME); diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index d2813c68df511a2702f2b57c31f828730a9a21c8..75a63c8e8917f20b389f8194ae3089ff41e9d0ff 100644 +index d429beb03da8b499f19c3ed721b110d916849698..5e6a66c1a3532d39dae82eaeb2428605536e2155 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java -@@ -124,6 +124,13 @@ public class Cat extends TamableAnimal { +@@ -125,6 +125,13 @@ public class Cat extends TamableAnimal { } // Purpur end - Configurable entity base attributes @@ -83,10 +83,10 @@ index d2813c68df511a2702f2b57c31f828730a9a21c8..75a63c8e8917f20b389f8194ae3089ff protected void registerGoals() { this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true); diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java -index fc3291b5e1a2c3956802b268abb58189b24a7a16..ef808c4462387bb73466b33d1c3156796fea251b 100644 +index 6f6d99c075b3e402742e3c7401dea366f2d871b6..e4702a5a89147bd83fa73a969fab7077ddd623f6 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java -@@ -101,6 +101,13 @@ public class Chicken extends Animal { +@@ -102,6 +102,13 @@ public class Chicken extends Animal { } // Purpur end - Configurable entity base attributes @@ -101,10 +101,10 @@ index fc3291b5e1a2c3956802b268abb58189b24a7a16..ef808c4462387bb73466b33d1c315679 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index 7c4f1eadcbc13010f6b4b5748b8e0d5c822458e1..0f4f732d9501df42e0d42fe978692c4b0e3d8f0b 100644 +index 9dbc5f7b3896acb199577afa85451da38f2d2a01..753ed26cc6bfc8276d4405091b78b0e50182b84a 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java -@@ -53,6 +53,13 @@ public class Cow extends AbstractCow { +@@ -54,6 +54,13 @@ public class Cow extends AbstractCow { } // Purpur end - Configurable entity base attributes @@ -119,10 +119,10 @@ index 7c4f1eadcbc13010f6b4b5748b8e0d5c822458e1..0f4f732d9501df42e0d42fe978692c4b protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 8d69b6bb1d5efd0b47595a12acdd2088cddd5ace..6a531e5d93d42d3dca7a5e49fb2ba14063665d2e 100644 +index 869a0154c81593db8933f9daa6a7d3a9d02facc5..37b6bfa8dc1fd4ed0006f6531d2056bcd3c3abae 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -187,6 +187,13 @@ public class Fox extends Animal { +@@ -188,6 +188,13 @@ public class Fox extends Animal { } // Purpur end - Configurable entity base attributes @@ -136,7 +136,7 @@ index 8d69b6bb1d5efd0b47595a12acdd2088cddd5ace..6a531e5d93d42d3dca7a5e49fb2ba140 @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); -@@ -996,8 +1003,10 @@ public class Fox extends Animal { +@@ -993,8 +1000,10 @@ public class Fox extends Animal { CriteriaTriggers.BRED_ANIMALS.trigger(serverPlayer, this.animal, this.partner, fox); } @@ -150,10 +150,10 @@ index 8d69b6bb1d5efd0b47595a12acdd2088cddd5ace..6a531e5d93d42d3dca7a5e49fb2ba140 this.partner.resetLove(); serverLevel.addFreshEntityWithPassengers(fox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index af035af33db993cf7c573b87df576529e98a842e..24313a5dd5f5be39677ac8080ecf56703c751923 100644 +index 8cfbe37df24647c3f0a2d64bcc3451de1402c86f..3e4cb7680e6082ebab95e2b8307eedb0d3fcfbcd 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -85,6 +85,13 @@ public class MushroomCow extends AbstractCow implements Shearable { +@@ -86,6 +86,13 @@ public class MushroomCow extends AbstractCow implements Shearable { } // Purpur end - Configurable entity base attributes @@ -168,10 +168,10 @@ index af035af33db993cf7c573b87df576529e98a842e..24313a5dd5f5be39677ac8080ecf5670 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index b05aea388ddadaa5bc28bee9f3f4d7fbf673eaa7..56b9fa9b24a9b5cf510dc6610a1b1bedf3a32d72 100644 +index 84664a62dcae89dff1b63b0ac952756440ee090f..c4ed3f906d4b47c07915afd07db7a731e99b7215 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java -@@ -88,6 +88,13 @@ public class Ocelot extends Animal { +@@ -89,6 +89,13 @@ public class Ocelot extends Animal { } // Purpur end - Configurable entity base attributes @@ -186,10 +186,10 @@ index b05aea388ddadaa5bc28bee9f3f4d7fbf673eaa7..56b9fa9b24a9b5cf510dc6610a1b1bed return this.entityData.get(DATA_TRUSTING); } diff --git a/net/minecraft/world/entity/animal/Panda.java b/net/minecraft/world/entity/animal/Panda.java -index ebeed4fab4fff87ac61a3a4ef28443eb4746c3fa..cc1144d44526caa7fc7549ecaf405813b4bad1de 100644 +index 4ec69b45049b2c947e0d9ef71619e8acd358e7ad..c7686698a9615a51c653658cf6a46ccfb9c4d168 100644 --- a/net/minecraft/world/entity/animal/Panda.java +++ b/net/minecraft/world/entity/animal/Panda.java -@@ -141,6 +141,13 @@ public class Panda extends Animal { +@@ -142,6 +142,13 @@ public class Panda extends Animal { } // Purpur end - Configurable entity base attributes @@ -204,10 +204,10 @@ index ebeed4fab4fff87ac61a3a4ef28443eb4746c3fa..cc1144d44526caa7fc7549ecaf405813 protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) { return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot(); diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java -index 94031cbd5d40c9a5536b1d1c404bbe2666e8ae0a..d69992a1f729ba99f3992920cd2372a04ff60996 100644 +index d997102941a6add1b116053c119bcd6690eb42a5..6019406d7c7e51c53d8822e44070e626091495af 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java -@@ -199,6 +199,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -201,6 +201,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { } // Purpur end - Configurable entity base attributes @@ -222,10 +222,10 @@ index 94031cbd5d40c9a5536b1d1c404bbe2666e8ae0a..d69992a1f729ba99f3992920cd2372a0 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index bdf0574bf6b70aa7477e1143df24e63d658bc841..f81a448a522fa7551ead16a5ac2b41460235f4b6 100644 +index 9f511a6a2692dc46c14e0e0e59518c0a3040cfb9..885135fb301eeb6149aa53d581b4073d3724264d 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java -@@ -90,6 +90,13 @@ public class Pig extends Animal implements ItemSteerable { +@@ -91,6 +91,13 @@ public class Pig extends Animal implements ItemSteerable { } // Purpur end - Configurable entity base attributes @@ -240,10 +240,10 @@ index bdf0574bf6b70aa7477e1143df24e63d658bc841..f81a448a522fa7551ead16a5ac2b4146 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java -index d6f5c2573f5fd072a7eaed39790b43e7a67cf3b8..329115fcd70531c48b352008faef92e10ddc84de 100644 +index 28919a96de837a15d116c6b863eba5c8a1cf6a7b..e39ca22a871c911defdbfe1cb0f1b15cde8d4612 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java -@@ -124,6 +124,13 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -125,6 +125,13 @@ public class PolarBear extends Animal implements NeutralMob { } // Purpur end - Configurable entity base attributes @@ -258,10 +258,10 @@ index d6f5c2573f5fd072a7eaed39790b43e7a67cf3b8..329115fcd70531c48b352008faef92e1 @Override public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index 8e3dcd912d7631bc7863a576e28f85c8d1cb2818..6c1e23e96352aa777c4e0c7d00f7620aa3f29a32 100644 +index d74b492c5d1c3a323106b5de5bbf595a38d976a1..5fc1d6ba3cb54f2ea8c6fe3f994ffea2cca5784b 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java -@@ -152,6 +152,13 @@ public class Rabbit extends Animal { +@@ -153,6 +153,13 @@ public class Rabbit extends Animal { } // Purpur end - Configurable entity base attributes @@ -276,10 +276,10 @@ index 8e3dcd912d7631bc7863a576e28f85c8d1cb2818..6c1e23e96352aa777c4e0c7d00f7620a public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java -index 11772e81d932fae6542a0cb2d283ef91b5bbbd76..57e4cb66fbf29b992a144ca923f2e22983cc1db5 100644 +index e26b97e92ecfadb351e91aeae38beb4c4da87e26..f5735e5bcc34b78db544aa8971234bc86e0ddfa9 100644 --- a/net/minecraft/world/entity/animal/Turtle.java +++ b/net/minecraft/world/entity/animal/Turtle.java -@@ -110,6 +110,13 @@ public class Turtle extends Animal { +@@ -111,6 +111,13 @@ public class Turtle extends Animal { } // Purpur end - Configurable entity base attributes @@ -293,7 +293,7 @@ index 11772e81d932fae6542a0cb2d283ef91b5bbbd76..57e4cb66fbf29b992a144ca923f2e229 public void setHomePos(BlockPos homePos) { this.homePos = homePos; } -@@ -350,8 +357,10 @@ public class Turtle extends Animal { +@@ -351,8 +358,10 @@ public class Turtle extends Animal { } this.turtle.setHasEgg(true); @@ -307,10 +307,10 @@ index 11772e81d932fae6542a0cb2d283ef91b5bbbd76..57e4cb66fbf29b992a144ca923f2e229 this.partner.resetLove(); RandomSource random = this.animal.getRandom(); diff --git a/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/net/minecraft/world/entity/animal/armadillo/Armadillo.java -index 67a93960b3c6fe5725783ebf9f1c5b57e931f58c..0b4d1e6633ecc2e11606024d085bb9e6cca5a86b 100644 +index e4c8376c009984e40b90c01f78c65e76e260ee0b..0da5c51c4830cf1826261f4d8877303b34c6cb87 100644 --- a/net/minecraft/world/entity/animal/armadillo/Armadillo.java +++ b/net/minecraft/world/entity/animal/armadillo/Armadillo.java -@@ -106,6 +106,13 @@ public class Armadillo extends Animal { +@@ -107,6 +107,13 @@ public class Armadillo extends Animal { } // Purpur end - Configurable entity base attributes @@ -325,10 +325,10 @@ index 67a93960b3c6fe5725783ebf9f1c5b57e931f58c..0b4d1e6633ecc2e11606024d085bb9e6 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 83b1080765eb49a8a606258bb2db8b1a7daea081..8cf67fe3807ccbe8c9cdebf9d79f1fc5e4f1a817 100644 +index 17b20b36a3edafaea089288d22ad3e07795b9770..e32a78cb9574505d78f3e298a38a28a2422d34b3 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -145,6 +145,13 @@ public class Axolotl extends Animal implements Bucketable { +@@ -147,6 +147,13 @@ public class Axolotl extends Animal implements Bucketable { } // Purpur end - Configurable entity base attributes @@ -343,10 +343,10 @@ index 83b1080765eb49a8a606258bb2db8b1a7daea081..8cf67fe3807ccbe8c9cdebf9d79f1fc5 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; diff --git a/net/minecraft/world/entity/animal/camel/Camel.java b/net/minecraft/world/entity/animal/camel/Camel.java -index 6c6ef89aacbc328a2cb2dc05022998dbd79cfaf8..344edef98e13831d1238e5ae155d81b13126a696 100644 +index f45d1ba8dc0bb4b7041c5efba5d6261a3a5f5ff4..0c698241b10f84afb17ae10d3661a90bc62ec243 100644 --- a/net/minecraft/world/entity/animal/camel/Camel.java +++ b/net/minecraft/world/entity/animal/camel/Camel.java -@@ -96,6 +96,13 @@ public class Camel extends AbstractHorse { +@@ -98,6 +98,13 @@ public class Camel extends AbstractHorse { } // Purpur end - Ridables @@ -358,13 +358,13 @@ index 6c6ef89aacbc328a2cb2dc05022998dbd79cfaf8..344edef98e13831d1238e5ae155d81b1 + // Purpur end - Make entity breeding times configurable + @Override - public void addAdditionalSaveData(CompoundTag compound) { - super.addAdditionalSaveData(compound); + protected void addAdditionalSaveData(ValueOutput output) { + super.addAdditionalSaveData(output); diff --git a/net/minecraft/world/entity/animal/frog/Frog.java b/net/minecraft/world/entity/animal/frog/Frog.java -index 054811d807c56018617dc4a8e10af87ed15ad00c..71c09b9b8cc66d1a6f557a685539f9f4c93c0b8b 100644 +index 0bb0c875b12c94e9fb42b81210c5935cb5efecf8..1d5079602e7ae1042e2bb92209dded4007f703da 100644 --- a/net/minecraft/world/entity/animal/frog/Frog.java +++ b/net/minecraft/world/entity/animal/frog/Frog.java -@@ -164,6 +164,13 @@ public class Frog extends Animal { +@@ -165,6 +165,13 @@ public class Frog extends Animal { } // Purpur end - Ridables @@ -379,10 +379,10 @@ index 054811d807c56018617dc4a8e10af87ed15ad00c..71c09b9b8cc66d1a6f557a685539f9f4 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index b922d8c37b89a5762c8ed29e6a5fa545f408511e..a04892dce1f904fad3312499352ad56853ea658e 100644 +index f106d5bbbe9227b2c7cc4cc24ade57d8df9b4e10..8da2cdf5a308b4c1359f94127934ee90e9cef558 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -131,6 +131,13 @@ public class Goat extends Animal { +@@ -132,6 +132,13 @@ public class Goat extends Animal { } // Purpur end - Ridables @@ -415,10 +415,10 @@ index 3aa12702cd1f4ef160180bc6ba64a6566cbddc9d..9e1100d672bfb712854d23203d0b730b public SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java -index e0346014de51958976459eeb6677d886e7f261ab..6c1897fadaf93e9a71f0e361a602e6d9475a4f50 100644 +index 53c0eac62018a0d88e30b8c13de94216ff829cd8..3678c767818abb9e4180c2ade378ca09761ad784 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java -@@ -70,6 +70,13 @@ public class Horse extends AbstractHorse { +@@ -71,6 +71,13 @@ public class Horse extends AbstractHorse { } // Purpur end - Configurable entity base attributes @@ -433,10 +433,10 @@ index e0346014de51958976459eeb6677d886e7f261ab..6c1897fadaf93e9a71f0e361a602e6d9 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index 10e7724d424cd39c96b91cf3de4bc4524d9311a4..db73d8821b3374341fa77fbbb3308a21abb60db6 100644 +index 6fe6507edbf4c3c2795b8fe000d230d5fe6a2486..9cfc31b9acca44c56b78ba6d935bcb6c1d6c5697 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -146,6 +146,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -147,6 +147,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { } // Purpur end - Configurable entity base attributes @@ -469,10 +469,10 @@ index 0107bb5fc029c5390d73e9a4cd08c13838a2ded5..fe2570ceb96d39ff6598a67a4ac4b470 public SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index b7903386ce4648ef577b1d4875866b7c268c888b..39b8b10b950359952c7b149e4fca08d68f1ad8eb 100644 +index a7bcc0ff10e429ebfe91173c392e9a0c07903289..042b73f0807438327ebf4a2fd3a9d54d52159511 100644 --- a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -@@ -65,6 +65,13 @@ public class SkeletonHorse extends AbstractHorse { +@@ -66,6 +66,13 @@ public class SkeletonHorse extends AbstractHorse { } // Purpur end - Configurable entity base attributes @@ -487,10 +487,10 @@ index b7903386ce4648ef577b1d4875866b7c268c888b..39b8b10b950359952c7b149e4fca08d6 return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/horse/TraderLlama.java b/net/minecraft/world/entity/animal/horse/TraderLlama.java -index 4664de247745c5346f1d131b19aac0512d394647..c67f82654897bec94dce1226d5ef2ce10d53e077 100644 +index 39175d4537e84ef39bcbdafc5200ed7b14482d62..b36064e58ecc1512fed2d53c20bde333a405e8b0 100644 --- a/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/net/minecraft/world/entity/animal/horse/TraderLlama.java -@@ -69,6 +69,13 @@ public class TraderLlama extends Llama { +@@ -70,6 +70,13 @@ public class TraderLlama extends Llama { } // Purpur end - Configurable entity base attributes @@ -523,10 +523,10 @@ index 3d597bd355b6c918ea1bf4b7d537ad4f76e218d2..69b9ae449e58f13bf0950fdfe3f89742 return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/sheep/Sheep.java b/net/minecraft/world/entity/animal/sheep/Sheep.java -index 7d4d13d78da258bdceae82cc57e0aa5a3e06fd7d..625f9b7bb027ccc4495d83349909be59e7a19061 100644 +index 8e4a14ca6a0cef1c52c64de3502077d7d25b0308..1fee6d36abe42ff9998287c47d0f498bbba910e3 100644 --- a/net/minecraft/world/entity/animal/sheep/Sheep.java +++ b/net/minecraft/world/entity/animal/sheep/Sheep.java -@@ -109,6 +109,13 @@ public class Sheep extends Animal implements Shearable { +@@ -87,6 +87,13 @@ public class Sheep extends Animal implements Shearable { } // Purpur end - Configurable entity base attributes @@ -541,10 +541,10 @@ index 7d4d13d78da258bdceae82cc57e0aa5a3e06fd7d..625f9b7bb027ccc4495d83349909be59 protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/net/minecraft/world/entity/animal/sniffer/Sniffer.java -index fab5a8d0974aab57a1e4a803eb4f3b47a3ee4a07..a21604d3ff3377946cbcbd57ddfa1cbb7e84dac6 100644 +index 683c9f82bfb2306f81b094464462d7d372ef5b22..9ad310cbc5fa41c949a37c1a5db6d6cd024f1483 100644 --- a/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/net/minecraft/world/entity/animal/sniffer/Sniffer.java -@@ -113,6 +113,13 @@ public class Sniffer extends Animal { +@@ -114,6 +114,13 @@ public class Sniffer extends Animal { } // Purpur end - Configurable entity base attributes @@ -559,10 +559,10 @@ index fab5a8d0974aab57a1e4a803eb4f3b47a3ee4a07..a21604d3ff3377946cbcbd57ddfa1cbb protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java -index cca4debfabbe60ecea9fc59514a24fc199c79003..99050a33a170b685c2fe3645b80c21b6069ab48a 100644 +index 7326debf3725844bfe8730dab480da7b1d6e99aa..372360baedbe4f8b59e94c261bc60346ba3cfbbe 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java -@@ -217,6 +217,13 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -216,6 +216,13 @@ public class Wolf extends TamableAnimal implements NeutralMob { } // Purpur end - Configurable entity base attributes @@ -595,10 +595,10 @@ index a68e9f3f96f37b6dd685fd02072f38b9e320fffc..4e300141b0c7fa967e3d0b9ef952097e EntityType entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 6b0eb12e9d879f22098eb2294d0d73db6ca266ed..df763444e9935b8f43ea65b3695c715993903fb8 100644 +index c2de8c58f43a43df77f28e077fbbf00e0f930ba7..298246318f5103ff416f076467d3b6bfec297c5e 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -120,6 +120,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -121,6 +121,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Configurable entity base attributes diff --git a/purpur-server/minecraft-patches/unapplied-features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch b/purpur-server/minecraft-patches/features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 91% rename from purpur-server/minecraft-patches/unapplied-features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to purpur-server/minecraft-patches/features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch index afe0d94d9..26a4c805e 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/purpur-server/minecraft-patches/features/0013-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/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java -index 4c78de34dc656d3a8c88913c03da4df228b4d134..a3408b9f6306b42a1ce1d8f094695052202c45a7 100644 +index 5dfd78a0e00cae85feff8acd785cdfdf23433ba6..e6813da9d002b90acd44db1435f5fa9bf1bbed47 100644 --- a/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -492,6 +492,7 @@ public class ArmorStand extends LivingEntity { +@@ -450,6 +450,7 @@ public class ArmorStand extends LivingEntity { private org.bukkit.event.entity.EntityDeathEvent brokenByPlayer(ServerLevel level, DamageSource damageSource) { // Paper ItemStack itemStack = new ItemStack(Items.ARMOR_STAND); @@ -18,10 +18,10 @@ index 4c78de34dc656d3a8c88913c03da4df228b4d134..a3408b9f6306b42a1ce1d8f094695052 this.drops.add(new DefaultDrop(itemStack, stack -> Block.popResource(this.level(), this.blockPosition(), stack))); // CraftBukkit - add to drops // Paper - Restore vanilla drops behavior return this.brokenByAnything(level, damageSource); // Paper diff --git a/net/minecraft/world/entity/decoration/ItemFrame.java b/net/minecraft/world/entity/decoration/ItemFrame.java -index f9a97000b75db7999b1cbe1f72d680d4d7b803b7..9dfadb5639e840e69274b35f3366322141527104 100644 +index 90fd3ca5ecd29befa9237222e9f86a8a79a011e4..7e96617f0d5e8777873b4c2cccd012d656612f96 100644 --- a/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/net/minecraft/world/entity/decoration/ItemFrame.java -@@ -232,7 +232,11 @@ public class ItemFrame extends HangingEntity { +@@ -237,7 +237,11 @@ public class ItemFrame extends HangingEntity { this.removeFramedMap(item); } else { if (dropItem) { @@ -35,10 +35,10 @@ index f9a97000b75db7999b1cbe1f72d680d4d7b803b7..9dfadb5639e840e69274b35f33663221 if (!item.isEmpty()) { diff --git a/net/minecraft/world/entity/decoration/Painting.java b/net/minecraft/world/entity/decoration/Painting.java -index 3f13bb1ad260d250efe2622297e432dc300e73a0..b1ee059501532cc2df5f0824e5becbd2bc6727b2 100644 +index cc34cadac8896a5f546d0879e795fea08d0c3f98..26a08b16de2318d5080be59a29c5f11e3597426d 100644 --- a/net/minecraft/world/entity/decoration/Painting.java +++ b/net/minecraft/world/entity/decoration/Painting.java -@@ -179,7 +179,11 @@ public class Painting extends HangingEntity { +@@ -182,7 +182,11 @@ public class Painting extends HangingEntity { if (level.getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) { this.playSound(SoundEvents.PAINTING_BREAK, 1.0F, 1.0F); if (!(entity instanceof Player player && player.hasInfiniteMaterials())) { @@ -52,10 +52,10 @@ index 3f13bb1ad260d250efe2622297e432dc300e73a0..b1ee059501532cc2df5f0824e5becbd2 } } diff --git a/net/minecraft/world/entity/vehicle/AbstractBoat.java b/net/minecraft/world/entity/vehicle/AbstractBoat.java -index abfe3370382c39aeab2cc7832c0ff6ee5b95fa5b..4f61c17e0a4a82773834bc21e00cac6eb75f794e 100644 +index 4dcf6daa146645f096ac8815588c837715073c22..d947801b616af5b5dcdcc8bb70b36f97d6a69fdd 100644 --- a/net/minecraft/world/entity/vehicle/AbstractBoat.java +++ b/net/minecraft/world/entity/vehicle/AbstractBoat.java -@@ -822,7 +822,13 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable { +@@ -825,7 +825,13 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable { @Override public final ItemStack getPickResult() { diff --git a/purpur-server/minecraft-patches/unapplied-features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 98% rename from purpur-server/minecraft-patches/unapplied-features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index fc69100b5..a2f749d85 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -135,10 +135,10 @@ index f0583076ef62189508a392a76c3fb6b741bbdde9..dc4a9ddb8479e9d0c4895b19d7d677cd brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 005af720a6385056f09f939813e97c10a7414a91..2846aca7bad55b56430738baeee9554e34da316c 100644 +index 4a68a8124716a57801f2d42a87e4d68c99d2f348..3b78e25de462a6fc393175f7992b9a1d4d08c64b 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -314,7 +314,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -315,7 +315,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler villagerBrain.setSchedule(Schedule.VILLAGER_DEFAULT); villagerBrain.addActivityWithConditions( Activity.WORK, @@ -147,7 +147,7 @@ index 005af720a6385056f09f939813e97c10a7414a91..2846aca7bad55b56430738baeee9554e ImmutableSet.of(Pair.of(MemoryModuleType.JOB_SITE, MemoryStatus.VALUE_PRESENT)) ); } -@@ -965,7 +965,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -966,7 +966,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public boolean hasFarmSeeds() { diff --git a/purpur-server/minecraft-patches/unapplied-features/0015-Add-mobGriefing-override-to-everything-affected.patch b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch similarity index 92% rename from purpur-server/minecraft-patches/unapplied-features/0015-Add-mobGriefing-override-to-everything-affected.patch rename to purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch index 9cb07cb80..c80a58dc6 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0015-Add-mobGriefing-override-to-everything-affected.patch +++ b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing override to everything affected diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 5dd1a36b967176f96a18cb0d842ccb73b7b584ef..e7b7f09d224a630f61259a0d905b2ad6a6fa6986 100644 +index 4f149e5e17d2d2f2964e2f6626e20f52121e72d9..a70fddd19b24bb25edde63e4fda4685ee6997eba 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -1904,7 +1904,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1936,7 +1936,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin if (this.level() instanceof ServerLevel serverLevel) { boolean var6 = false; if (this.dead && entitySource instanceof WitherBoss) { // Paper @@ -18,10 +18,10 @@ index 5dd1a36b967176f96a18cb0d842ccb73b7b584ef..e7b7f09d224a630f61259a0d905b2ad6 BlockState blockState = Blocks.WITHER_ROSE.defaultBlockState(); if (this.level().getBlockState(blockPos).isAir() && blockState.canSurvive(this.level(), blockPos)) { diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index ca1d0164c90e695731f05de39c1d2fff947ecfc1..964c7e60a8b0171ee31b12a277a4e9f8940ab58d 100644 +index 3215ca469e0e469089a559672739e91c9db0edaf..e05cf29c630d43c66614012c50b9dd4ece4c44f6 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -519,7 +519,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -532,7 +532,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab && this.canPickUpLoot() && this.isAlive() && !this.dead @@ -92,10 +92,10 @@ index 3d40911970caf6f1de2a1ebee1df4c077703226a..179597558e93c6e9172207f716f9294d } else if (this.nextStartTick > 0) { this.nextStartTick--; diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 6a531e5d93d42d3dca7a5e49fb2ba14063665d2e..9fc8ec5886e2b747f9780e43df3ac2212f50526d 100644 +index 37b6bfa8dc1fd4ed0006f6531d2056bcd3c3abae..07767c9d649e7ef2b8fd8e3ac62d99ce13271fe4 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -1061,7 +1061,7 @@ public class Fox extends Animal { +@@ -1058,7 +1058,7 @@ public class Fox extends Animal { } protected void onReachedTarget() { @@ -105,10 +105,10 @@ index 6a531e5d93d42d3dca7a5e49fb2ba14063665d2e..9fc8ec5886e2b747f9780e43df3ac221 if (blockState.is(Blocks.SWEET_BERRY_BUSH)) { this.pickSweetBerries(blockState); diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index 6c1e23e96352aa777c4e0c7d00f7620aa3f29a32..09b618be3ae8baed11f4d411923edbc9b26ccca8 100644 +index 5fc1d6ba3cb54f2ea8c6fe3f994ffea2cca5784b..39154b01e23c626cc29b587ae96c611062e5b791 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java -@@ -647,7 +647,7 @@ public class Rabbit extends Animal { +@@ -648,7 +648,7 @@ public class Rabbit extends Animal { @Override public boolean canUse() { if (this.nextStartTick <= 0) { @@ -118,10 +118,10 @@ index 6c1e23e96352aa777c4e0c7d00f7620aa3f29a32..09b618be3ae8baed11f4d411923edbc9 } diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index 764429b9d20ac105c9ae3b050adf5d3defbd6038..af3af77e5d6420044fa6d5aa62e64311247bc1a8 100644 +index 2350e5a0ba3d4c3782332a4ef51e2b0ef0b53f39..a747c4bd3a41025c6dc225e5d809ba03f57069f8 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java -@@ -135,7 +135,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -136,7 +136,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM this.hurtServer(serverLevel, this.damageSources().onFire().knownCause(org.bukkit.event.entity.EntityDamageEvent.DamageCause.MELTING), 1.0F); // CraftBukkit } @@ -131,10 +131,10 @@ index 764429b9d20ac105c9ae3b050adf5d3defbd6038..af3af77e5d6420044fa6d5aa62e64311 } diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 793567170b33ba21016b8767598d294fca4acec4..967c360e11beeb0150920e80d2e2bcbbfd305ab2 100644 +index 40c92ff02c22ef18b36f5d8677096dc82a60f1bb..6191a58d09fd0ca4625ecb90be78cce2049e4696 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -543,7 +543,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -544,7 +544,7 @@ public class EnderDragon extends Mob implements Enemy { BlockPos blockPos = new BlockPos(i, i1, i2); BlockState blockState = level.getBlockState(blockPos); if (!blockState.isAir() && !blockState.is(BlockTags.DRAGON_TRANSPARENT)) { @@ -144,10 +144,10 @@ index 793567170b33ba21016b8767598d294fca4acec4..967c360e11beeb0150920e80d2e2bcbb //flag1 = level.removeBlock(blockPos, false) || flag1; flag1 = true; diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index f0ec9334d9e6bf879568a085db691c46f7c652b6..38772967805dc73ffaae19d95b4f2d203e5a2be4 100644 +index 7aaa905034979e557db97456eae3563614aab8d1..72a7fde24a132f986318c9730aad9e4cefc70fdb 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -494,7 +494,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -495,7 +495,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { if (this.destroyBlocksTick > 0) { this.destroyBlocksTick--; @@ -157,10 +157,10 @@ index f0ec9334d9e6bf879568a085db691c46f7c652b6..38772967805dc73ffaae19d95b4f2d20 int alternativeTarget = Mth.floor(this.getBbWidth() / 2.0F + 1.0F); int floor = Mth.floor(this.getBbHeight()); diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index b8094cd018e7b6cf165c92bd37cf6f9d5703599a..a6f8a3164a7c57ac9d9ea9850f037410c861de26 100644 +index c83d7c43969a94432f6bec076f78fb500f672926..002fef87101e2c98c8a091d416cb4729bd092455 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -511,7 +511,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -507,7 +507,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls return this.enderman.getCarriedBlock() != null @@ -169,7 +169,7 @@ index b8094cd018e7b6cf165c92bd37cf6f9d5703599a..a6f8a3164a7c57ac9d9ea9850f037410 && this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0; } -@@ -661,7 +661,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -657,7 +657,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls return this.enderman.getCarriedBlock() == null @@ -179,10 +179,10 @@ index b8094cd018e7b6cf165c92bd37cf6f9d5703599a..a6f8a3164a7c57ac9d9ea9850f037410 } diff --git a/net/minecraft/world/entity/monster/Evoker.java b/net/minecraft/world/entity/monster/Evoker.java -index 5773dd99ad2b014dde6666f4b32a1e6ee024a9fc..6cba6b164749987c161790bccb5d842047fbf53c 100644 +index e8aac93cffa3a9d4105c03c1aeb4d571ee0eba6c..4d1d746e39d136243dc620c89b29daf80dc62230 100644 --- a/net/minecraft/world/entity/monster/Evoker.java +++ b/net/minecraft/world/entity/monster/Evoker.java -@@ -323,7 +323,7 @@ public class Evoker extends SpellcasterIllager { +@@ -306,7 +306,7 @@ public class Evoker extends SpellcasterIllager { return false; } else { ServerLevel serverLevel = getServerLevel(Evoker.this.level()); @@ -192,10 +192,10 @@ index 5773dd99ad2b014dde6666f4b32a1e6ee024a9fc..6cba6b164749987c161790bccb5d8420 } else { List nearbyEntities = serverLevel.getNearbyEntities( diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index 3adf0ec66db61b556a06ffe0fe835b57f8520948..007b35d1411aeda9cce3f8be431815367fab957c 100644 +index 9e7b07f353fb8f0650b8805014c371368eaabcd5..23b6d3c9746e1ee641d8b19ec50805cb271a9cc9 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java -@@ -178,7 +178,7 @@ public class Ravager extends Raider { +@@ -179,7 +179,7 @@ public class Ravager extends Raider { if (this.level() instanceof ServerLevel serverLevel && this.horizontalCollision @@ -227,10 +227,10 @@ index c200d57841304ba0d7a76fdd9a440fe9f2b25136..6f4aaeb645d9638764c3516d2f150166 continue; } diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index b37038568b83db1602dca06aa06d72c4c4978cdd..6b404571f2086c280b16d253e218c750bf085c37 100644 +index a86cd2da7d0467e5b7d79ec2daceb65c86750445..c600c9b1ea4fe08abdce0aed30f61ef073039c7c 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -449,7 +449,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -450,7 +450,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @Override public boolean wantsToPickUp(ServerLevel level, ItemStack stack) { @@ -240,10 +240,10 @@ index b37038568b83db1602dca06aa06d72c4c4978cdd..6b404571f2086c280b16d253e218c750 protected boolean canReplaceCurrentItem(ItemStack candidate) { diff --git a/net/minecraft/world/entity/projectile/LargeFireball.java b/net/minecraft/world/entity/projectile/LargeFireball.java -index db1b5bce212a5147be82504469f1fa9660812ebc..9e994953a8a8757496892441c155fba5a511c19b 100644 +index dd0ec97ea4561d2dccf735580faf0d65d6ac4b0d..779879f8d678a5e45e2752e6e033cc350acac89b 100644 --- a/net/minecraft/world/entity/projectile/LargeFireball.java +++ b/net/minecraft/world/entity/projectile/LargeFireball.java -@@ -19,20 +19,20 @@ public class LargeFireball extends Fireball { +@@ -20,20 +20,20 @@ public class LargeFireball extends Fireball { public LargeFireball(EntityType entityType, Level level) { super(entityType, level); @@ -268,10 +268,10 @@ index db1b5bce212a5147be82504469f1fa9660812ebc..9e994953a8a8757496892441c155fba5 org.bukkit.event.entity.ExplosionPrimeEvent event = new org.bukkit.event.entity.ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); if (event.callEvent()) { diff --git a/net/minecraft/world/entity/projectile/Projectile.java b/net/minecraft/world/entity/projectile/Projectile.java -index 4487c03183d20a187d391dd124abb7b926508b5b..0a1cee73ee7d895dba55745647daa4870038515c 100644 +index ee16a05b8b2747ce95fcae1616c96143a5dec74e..f8bc051167c0266824edb816060999e6d7db6639 100644 --- a/net/minecraft/world/entity/projectile/Projectile.java +++ b/net/minecraft/world/entity/projectile/Projectile.java -@@ -466,7 +466,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -436,7 +436,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { @Override public boolean mayInteract(ServerLevel level, BlockPos pos) { Entity owner = this.getOwner(); @@ -294,10 +294,10 @@ index 8c84cea43fc0e42a576004663670977eac99f1a6..6a0ec832226894687b28f35e1a8a190b // CraftBukkit end } diff --git a/net/minecraft/world/entity/raid/Raider.java b/net/minecraft/world/entity/raid/Raider.java -index e81ae747fe95c22321fc69791a6509d601826fd6..76ebbab40f5bac6d5f588410d3c5e6716cbe0679 100644 +index df0753c89b7c613f2abac9c50ce7f897ba280803..3baba21d106ab09ae476238f2636169c371f43cf 100644 --- a/net/minecraft/world/entity/raid/Raider.java +++ b/net/minecraft/world/entity/raid/Raider.java -@@ -400,7 +400,7 @@ public abstract class Raider extends PatrollingMonster { +@@ -401,7 +401,7 @@ public abstract class Raider extends PatrollingMonster { } private boolean cannotPickUpBanner() { @@ -307,10 +307,10 @@ index e81ae747fe95c22321fc69791a6509d601826fd6..76ebbab40f5bac6d5f588410d3c5e671 return true; } else if (this.mob.getCurrentRaid().isOver()) { diff --git a/net/minecraft/world/level/GameRules.java b/net/minecraft/world/level/GameRules.java -index 02bc5d83b92a594ec519f0a02b0517fdb4b9e954..92fe6acbd530e985da23f50e615817309915122c 100644 +index d5536dd40a1e9a2e05967652f690abbbca287852..d510503a8ad272255aeba20a916642828023fd19 100644 --- a/net/minecraft/world/level/GameRules.java +++ b/net/minecraft/world/level/GameRules.java -@@ -343,6 +343,13 @@ public class GameRules { +@@ -354,6 +354,13 @@ public class GameRules { this.getRule(key).setFrom(rule, level); // CraftBukkit - per-world } diff --git a/purpur-server/minecraft-patches/unapplied-features/0016-Add-EntityTeleportHinderedEvent.patch b/purpur-server/minecraft-patches/features/0016-Add-EntityTeleportHinderedEvent.patch similarity index 94% rename from purpur-server/minecraft-patches/unapplied-features/0016-Add-EntityTeleportHinderedEvent.patch rename to purpur-server/minecraft-patches/features/0016-Add-EntityTeleportHinderedEvent.patch index b550e197f..38ee57b2c 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0016-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/minecraft-patches/features/0016-Add-EntityTeleportHinderedEvent.patch @@ -35,10 +35,10 @@ index 68914268ca9350a6c1d794e011e1f9a8aecd609c..8e53b45dbf740de6c6fe499ef424d11b TheEndGatewayBlockEntity.triggerCooldown(level, pos, state, theEndGatewayBlockEntity); } diff --git a/net/minecraft/world/level/block/EndPortalBlock.java b/net/minecraft/world/level/block/EndPortalBlock.java -index cf2b105c98a3b22b9bea59cbafcd598657dc92b5..65d3477ed32c3f0db58aab6ab87d8f1721cbe876 100644 +index f6c64277c3d6e16250e2bf963b6427404e27aa9b..997831c2b916899da8518c1415233812e6ec16b8 100644 --- a/net/minecraft/world/level/block/EndPortalBlock.java +++ b/net/minecraft/world/level/block/EndPortalBlock.java -@@ -59,6 +59,13 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal { +@@ -60,6 +60,13 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal { protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent if (entity.canUsePortal(false)) { @@ -53,10 +53,10 @@ index cf2b105c98a3b22b9bea59cbafcd598657dc92b5..65d3477ed32c3f0db58aab6ab87d8f17 org.bukkit.event.entity.EntityPortalEnterEvent event = new org.bukkit.event.entity.EntityPortalEnterEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, level), org.bukkit.PortalType.ENDER); // Paper - add portal type level.getCraftServer().getPluginManager().callEvent(event); diff --git a/net/minecraft/world/level/block/NetherPortalBlock.java b/net/minecraft/world/level/block/NetherPortalBlock.java -index fa0d6baa40c6052c993d870d124af911e8621f0a..1c58af94050b75cd8f405a201448c822792e594a 100644 +index f408bdd8083210b2ef660e6194610462a3e113b6..44707c0bf2c11f7bf7e30f747357ca2a1c6057d6 100644 --- a/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/net/minecraft/world/level/block/NetherPortalBlock.java -@@ -118,6 +118,13 @@ public class NetherPortalBlock extends Block implements Portal { +@@ -113,6 +113,13 @@ public class NetherPortalBlock extends Block implements Portal { protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent if (entity.canUsePortal(false)) { diff --git a/purpur-server/minecraft-patches/unapplied-features/0017-Toggle-for-water-sensitive-mob-damage.patch b/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch similarity index 85% rename from purpur-server/minecraft-patches/unapplied-features/0017-Toggle-for-water-sensitive-mob-damage.patch rename to purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch index 87dee44cb..3b1ee9b98 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0017-Toggle-for-water-sensitive-mob-damage.patch +++ b/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for water sensitive mob damage diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java -index b6f52326f52ce2885ece346944a321d7c924a470..fe6f29c5e663daea017b19aaafaddda40b4c22bb 100644 +index 1896f91e10a5e17332836d5354813a18a4dfe6dc..1c446cec71aa163374ab9832c961a6b4c3fc534b 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java -@@ -53,6 +53,13 @@ public class GlowSquid extends Squid { +@@ -54,6 +54,13 @@ public class GlowSquid extends Squid { } // Purpur end - Configurable entity base attributes @@ -23,10 +23,10 @@ index b6f52326f52ce2885ece346944a321d7c924a470..fe6f29c5e663daea017b19aaafaddda4 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java -index 581894f58df1df4b50aa537252cb4be6bbcebf80..4d44b35ee34eb256b9aff9d74b1cb9ae1ac9503f 100644 +index d25da9a9560ce171df3ada22756e4c54a91ff378..2d2b44f2617732bcdfd969454f80b9ad4af470a1 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java -@@ -110,6 +110,13 @@ public class Bat extends AmbientCreature { +@@ -111,6 +111,13 @@ public class Bat extends AmbientCreature { } // Purpur end - Configurable entity base attributes @@ -41,10 +41,10 @@ index 581894f58df1df4b50aa537252cb4be6bbcebf80..4d44b35ee34eb256b9aff9d74b1cb9ae public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index 68acacdf30834fe318862d1900cb18800caa0e13..9a9b0d1ca7b30916e1ac3938924ced8d77dafdaf 100644 +index 11a7cbb1781e396ecb2b9fdbad7af2c55ea2606a..31a9451417272ec5bb6a6cbc3ec308f6c5cd057f 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -181,7 +181,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -182,7 +182,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { // Paper end - Fix MC-167279 this.lookControl = new Bee.BeeLookControl(this); this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F); @@ -53,7 +53,7 @@ index 68acacdf30834fe318862d1900cb18800caa0e13..9a9b0d1ca7b30916e1ac3938924ced8d this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F); this.setPathfindingMalus(PathType.COCOA, -1.0F); this.setPathfindingMalus(PathType.FENCE, -1.0F); -@@ -487,6 +487,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -488,6 +488,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } // Purpur end - Make entity breeding times configurable @@ -68,10 +68,10 @@ index 68acacdf30834fe318862d1900cb18800caa0e13..9a9b0d1ca7b30916e1ac3938924ced8d public int getRemainingPersistentAngerTime() { return this.entityData.get(DATA_REMAINING_ANGER_TIME); diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index 75a63c8e8917f20b389f8194ae3089ff41e9d0ff..1d758dd3ee0834fcf9ebf737bc7a016b881145e5 100644 +index 5e6a66c1a3532d39dae82eaeb2428605536e2155..41f303078b2e1f0460215fbfe27ff06fd5783c35 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java -@@ -131,6 +131,13 @@ public class Cat extends TamableAnimal { +@@ -132,6 +132,13 @@ public class Cat extends TamableAnimal { } // Purpur end - Make entity breeding times configurable @@ -86,10 +86,10 @@ index 75a63c8e8917f20b389f8194ae3089ff41e9d0ff..1d758dd3ee0834fcf9ebf737bc7a016b protected void registerGoals() { this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true); diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java -index ef808c4462387bb73466b33d1c3156796fea251b..3faa8ac614b6d2f8f90c7092900aa24aa976c0ac 100644 +index e4702a5a89147bd83fa73a969fab7077ddd623f6..58f7690a05febac5c57ba7ea2aff93b7d94a4291 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java -@@ -108,6 +108,13 @@ public class Chicken extends Animal { +@@ -109,6 +109,13 @@ public class Chicken extends Animal { } // Purpur end - Make entity breeding times configurable @@ -122,10 +122,10 @@ index ed52fbbf93e7a238d0f45981f8629ba8613bf3d4..6128ed595cb97cc11c1a0e1e1673b3af public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index 0f4f732d9501df42e0d42fe978692c4b0e3d8f0b..4bc6d0eb56b4674e2ac0f13010521314a95e0096 100644 +index 753ed26cc6bfc8276d4405091b78b0e50182b84a..d584ffe3cc8dfb5fd4ce352b1da18af6a143d575 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java -@@ -60,6 +60,13 @@ public class Cow extends AbstractCow { +@@ -61,6 +61,13 @@ public class Cow extends AbstractCow { } // Purpur end - Make entity breeding times configurable @@ -140,10 +140,10 @@ index 0f4f732d9501df42e0d42fe978692c4b0e3d8f0b..4bc6d0eb56b4674e2ac0f13010521314 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java -index 932ec7ed4ec102f64fa977835d2c7ebe23afa6e3..4f3777ee9cf7a67d5e2f489dbcf40ec2a1ed13cd 100644 +index c8ed91c1902261d6b15744e1fbe1bf7f861b51a8..cff87e0047167751d9b4672a0caae642f15426a9 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java -@@ -158,6 +158,13 @@ public class Dolphin extends AgeableWaterCreature { +@@ -159,6 +159,13 @@ public class Dolphin extends AgeableWaterCreature { } // Purpur end - Configurable entity base attributes @@ -158,10 +158,10 @@ index 932ec7ed4ec102f64fa977835d2c7ebe23afa6e3..4f3777ee9cf7a67d5e2f489dbcf40ec2 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index e3631adee6ef690807768c90045c28570982b315..98cb5c75bb4397914271f81aeace045105a9572e 100644 +index 07767c9d649e7ef2b8fd8e3ac62d99ce13271fe4..23e119ce82c3a0541b40249b20f133e39fac6858 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -194,6 +194,13 @@ public class Fox extends Animal { +@@ -195,6 +195,13 @@ public class Fox extends Animal { } // Purpur end - Make entity breeding times configurable @@ -176,10 +176,10 @@ index e3631adee6ef690807768c90045c28570982b315..98cb5c75bb4397914271f81aeace0451 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java -index fd0d1abcb34862fc7a812f1e3d96969a5c917352..498302a20b783f2208417b56716f4fc4f18bc333 100644 +index 1cb7e0985a59e83f118d4656e94a79f4d81836ff..006df1758bdaeb55a7db938afd9e00c575a62e60 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java -@@ -99,6 +99,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -100,6 +100,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob { } // Purpur end - Configurable entity base attributes @@ -194,10 +194,10 @@ index fd0d1abcb34862fc7a812f1e3d96969a5c917352..498302a20b783f2208417b56716f4fc4 protected void registerGoals() { if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur - Iron golem calm anger options diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index 24313a5dd5f5be39677ac8080ecf56703c751923..114d893f74dfb4422380cad649b7f3708c29c1c3 100644 +index 3e4cb7680e6082ebab95e2b8307eedb0d3fcfbcd..298cd49b28b5efb0f6401c19fc083a3714cb9aeb 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -92,6 +92,13 @@ public class MushroomCow extends AbstractCow implements Shearable { +@@ -93,6 +93,13 @@ public class MushroomCow extends AbstractCow implements Shearable { } // Purpur end - Make entity breeding times configurable @@ -212,10 +212,10 @@ index 24313a5dd5f5be39677ac8080ecf56703c751923..114d893f74dfb4422380cad649b7f370 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index 56b9fa9b24a9b5cf510dc6610a1b1bedf3a32d72..47429374bee47c98216a0eb6dbe65df5fcc0e117 100644 +index c4ed3f906d4b47c07915afd07db7a731e99b7215..d92af280d85856d57f3031dfaf7c644cbfc18f15 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java -@@ -95,6 +95,13 @@ public class Ocelot extends Animal { +@@ -96,6 +96,13 @@ public class Ocelot extends Animal { } // Purpur end - Make entity breeding times configurable @@ -230,10 +230,10 @@ index 56b9fa9b24a9b5cf510dc6610a1b1bedf3a32d72..47429374bee47c98216a0eb6dbe65df5 return this.entityData.get(DATA_TRUSTING); } diff --git a/net/minecraft/world/entity/animal/Panda.java b/net/minecraft/world/entity/animal/Panda.java -index cc1144d44526caa7fc7549ecaf405813b4bad1de..85929b3f4503033d17ec7fd42746c5f071a3fd6f 100644 +index c7686698a9615a51c653658cf6a46ccfb9c4d168..4678f432b6a8f74bbd121aee41f1b093888946f7 100644 --- a/net/minecraft/world/entity/animal/Panda.java +++ b/net/minecraft/world/entity/animal/Panda.java -@@ -148,6 +148,13 @@ public class Panda extends Animal { +@@ -149,6 +149,13 @@ public class Panda extends Animal { } // Purpur end - Make entity breeding times configurable @@ -248,10 +248,10 @@ index cc1144d44526caa7fc7549ecaf405813b4bad1de..85929b3f4503033d17ec7fd42746c5f0 protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) { return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot(); diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java -index d69992a1f729ba99f3992920cd2372a04ff60996..c1d4bcbc3bad5f2fcaecd4007db7318a07a63324 100644 +index 6019406d7c7e51c53d8822e44070e626091495af..92f43418e5b21eb2a323a12649a96e0f62764618 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java -@@ -206,6 +206,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -208,6 +208,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { } // Purpur end - Make entity breeding times configurable @@ -266,10 +266,10 @@ index d69992a1f729ba99f3992920cd2372a04ff60996..c1d4bcbc3bad5f2fcaecd4007db7318a @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index f81a448a522fa7551ead16a5ac2b41460235f4b6..c2718006f6a47dda0655818181881bcdcfef34dc 100644 +index 885135fb301eeb6149aa53d581b4073d3724264d..6f318222011e3bc57c4f0b92c0fba1f410a1d65e 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java -@@ -97,6 +97,13 @@ public class Pig extends Animal implements ItemSteerable { +@@ -98,6 +98,13 @@ public class Pig extends Animal implements ItemSteerable { } // Purpur end - Make entity breeding times configurable @@ -284,10 +284,10 @@ index f81a448a522fa7551ead16a5ac2b41460235f4b6..c2718006f6a47dda0655818181881bcd protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java -index 329115fcd70531c48b352008faef92e10ddc84de..f9d34a8242043ba61dcebb669754d9da0480eb13 100644 +index e39ca22a871c911defdbfe1cb0f1b15cde8d4612..a800acb671a18287f1407bd293a433f1fe039ce5 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java -@@ -131,6 +131,13 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -132,6 +132,13 @@ public class PolarBear extends Animal implements NeutralMob { } // Purpur end - Make entity breeding times configurable @@ -302,10 +302,10 @@ index 329115fcd70531c48b352008faef92e10ddc84de..f9d34a8242043ba61dcebb669754d9da @Override public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { diff --git a/net/minecraft/world/entity/animal/Pufferfish.java b/net/minecraft/world/entity/animal/Pufferfish.java -index bed7d937f02d1fbc8fdd277a2d0524e79b19f707..09977f4ce3545f076be26d173f40fc261fe3c515 100644 +index dbdb7f71464ccd06a04a47ace24a86e6854409fc..a9219906038a24831b3d1e6851af4225b60616c3 100644 --- a/net/minecraft/world/entity/animal/Pufferfish.java +++ b/net/minecraft/world/entity/animal/Pufferfish.java -@@ -65,6 +65,13 @@ public class Pufferfish extends AbstractFish { +@@ -66,6 +66,13 @@ public class Pufferfish extends AbstractFish { } // Purpur end - Configurable entity base attributes @@ -320,10 +320,10 @@ index bed7d937f02d1fbc8fdd277a2d0524e79b19f707..09977f4ce3545f076be26d173f40fc26 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index 1c88e12d743325a429cad27928ea1ac43a696e8a..de2ffef11b50f3bde03785f6cb13c97c437288e5 100644 +index 39154b01e23c626cc29b587ae96c611062e5b791..dcbbe3406cf481e2e1d5c4cc6baaa5ac564b1ad1 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java -@@ -159,6 +159,13 @@ public class Rabbit extends Animal { +@@ -160,6 +160,13 @@ public class Rabbit extends Animal { } // Purpur end - Make entity breeding times configurable @@ -338,10 +338,10 @@ index 1c88e12d743325a429cad27928ea1ac43a696e8a..de2ffef11b50f3bde03785f6cb13c97c public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Salmon.java b/net/minecraft/world/entity/animal/Salmon.java -index 8559e7e8c5163eb55b997521dca2e96b5ae3c9bc..78f83edd809a72bf5a2f908d8d5e3b1755541a29 100644 +index e426b3280b519a3cd727b200794324361c62b67e..3c517936aee31fcf246787c033688870a2349e55 100644 --- a/net/minecraft/world/entity/animal/Salmon.java +++ b/net/minecraft/world/entity/animal/Salmon.java -@@ -57,6 +57,13 @@ public class Salmon extends AbstractSchoolingFish { +@@ -58,6 +58,13 @@ public class Salmon extends AbstractSchoolingFish { } // Purpur end - Configurable entity base attributes @@ -356,10 +356,10 @@ index 8559e7e8c5163eb55b997521dca2e96b5ae3c9bc..78f83edd809a72bf5a2f908d8d5e3b17 public int getMaxSchoolSize() { return 5; diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index 1bf6fdc0149975fefbb73563e0d4861b178459b8..2af4ba00c9f48d3ab9063eda8abb3d15c1bb0929 100644 +index a747c4bd3a41025c6dc225e5d809ba03f57069f8..8917b3d2d75dc1a0ddf1b6dd64267f69506e80dc 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java -@@ -124,7 +124,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -125,7 +125,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @Override public boolean isSensitiveToWater() { @@ -387,10 +387,10 @@ index 2a0dc779ec2a53a4feb4d2d665cf9d820113ba04..2108cbddc9a880347ff36fc4ce8b56e8 protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/net/minecraft/world/entity/animal/TropicalFish.java b/net/minecraft/world/entity/animal/TropicalFish.java -index 946874b3146bd7b226b4cb07110eec57c2968bb7..70afdcbd9d12f323ababde628e1422d1a1b82210 100644 +index c102db5ffdfc7dcb0ec7e59fb031fe6afcdd8237..4510798913f94474b16ab6cbfa32dc0fdf0a226a 100644 --- a/net/minecraft/world/entity/animal/TropicalFish.java +++ b/net/minecraft/world/entity/animal/TropicalFish.java -@@ -95,6 +95,13 @@ public class TropicalFish extends AbstractSchoolingFish { +@@ -96,6 +96,13 @@ public class TropicalFish extends AbstractSchoolingFish { } // Purpur end - Configurable entity base attributes @@ -405,10 +405,10 @@ index 946874b3146bd7b226b4cb07110eec57c2968bb7..70afdcbd9d12f323ababde628e1422d1 return "entity.minecraft.tropical_fish.predefined." + variantId; } diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java -index 57e4cb66fbf29b992a144ca923f2e22983cc1db5..f99c135a1b99a52c72388cdcc6c46933eb7ba75b 100644 +index f5735e5bcc34b78db544aa8971234bc86e0ddfa9..3c2ded73af16360474fb0410456e94746393ca0e 100644 --- a/net/minecraft/world/entity/animal/Turtle.java +++ b/net/minecraft/world/entity/animal/Turtle.java -@@ -117,6 +117,13 @@ public class Turtle extends Animal { +@@ -118,6 +118,13 @@ public class Turtle extends Animal { } // Purpur end - Make entity breeding times configurable @@ -423,10 +423,10 @@ index 57e4cb66fbf29b992a144ca923f2e22983cc1db5..f99c135a1b99a52c72388cdcc6c46933 this.homePos = homePos; } diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 8cf67fe3807ccbe8c9cdebf9d79f1fc5e4f1a817..da48db578931eb04ba7f2f1fbf26b6fb5bea617a 100644 +index e32a78cb9574505d78f3e298a38a28a2422d34b3..f364117decd00f00ae0dc729addb5a35008b6ca5 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -152,6 +152,13 @@ public class Axolotl extends Animal implements Bucketable { +@@ -154,6 +154,13 @@ public class Axolotl extends Animal implements Bucketable { } // Purpur end - Make entity breeding times configurable @@ -441,10 +441,10 @@ index 8cf67fe3807ccbe8c9cdebf9d79f1fc5e4f1a817..da48db578931eb04ba7f2f1fbf26b6fb public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index a04892dce1f904fad3312499352ad56853ea658e..47de7e4710234676358378fb5fa9a6b034662e42 100644 +index 8da2cdf5a308b4c1359f94127934ee90e9cef558..952d9f5c2bb2e869df475a78b04be10e7541829e 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -138,6 +138,13 @@ public class Goat extends Animal { +@@ -139,6 +139,13 @@ public class Goat extends Animal { } // Purpur end - Make entity breeding times configurable @@ -477,10 +477,10 @@ index 9e1100d672bfb712854d23203d0b730b8cc78a3d..9b17b1acf63fddb5f5b6cdf95283ae8f public SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java -index 6c1897fadaf93e9a71f0e361a602e6d9475a4f50..8754c3d6fd06bd2c834fe06e238afa330b24e547 100644 +index 3678c767818abb9e4180c2ade378ca09761ad784..2928159447a87ea8cc945e73e2e81ad1dbe13680 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java -@@ -77,6 +77,13 @@ public class Horse extends AbstractHorse { +@@ -78,6 +78,13 @@ public class Horse extends AbstractHorse { } // Purpur end - Make entity breeding times configurable @@ -495,10 +495,10 @@ index 6c1897fadaf93e9a71f0e361a602e6d9475a4f50..8754c3d6fd06bd2c834fe06e238afa33 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index db73d8821b3374341fa77fbbb3308a21abb60db6..2e776404e65c5dc6040d00a1ed8b5ce0df7badc0 100644 +index 9cfc31b9acca44c56b78ba6d935bcb6c1d6c5697..017482c8818a854b23237e27e3304498d800569d 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -153,6 +153,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -154,6 +154,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { } // Purpur end - Make entity breeding times configurable @@ -531,10 +531,10 @@ index fe2570ceb96d39ff6598a67a4ac4b4707eb28656..14a17d4b33b276f28e45ce06de06793a public SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 39b8b10b950359952c7b149e4fca08d68f1ad8eb..f1a131b9fe4fce78cf34e04eefc886a844a50e72 100644 +index 042b73f0807438327ebf4a2fd3a9d54d52159511..cff709a28830a842a499f7dfe3b8bc0b703c9af4 100644 --- a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -@@ -72,6 +72,13 @@ public class SkeletonHorse extends AbstractHorse { +@@ -73,6 +73,13 @@ public class SkeletonHorse extends AbstractHorse { } // Purpur end - Make entity breeding times configurable @@ -549,10 +549,10 @@ index 39b8b10b950359952c7b149e4fca08d68f1ad8eb..f1a131b9fe4fce78cf34e04eefc886a8 return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/horse/TraderLlama.java b/net/minecraft/world/entity/animal/horse/TraderLlama.java -index c67f82654897bec94dce1226d5ef2ce10d53e077..4cd4bfd57285808f4bda7e7dd2ddeda36dd13af0 100644 +index b36064e58ecc1512fed2d53c20bde333a405e8b0..81e902ba31b55722f4d257e918b56fa654083916 100644 --- a/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/net/minecraft/world/entity/animal/horse/TraderLlama.java -@@ -76,6 +76,13 @@ public class TraderLlama extends Llama { +@@ -77,6 +77,13 @@ public class TraderLlama extends Llama { } // Purpur end - Make entity breeding times configurable @@ -585,10 +585,10 @@ index 69b9ae449e58f13bf0950fdfe3f89742af89956e..e78fac0a5e37d53afbc200f015adab60 return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/sheep/Sheep.java b/net/minecraft/world/entity/animal/sheep/Sheep.java -index 625f9b7bb027ccc4495d83349909be59e7a19061..1ecfda9a5222d7c175108edbbff552ea036e0321 100644 +index 1fee6d36abe42ff9998287c47d0f498bbba910e3..8394453415a0d098de6176662f97df2174a83697 100644 --- a/net/minecraft/world/entity/animal/sheep/Sheep.java +++ b/net/minecraft/world/entity/animal/sheep/Sheep.java -@@ -116,6 +116,13 @@ public class Sheep extends Animal implements Shearable { +@@ -94,6 +94,13 @@ public class Sheep extends Animal implements Shearable { } // Purpur end - Make entity breeding times configurable @@ -603,10 +603,10 @@ index 625f9b7bb027ccc4495d83349909be59e7a19061..1ecfda9a5222d7c175108edbbff552ea protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java -index 99050a33a170b685c2fe3645b80c21b6069ab48a..243e848a6f4eaa2a72f02a1f056f20d9de23058f 100644 +index 372360baedbe4f8b59e94c261bc60346ba3cfbbe..d492c6bcbc45e312a5ee2d3567a26853b514d027 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java -@@ -224,6 +224,13 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -223,6 +223,13 @@ public class Wolf extends TamableAnimal implements NeutralMob { } // Purpur end - Make entity breeding times configurable @@ -621,10 +621,10 @@ index 99050a33a170b685c2fe3645b80c21b6069ab48a..243e848a6f4eaa2a72f02a1f056f20d9 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index f014b4ca2baf97edf472ce4d8af1209eaf4d53d1..b782ddd14d68717c387754300fc1be69d05df66f 100644 +index 6191a58d09fd0ca4625ecb90be78cce2049e4696..de09a91b89661118e460842453e33f383ea08a94 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -171,6 +171,13 @@ public class EnderDragon extends Mob implements Enemy { +@@ -172,6 +172,13 @@ public class EnderDragon extends Mob implements Enemy { } // Purpur end - Configurable entity base attributes @@ -636,13 +636,13 @@ index f014b4ca2baf97edf472ce4d8af1209eaf4d53d1..b782ddd14d68717c387754300fc1be69 + // Purpur end - Toggle for water sensitive mob damage + public static AttributeSupplier.Builder createAttributes() { - return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0); + return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0).add(Attributes.CAMERA_DISTANCE, 16.0); } diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 951de2194f8e669e454edd8678cd254e94d18ab7..5862384e096d0a97a9a92a921f704e441243e38a 100644 +index 72a7fde24a132f986318c9730aad9e4cefc70fdb..d4e4aa98e2259aa7f5dbce1585257a4e24b4782f 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -220,6 +220,13 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -221,6 +221,13 @@ public class WitherBoss extends Monster implements RangedAttackMob { } // Purpur end - Configurable entity base attributes @@ -697,10 +697,10 @@ index 64eecd8d1acd318743800c1daa77cd97097a0f7c..420fe0d01d0b173a6a541f77e1aaca3f public boolean doHurtTarget(ServerLevel level, Entity source) { if (super.doHurtTarget(level, source)) { diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java -index 53a7390c61b9ada8784eae0c9b4e78ee85c68317..67f99138834011d12f429cf7ff6fdb7c6bd06262 100644 +index 60e420d79b73dd844bdae6c3846c6f4838fe2ca2..7ebce241a4195326bbecd158952f2ec559196ad3 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java -@@ -264,6 +264,13 @@ public class Creeper extends Monster { +@@ -265,6 +265,13 @@ public class Creeper extends Monster { } // Purpur end - Config to make Creepers explode on death @@ -715,10 +715,10 @@ index 53a7390c61b9ada8784eae0c9b4e78ee85c68317..67f99138834011d12f429cf7ff6fdb7c public SoundEvent getHurtSound(DamageSource damageSource) { return SoundEvents.CREEPER_HURT; diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java -index 2004595c51564d863aee65fc47541014ea184e10..3dae0020a506527e1e556945da5334de54bdabee 100644 +index ffd9e34b4d57bdafc597b2208f754c7454afd48a..6e8ae9aa0b5051b7fb303476e52ba2cc76c29c84 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java -@@ -122,6 +122,13 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -123,6 +123,13 @@ public class Drowned extends Zombie implements RangedAttackMob { } // Purpur end - Configurable jockey options @@ -733,7 +733,7 @@ index 2004595c51564d863aee65fc47541014ea184e10..3dae0020a506527e1e556945da5334de protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0)); diff --git a/net/minecraft/world/entity/monster/ElderGuardian.java b/net/minecraft/world/entity/monster/ElderGuardian.java -index 15f037dbd9bafc8a978911dfa04c42f3c19dc7fd..27dd75a64af375ce498224bfd7ed4799ed586d9c 100644 +index 7ebc7224d3db38cc5137112d5a74999f6e23b8d5..287b6fea404d4f1f121219f92918dc2d1c0ac780 100644 --- a/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/net/minecraft/world/entity/monster/ElderGuardian.java @@ -51,6 +51,13 @@ public class ElderGuardian extends Guardian { @@ -751,10 +751,10 @@ index 15f037dbd9bafc8a978911dfa04c42f3c19dc7fd..27dd75a64af375ce498224bfd7ed4799 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0); } diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index 0cae67d67af733b0bc6558f8cc1056b45554e3ce..10b505712791d10e9b36cc6cfffeb590c74284e5 100644 +index 002fef87101e2c98c8a091d416cb4729bd092455..73d66dffa57b31e4d772438f6d2f23cfbbcfb281 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -88,7 +88,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -86,7 +86,7 @@ public class EnderMan extends Monster implements NeutralMob { public EnderMan(EntityType entityType, Level level) { super(entityType, level); @@ -763,7 +763,7 @@ index 0cae67d67af733b0bc6558f8cc1056b45554e3ce..10b505712791d10e9b36cc6cfffeb590 } // Purpur start - Ridables -@@ -285,7 +285,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -281,7 +281,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean isSensitiveToWater() { @@ -773,10 +773,10 @@ index 0cae67d67af733b0bc6558f8cc1056b45554e3ce..10b505712791d10e9b36cc6cfffeb590 @Override diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java -index a3095f2a5ff162d502502ad2ed0a485daba86962..c4bfd0fb0fbee4fa72e4cf17931c95831daaf73f 100644 +index 2c3e44b82b396dd8e870f548f1d18d8f4b91ad1d..4565a592face29a077d96fc0cd52bceaed52f755 100644 --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java -@@ -71,6 +71,13 @@ public class Endermite extends Monster { +@@ -72,6 +72,13 @@ public class Endermite extends Monster { } // Purpur end - Configurable entity base attributes @@ -791,10 +791,10 @@ index a3095f2a5ff162d502502ad2ed0a485daba86962..c4bfd0fb0fbee4fa72e4cf17931c9583 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Evoker.java b/net/minecraft/world/entity/monster/Evoker.java -index b14b72f7bbf6cb65b1515c12bae47187fe1371b5..e1debcc5d859961a9d9893fa5ffbe67deea35f6d 100644 +index 4d1d746e39d136243dc620c89b29daf80dc62230..d77e3b0f36ec4a262ff375d9e2da912553a344f8 100644 --- a/net/minecraft/world/entity/monster/Evoker.java +++ b/net/minecraft/world/entity/monster/Evoker.java -@@ -75,6 +75,13 @@ public class Evoker extends SpellcasterIllager { +@@ -73,6 +73,13 @@ public class Evoker extends SpellcasterIllager { } // Purpur end - Configurable entity base attributes @@ -809,10 +809,10 @@ index b14b72f7bbf6cb65b1515c12bae47187fe1371b5..e1debcc5d859961a9d9893fa5ffbe67d protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java -index a55d588709bbf04d4267bd991fb3be0daaba34d4..4864009a9e531d37f9c3747a042d8ea1ed6ccbf7 100644 +index 5e2ae3ada994b5fa7758a61cdf1c0e9f26c23a79..92a9ce3d7db83a631281a6ac11ccc4441e04efdc 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java -@@ -85,6 +85,13 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -94,6 +94,13 @@ public class Ghast extends Mob implements Enemy { } // Purpur end - Configurable entity base attributes @@ -827,7 +827,7 @@ index a55d588709bbf04d4267bd991fb3be0daaba34d4..4864009a9e531d37f9c3747a042d8ea1 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/Giant.java b/net/minecraft/world/entity/monster/Giant.java -index 73da18c4b54e250c434fd75971ef0a8f7c8cf6a3..009b8a8b1b9aabc0aef1c12a0c0f65f9ccfcd306 100644 +index f5565d314ded2145219debc446c7ddcb93b660e9..ccc2f7906c322a5406467986565074cbddf6cbe0 100644 --- a/net/minecraft/world/entity/monster/Giant.java +++ b/net/minecraft/world/entity/monster/Giant.java @@ -62,6 +62,13 @@ public class Giant extends Monster { @@ -842,8 +842,8 @@ index 73da18c4b54e250c434fd75971ef0a8f7c8cf6a3..009b8a8b1b9aabc0aef1c12a0c0f65f9 + // Purpur end - Toggle for water sensitive mob damage + 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); - } + return Monster.createMonsterAttributes() + .add(Attributes.MAX_HEALTH, 100.0) diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java index 2b03af6e0f378d855c42fa688d0cd2bc8480102b..9868117ecf0a3b36f81086297c639f6f274e0055 100644 --- a/net/minecraft/world/entity/monster/Guardian.java @@ -881,7 +881,7 @@ index 75cb1db5584c04e442583ab2f50a26132ed48bfb..9baec22561093d64157d93449e84c23b EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index 09804a8c789bff4f40277c2697c3f9aed00c4d15..553a8f0f5b895f3d8528f10efdc918466e4f4d87 100644 +index c45786fa6b9c7834b73fa0266ad4f37dfdfb8937..b2e59058c71eb0b05670be8dcddfff073ae2d0db 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -84,6 +84,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -917,10 +917,10 @@ index bb1364c4a220cc93f7ac01cbaa617561de4cd2e3..da90b7dc79aa6d01e88c1250fff662ba return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index eaa5f2db1bc6b01ef6a508cc5a60ff1e252c2360..409e98d0981aa8be0d35bc5c93f7130a9ce16860 100644 +index f0351975340dec2b2bd51670f193baf44a62ae16..3e66363e0677d98b5c406fbaac2d4eaa533c6eb2 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -140,6 +140,13 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -141,6 +141,13 @@ public class Phantom extends Mob implements Enemy { } // Purpur end - Phantoms attracted to crystals and crystals shoot phantoms @@ -935,10 +935,10 @@ index eaa5f2db1bc6b01ef6a508cc5a60ff1e252c2360..409e98d0981aa8be0d35bc5c93f7130a public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Pillager.java b/net/minecraft/world/entity/monster/Pillager.java -index eb4fcf0e78c39a4b94b7edb733694a87e3103552..4c41e7e0a164779bf1d6765fdb750dcd60acd104 100644 +index bcc20f9642e9d20cf18bb5f8e63daa277154be1a..faaf42a029b1a0423c5e10ee3e17e4ba0e70be02 100644 --- a/net/minecraft/world/entity/monster/Pillager.java +++ b/net/minecraft/world/entity/monster/Pillager.java -@@ -88,6 +88,13 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve +@@ -89,6 +89,13 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve } // Purpur end - Configurable entity base attributes @@ -953,10 +953,10 @@ index eb4fcf0e78c39a4b94b7edb733694a87e3103552..4c41e7e0a164779bf1d6765fdb750dcd protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index 568a0d17600a82109263de715f3d54fc24039452..0b6550c3abad0eb00af4f303725045a8aa3dc4b1 100644 +index 23b6d3c9746e1ee641d8b19ec50805cb271a9cc9..d75df6de50f9830efeea826d0ebdac17f56d4c4b 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java -@@ -100,6 +100,13 @@ public class Ravager extends Raider { +@@ -101,6 +101,13 @@ public class Ravager extends Raider { } // Purpur end - Configurable entity base attributes @@ -971,10 +971,10 @@ index 568a0d17600a82109263de715f3d54fc24039452..0b6550c3abad0eb00af4f303725045a8 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index 2b19edafe00be425427f47cac045bf301e3caa39..c9dab7d6b1afe8749022d99aa988782c75270561 100644 +index 069dacf455e597a4cb2efae03553479cac2a5fec..d38c6025833079a435971c66cfbb90486721ca14 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -134,6 +134,13 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -135,6 +135,13 @@ public class Shulker extends AbstractGolem implements Enemy { } // Purpur end - Configurable entity base attributes @@ -989,7 +989,7 @@ index 2b19edafe00be425427f47cac045bf301e3caa39..c9dab7d6b1afe8749022d99aa988782c protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java -index ff3761507f2025fd1e652afee03a18de3508676a..af33bd8c472f7e7bfdab52558bac379166ff2253 100644 +index 6f4aaeb645d9638764c3516d2f1501661ac56170..51714029d4ea5033014dcefd25f74cc0c9a72dbd 100644 --- a/net/minecraft/world/entity/monster/Silverfish.java +++ b/net/minecraft/world/entity/monster/Silverfish.java @@ -66,6 +66,13 @@ public class Silverfish extends Monster { @@ -1007,10 +1007,10 @@ index ff3761507f2025fd1e652afee03a18de3508676a..af33bd8c472f7e7bfdab52558bac3791 protected void registerGoals() { this.friendsGoal = new Silverfish.SilverfishWakeUpFriendsGoal(this); diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java -index ee7f885c0c33ef434107788d0c91ac1c0a355f15..fbf8818e0fd80705648f038647b718ec2a2cd1b6 100644 +index c19b76a1a0572cb52ee83769384cdb44e4cdf700..555ada78c81ce912bf8d57a9a094102804b372ef 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -50,6 +50,13 @@ public class Skeleton extends AbstractSkeleton { +@@ -51,6 +51,13 @@ public class Skeleton extends AbstractSkeleton { } // Purpur end - Configurable entity base attributes @@ -1025,10 +1025,10 @@ index ee7f885c0c33ef434107788d0c91ac1c0a355f15..fbf8818e0fd80705648f038647b718ec protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java -index 015af82ab82c3676a7b80c01b83eaf61ee28b61b..f44e9f04e083d48e4a90d8d8e8b5cc199bf9f351 100644 +index 38cdc67bd683b653eb76b1c70e5b493f08245fe6..29b500eb4c010ff83d8474f8ee5602c479243e19 100644 --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java -@@ -133,6 +133,13 @@ public class Slime extends Mob implements Enemy { +@@ -134,6 +134,13 @@ public class Slime extends Mob implements Enemy { } // Purpur end - Configurable entity base attributes @@ -1101,10 +1101,10 @@ index 4e300141b0c7fa967e3d0b9ef952097efeb2bef6..533801988cb4f8a916ef002a179990ca @Override diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index 5378db94e633ee87864685be56c64a18ec481543..0808520f39d5ce96baad25180ead7a69922950f5 100644 +index b5e0f1a2c3ca138cfa1cc4138cf1c5e76dcb9436..193994476a78d68d2ef45f7a354648ce347b0f55 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java -@@ -110,6 +110,13 @@ public class Vex extends Monster implements TraceableEntity { +@@ -112,6 +112,13 @@ public class Vex extends Monster implements TraceableEntity { } // Purpur end - Configurable entity base attributes @@ -1119,10 +1119,10 @@ index 5378db94e633ee87864685be56c64a18ec481543..0808520f39d5ce96baad25180ead7a69 public boolean isFlapping() { return this.tickCount % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index 01a5357d5359394b61f2456fdee8bf3aadf0ca32..50da0e9246f50be6073e26c8fa042fe2b4eabb32 100644 +index 0abc1da5154bef4c7aa03d44f651af39b289c187..9f4d93308adc49d7ae83796a8dc43db16e7992b6 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -81,6 +81,13 @@ public class Vindicator extends AbstractIllager { +@@ -82,6 +82,13 @@ public class Vindicator extends AbstractIllager { } // Purpur end - Configurable entity base attributes @@ -1173,10 +1173,10 @@ index 213530a2378411db2bc597ba7e0bb68cfdb3ebc9..ef2a7fdc8abe05b7718b71e23556258a protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/net/minecraft/world/entity/monster/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java -index 9f5db385dabb01bda033aecaebd1d9b7c9e2ed0b..7cb2bc8b126a0027216ec4afd7f6e54fe328b8be 100644 +index 5333aea53ff61eb6143138c4e44ad85977e524d5..ddc8de9a111395aa77025b809f176425be7bb30c 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java -@@ -111,6 +111,13 @@ public class Zoglin extends Monster implements HoglinBase { +@@ -112,6 +112,13 @@ public class Zoglin extends Monster implements HoglinBase { } // Purpur end - Configurable entity base attributes @@ -1191,10 +1191,10 @@ index 9f5db385dabb01bda033aecaebd1d9b7c9e2ed0b..7cb2bc8b126a0027216ec4afd7f6e54f protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index 02073d4374580278829e680b875d596844213e78..7f9ee637f443f55ae901d1a0aebedd8f7411996d 100644 +index ede9101c44ba53c5bd67254bea6fcff7f00b5b47..51cd12a8173d9f95c6a7c2503c3e0e4d40c427c5 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -143,6 +143,13 @@ public class Zombie extends Monster { +@@ -142,6 +142,13 @@ public class Zombie extends Monster { } // Purpur end - Configurable jockey options @@ -1209,10 +1209,10 @@ index 02073d4374580278829e680b875d596844213e78..7f9ee637f443f55ae901d1a0aebedd8f protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 6bd633390df582e0b1999f5c67cd76e2b23a04eb..c6e460c21af6145321cad527112adc15e9f30d8d 100644 +index 02b503453fb8b64cbf0b9db1e498566289c6bbe3..606fe4bd9c3359e42a025a866873e147ee16a40e 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -123,6 +123,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -122,6 +122,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } // Purpur end - Configurable jockey options @@ -1227,10 +1227,10 @@ index 6bd633390df582e0b1999f5c67cd76e2b23a04eb..c6e460c21af6145321cad527112adc15 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index a8916a8fe5bed57e7b1f755a20e15bed544567fb..34e259b95abfc514e07584a699ecc80de0014250 100644 +index 2adee917a4275742968a2e1e8b65bce4b9ac3cc3..7406f1f589509769aed260197f7cfabc081ce37b 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -105,6 +105,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -106,6 +106,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { } // Purpur end - Configurable jockey options @@ -1245,10 +1245,10 @@ index a8916a8fe5bed57e7b1f755a20e15bed544567fb..34e259b95abfc514e07584a699ecc80d public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index df763444e9935b8f43ea65b3695c715993903fb8..ee2cd8bfb74dead58f77f9755f306aa7166285fd 100644 +index 298246318f5103ff416f076467d3b6bfec297c5e..ddb7532d83b46dae22798937e097a8876fcd6106 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -127,6 +127,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -128,6 +128,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Make entity breeding times configurable @@ -1263,10 +1263,10 @@ index df763444e9935b8f43ea65b3695c715993903fb8..ee2cd8bfb74dead58f77f9755f306aa7 public void setTimeInOverworld(int timeInOverworld) { this.timeInOverworld = timeInOverworld; diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index 8d37820522b12f2e513ca38c6ccdbb6ef3c2fc71..0059e926f09317e056f3f722c4ca775c43bc0b86 100644 +index c600c9b1ea4fe08abdce0aed30f61ef073039c7c..76d572959b3422d1691e34fec3bbeb8d5b50d715 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -161,6 +161,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -162,6 +162,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento } // Purpur end - Configurable entity base attributes @@ -1278,8 +1278,8 @@ index 8d37820522b12f2e513ca38c6ccdbb6ef3c2fc71..0059e926f09317e056f3f722c4ca775c + // Purpur end - Toggle for water sensitive mob damage + @Override - public void addAdditionalSaveData(CompoundTag compound) { - super.addAdditionalSaveData(compound); + protected void addAdditionalSaveData(ValueOutput output) { + super.addAdditionalSaveData(output); diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java index f52aba35ee7e202074cda8fb4dfd6a7d9ded1f09..f4893cc54d7f144025da0057beedb3a974c80dc1 100644 --- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java @@ -1299,10 +1299,10 @@ index f52aba35ee7e202074cda8fb4dfd6a7d9ded1f09..f4893cc54d7f144025da0057beedb3a9 return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 2846aca7bad55b56430738baeee9554e34da316c..654935f2994c588c8545c21d6de839711c55cdfc 100644 +index 3b78e25de462a6fc393175f7992b9a1d4d08c64b..6490b3791648f0680d44d6ca1e0d3b67df180997 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -281,6 +281,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -282,6 +282,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end - Configurable entity base attributes @@ -1317,10 +1317,10 @@ index 2846aca7bad55b56430738baeee9554e34da316c..654935f2994c588c8545c21d6de83971 public Brain getBrain() { return (Brain)super.getBrain(); diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index e726893a3ddf49bdfd2d190477bccf6e33de1847..7ad6a8479a0bdda570ac286220eacd0ba8642111 100644 +index 2917820bf01b1a2ca7301a7099b7b3dcd6c3ee67..f2b59a4490226168dd69ace94022cf6398d48615 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -97,6 +97,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -98,6 +98,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill } // Purpur end - Villagers follow emerald blocks diff --git a/purpur-server/minecraft-patches/unapplied-features/0018-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch similarity index 72% rename from purpur-server/minecraft-patches/unapplied-features/0018-API-for-any-mob-to-burn-daylight.patch rename to purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch index 09ee6ceb8..452e113f5 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0018-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0018-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/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 1edca56b4bf880460148d00b98225fc34bd15f17..5b0a4ef4ae5a762432dbb0def005f7505197445e 100644 +index bce2b06cd7c0b9928a6538ddcd370f2c4d84a9ae..5a6db2d02204cf98de02c30b63666692ed03c000 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -521,6 +521,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -435,6 +435,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Purpur end - Add canSaveToDisk to Entity @@ -35,10 +35,10 @@ index 1edca56b4bf880460148d00b98225fc34bd15f17..5b0a4ef4ae5a762432dbb0def005f750 this.type = entityType; this.level = level; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 13a1b5dd8b1a07a584f71b1f24da28965f5e2a5d..fb42e31e812f99bf7b74c376ed47fcaee3213238 100644 +index a70fddd19b24bb25edde63e4fda4685ee6997eba..eabee40979ab8a1611b2d4eff04414f303b672f1 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -273,6 +273,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -286,6 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin 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 public int shieldBlockingDelay = this.level().paperConfig().misc.shieldBlockingDelay; // Paper - Make shield blocking delay configurable @@ -46,23 +46,23 @@ index 13a1b5dd8b1a07a584f71b1f24da28965f5e2a5d..fb42e31e812f99bf7b74c376ed47fcae // CraftBukkit end protected LivingEntity(EntityType entityType, Level level) { -@@ -768,6 +769,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - this.getSleepingPos().ifPresent(pos -> compound.store("sleeping_pos", BlockPos.CODEC, pos)); - DataResult dataResult = this.brain.serializeStart(NbtOps.INSTANCE); - dataResult.resultOrPartial(LOGGER::error).ifPresent(tag -> compound.put("Brain", tag)); -+ compound.putBoolean("Purpur.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - API for any mob to burn daylight +@@ -789,6 +790,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin + this.getSleepingPos().ifPresent(blockPos -> output.store("sleeping_pos", BlockPos.CODEC, blockPos)); + DataResult> dataResult = this.brain.serializeStart(NbtOps.INSTANCE).map(tag -> new Dynamic<>(NbtOps.INSTANCE, tag)); + dataResult.resultOrPartial(LOGGER::error).ifPresent(dynamic -> output.store("Brain", Codec.PASSTHROUGH, (Dynamic)dynamic)); ++ output.putBoolean("Purpur.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - API for any mob to burn daylight if (this.lastHurtByPlayer != null) { - this.lastHurtByPlayer.store(compound, "last_hurt_by_player"); - compound.putInt("last_hurt_by_player_memory_time", this.lastHurtByPlayerMemoryTime); -@@ -891,6 +893,7 @@ public abstract class LivingEntity extends Entity implements Attackable { + this.lastHurtByPlayer.store(output, "last_hurt_by_player"); + output.putInt("last_hurt_by_player_memory_time", this.lastHurtByPlayerMemoryTime); +@@ -915,6 +917,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin } // Paper - The sleeping pos will always also set the actual pos, so a desync suggests something is wrong }, this::clearSleepingPos); - compound.getCompound("Brain").ifPresent(compoundTag -> this.brain = this.makeBrain(new Dynamic<>(NbtOps.INSTANCE, compoundTag))); -+ this.shouldBurnInDay = compound.getBooleanOr("Purpur.ShouldBurnInDay", false); // Purpur - API for any mob to burn daylight - this.lastHurtByPlayer = EntityReference.read(compound, "last_hurt_by_player"); - this.lastHurtByPlayerMemoryTime = compound.getIntOr("last_hurt_by_player_memory_time", 0); - this.lastHurtByMob = EntityReference.read(compound, "last_hurt_by_mob"); -@@ -3614,6 +3617,32 @@ public abstract class LivingEntity extends Entity implements Attackable { + input.read("Brain", Codec.PASSTHROUGH).ifPresent(dynamic -> this.brain = this.makeBrain((Dynamic)dynamic)); ++ this.shouldBurnInDay = input.getBooleanOr("Purpur.ShouldBurnInDay", false); // Purpur - API for any mob to burn daylight + this.lastHurtByPlayer = EntityReference.read(input, "last_hurt_by_player"); + this.lastHurtByPlayerMemoryTime = input.getIntOr("last_hurt_by_player_memory_time", 0); + this.lastHurtByMob = EntityReference.read(input, "last_hurt_by_mob"); +@@ -3666,6 +3669,32 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterOrRain()) { this.hurtServer(serverLevel, this.damageSources().drown(), 1.0F); } @@ -96,10 +96,10 @@ index 13a1b5dd8b1a07a584f71b1f24da28965f5e2a5d..fb42e31e812f99bf7b74c376ed47fcae protected void applyInput() { diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index b828524d62a940f89f0c0fa926ef0423019ec212..e9344f61a943d610dfabe4918c227ddba166f17f 100644 +index e05cf29c630d43c66614012c50b9dd4ece4c44f6..b0a5f79eb2c3ea84fd37eaa653a4f2c83caeab5d 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -1531,19 +1531,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1557,19 +1557,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } public boolean isSunBurnTick() { @@ -122,7 +122,7 @@ index b828524d62a940f89f0c0fa926ef0423019ec212..e9344f61a943d610dfabe4918c227ddb @Override diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 0a5de00d41c59528e9f85a7cf82363c45e24d2bc..185edd9878f5193c44b75a126e8182caade7e943 100644 +index caa018d1dd0b6e97ec9d3fa70bbffe9eb3b1edec..d69d5b575e93b4ae9a0e2b311352fd3790d464c6 100644 --- a/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -64,11 +64,12 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -169,19 +169,19 @@ index 0a5de00d41c59528e9f85a7cf82363c45e24d2bc..185edd9878f5193c44b75a126e8182ca } @@ -242,14 +223,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo - public void readAdditionalSaveData(CompoundTag compound) { - super.readAdditionalSaveData(compound); + protected void readAdditionalSaveData(ValueInput input) { + super.readAdditionalSaveData(input); this.reassessWeaponGoal(); -- this.shouldBurnInDay = compound.getBooleanOr("Paper.ShouldBurnInDay", true); // Paper - shouldBurnInDay API -+ //this.shouldBurnInDay = compound.getBooleanOr("Paper.ShouldBurnInDay", true); // Paper - shouldBurnInDay API // Purpur - implemented in LivingEntity - API for any mob to burn daylight +- this.shouldBurnInDay = input.getBooleanOr("Paper.ShouldBurnInDay", true); // Paper - shouldBurnInDay API ++ //this.shouldBurnInDay = input.getBooleanOr("Paper.ShouldBurnInDay", true); // Paper - shouldBurnInDay API // Purpur - implemented in LivingEntity - API for any mob to burn daylight } // Paper start - shouldBurnInDay API @Override - public void addAdditionalSaveData(final net.minecraft.nbt.CompoundTag nbt) { - super.addAdditionalSaveData(nbt); -- nbt.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); -+ //nbt.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - implemented in LivingEntity - API for any mob to burn daylight + protected void addAdditionalSaveData(final net.minecraft.world.level.storage.ValueOutput output) { + super.addAdditionalSaveData(output); +- output.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); ++ //output.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - implemented in LivingEntity - API for any mob to burn daylight } // Paper end - shouldBurnInDay API @@ -207,10 +207,10 @@ index 9baec22561093d64157d93449e84c23b3f238b39..3f331215ef49c52fa3a53bcf744159d2 @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 409e98d0981aa8be0d35bc5c93f7130a9ce16860..c2bc638b0029ac46cf388187ca74545060a54914 100644 +index 3e66363e0677d98b5c406fbaac2d4eaa533c6eb2..bfd4d7eef537c0d3688159d6db99236d6ed2f810 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -61,6 +61,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -62,6 +62,7 @@ public class Phantom extends Mob implements Enemy { this.xpReward = 5; this.moveControl = new Phantom.PhantomMoveControl(this); this.lookControl = new Phantom.PhantomLookControl(this); @@ -218,7 +218,7 @@ index 409e98d0981aa8be0d35bc5c93f7130a9ce16860..c2bc638b0029ac46cf388187ca745450 } // Purpur start - Ridables -@@ -147,6 +148,16 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -148,6 +149,16 @@ public class Phantom extends Mob implements Enemy { } // Purpur end - Toggle for water sensitive mob damage @@ -235,7 +235,7 @@ index 409e98d0981aa8be0d35bc5c93f7130a9ce16860..c2bc638b0029ac46cf388187ca745450 @Override public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; -@@ -262,15 +273,7 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -263,15 +274,7 @@ public class Phantom extends Mob implements Enemy { @Override public void aiStep() { @@ -252,29 +252,29 @@ index 409e98d0981aa8be0d35bc5c93f7130a9ce16860..c2bc638b0029ac46cf388187ca745450 super.aiStep(); } -@@ -294,7 +297,7 @@ public class Phantom extends FlyingMob implements Enemy { - this.setPhantomSize(compound.getIntOr("size", 0)); +@@ -309,7 +312,7 @@ public class Phantom extends Mob implements Enemy { + this.setPhantomSize(input.getIntOr("size", 0)); // Paper start - this.spawningEntity = compound.read("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC).orElse(null); -- this.shouldBurnInDay = compound.getBooleanOr("Paper.ShouldBurnInDay", true); -+ //this.shouldBurnInDay = compound.getBooleanOr("Paper.ShouldBurnInDay", true); // Purpur - implemented in LivingEntity - API for any mob to burn daylight + this.spawningEntity = input.read("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC).orElse(null); +- this.shouldBurnInDay = input.getBooleanOr("Paper.ShouldBurnInDay", true); ++ //this.shouldBurnInDay = input.getBooleanOr("Paper.ShouldBurnInDay", true); // Purpur - implemented in LivingEntity - API for any mob to burn daylight // Paper end } -@@ -305,7 +308,7 @@ public class Phantom extends FlyingMob implements Enemy { - compound.putInt("size", this.getPhantomSize()); +@@ -320,7 +323,7 @@ public class Phantom extends Mob implements Enemy { + output.putInt("size", this.getPhantomSize()); // Paper start - compound.storeNullable("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC, this.spawningEntity); -- compound.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); -+ //compound.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - implemented in LivingEntity - API for any mob to burn daylight + output.storeNullable("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC, this.spawningEntity); +- output.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); ++ output.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - implemented in LivingEntity - API for any mob to burn daylight // Paper end } diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index 7f9ee637f443f55ae901d1a0aebedd8f7411996d..aed6db357f5b4550407a424a5b83c590044568ee 100644 +index 51cd12a8173d9f95c6a7c2503c3e0e4d40c427c5..147c030a2f8fd0d430070a36946fa42af177ea68 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -93,11 +93,12 @@ public class Zombie extends Monster { +@@ -92,11 +92,12 @@ public class Zombie extends Monster { private boolean canBreakDoors = false; private int inWaterTime = 0; public int conversionTime; @@ -288,7 +288,7 @@ index 7f9ee637f443f55ae901d1a0aebedd8f7411996d..aed6db357f5b4550407a424a5b83c590 } public Zombie(Level level) { -@@ -294,29 +295,7 @@ public class Zombie extends Monster { +@@ -293,29 +294,7 @@ public class Zombie extends Monster { @Override public void aiStep() { @@ -319,7 +319,7 @@ index 7f9ee637f443f55ae901d1a0aebedd8f7411996d..aed6db357f5b4550407a424a5b83c590 super.aiStep(); } -@@ -375,6 +354,7 @@ public class Zombie extends Monster { +@@ -374,6 +353,7 @@ public class Zombie extends Monster { // CraftBukkit end } @@ -327,21 +327,21 @@ index 7f9ee637f443f55ae901d1a0aebedd8f7411996d..aed6db357f5b4550407a424a5b83c590 public boolean isSunSensitive() { return this.shouldBurnInDay; // Paper - Add more Zombie API } -@@ -512,7 +492,7 @@ public class Zombie extends Monster { - compound.putBoolean("CanBreakDoors", this.canBreakDoors()); - compound.putInt("InWaterTime", this.isInWater() ? this.inWaterTime : -1); - compound.putInt("DrownedConversionTime", this.isUnderWaterConverting() ? this.conversionTime : -1); -- compound.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Paper - Add more Zombie API -+ //compound.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Paper - Add more Zombie API // Purpur - implemented in LivingEntity - API for any mob to burn daylight +@@ -511,7 +491,7 @@ public class Zombie extends Monster { + output.putBoolean("CanBreakDoors", this.canBreakDoors()); + output.putInt("InWaterTime", this.isInWater() ? this.inWaterTime : -1); + output.putInt("DrownedConversionTime", this.isUnderWaterConverting() ? this.conversionTime : -1); +- output.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Paper - Add more Zombie API ++ //output.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Paper - Add more Zombie API // Purpur - implemented in LivingEntity - API for any mob to burn daylight } @Override -@@ -527,7 +507,7 @@ public class Zombie extends Monster { +@@ -526,7 +506,7 @@ public class Zombie extends Monster { } else { this.getEntityData().set(DATA_DROWNED_CONVERSION_ID, false); } -- this.shouldBurnInDay = compound.getBooleanOr("Paper.ShouldBurnInDay", true); // Paper - Add more Zombie API -+ //this.shouldBurnInDay = compound.getBooleanOr("Paper.ShouldBurnInDay", true); // Paper - Add more Zombie API // Purpur - implemented in LivingEntity - API for any mob to burn daylight +- this.shouldBurnInDay = input.getBooleanOr("Paper.ShouldBurnInDay", true); // Paper - Add more Zombie API ++ //this.shouldBurnInDay = input.getBooleanOr("Paper.ShouldBurnInDay", true); // Paper - Add more Zombie API // Purpur - implemented in LivingEntity - API for any mob to burn daylight } @Override diff --git a/purpur-server/minecraft-patches/unapplied-features/0019-Cows-naturally-aggressive-to-players-chance.patch b/purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch similarity index 82% rename from purpur-server/minecraft-patches/unapplied-features/0019-Cows-naturally-aggressive-to-players-chance.patch rename to purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch index 80aac9d45..b22e0ee04 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0019-Cows-naturally-aggressive-to-players-chance.patch +++ b/purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Cows naturally aggressive to players chance diff --git a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -index 46022a0aabc9c319deeb75913d356eeb74f1a12c..9952eed6a8ac31c757d5c27e043b85d7a949b481 100644 +index bead2f6800bdc404228500c12caf326559fa47de..e6ef56d94e29a6629c9b672ed4ac4ef29ad6a286 100644 --- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -@@ -126,7 +126,7 @@ public class DefaultAttributes { +@@ -128,7 +128,7 @@ public class DefaultAttributes { .put(EntityType.IRON_GOLEM, IronGolem.createAttributes().build()) .put(EntityType.LLAMA, Llama.createAttributes().build()) .put(EntityType.MAGMA_CUBE, MagmaCube.createAttributes().build()) @@ -18,11 +18,11 @@ index 46022a0aabc9c319deeb75913d356eeb74f1a12c..9952eed6a8ac31c757d5c27e043b85d7 .put(EntityType.OCELOT, Ocelot.createAttributes().build()) .put(EntityType.PANDA, Panda.createAttributes().build()) diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index 4bc6d0eb56b4674e2ac0f13010521314a95e0096..731f27cf8687ffa95c0df5601a4465b5174fe248 100644 +index d584ffe3cc8dfb5fd4ce352b1da18af6a143d575..09ee10a17e15431a2937cf753e670dc000a2e36f 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java -@@ -22,6 +22,8 @@ import net.minecraft.world.level.Level; - import net.minecraft.world.level.ServerLevelAccessor; +@@ -23,6 +23,8 @@ import net.minecraft.world.level.storage.ValueInput; + import net.minecraft.world.level.storage.ValueOutput; public class Cow extends AbstractCow { + private boolean isNaturallyAggressiveToPlayers; // Purpur - Cows naturally aggressive to players chance @@ -30,7 +30,7 @@ index 4bc6d0eb56b4674e2ac0f13010521314a95e0096..731f27cf8687ffa95c0df5601a4465b5 private static final EntityDataAccessor> DATA_VARIANT_ID = SynchedEntityData.defineId(Cow.class, EntityDataSerializers.COW_VARIANT); public Cow(EntityType entityType, Level level) { -@@ -48,8 +50,9 @@ public class Cow extends AbstractCow { +@@ -49,8 +51,9 @@ public class Cow extends AbstractCow { // Purpur start - Configurable entity base attributes @Override public void initAttributes() { @@ -42,7 +42,7 @@ index 4bc6d0eb56b4674e2ac0f13010521314a95e0096..731f27cf8687ffa95c0df5601a4465b5 } // Purpur end - Configurable entity base attributes -@@ -67,6 +70,13 @@ public class Cow extends AbstractCow { +@@ -68,6 +71,13 @@ public class Cow extends AbstractCow { } // Purpur end - Toggle for water sensitive mob damage @@ -56,8 +56,8 @@ index 4bc6d0eb56b4674e2ac0f13010521314a95e0096..731f27cf8687ffa95c0df5601a4465b5 @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); -@@ -79,6 +89,12 @@ public class Cow extends AbstractCow { - VariantUtils.writeVariant(compound, this.getVariant()); +@@ -80,6 +90,12 @@ public class Cow extends AbstractCow { + VariantUtils.writeVariant(output, this.getVariant()); } + // Purpur start - Cows naturally aggressive to players chance @@ -67,13 +67,13 @@ index 4bc6d0eb56b4674e2ac0f13010521314a95e0096..731f27cf8687ffa95c0df5601a4465b5 + // Purpur end - Cows naturally aggressive to players chance + @Override - public void readAdditionalSaveData(CompoundTag compound) { - super.readAdditionalSaveData(compound); -@@ -100,6 +116,7 @@ public class Cow extends AbstractCow { + protected void readAdditionalSaveData(ValueInput input) { + super.readAdditionalSaveData(input); +@@ -101,6 +117,7 @@ public class Cow extends AbstractCow { public SpawnGroupData finalizeSpawn( ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData ) { + this.isNaturallyAggressiveToPlayers = level.getLevel().purpurConfig.cowNaturallyAggressiveToPlayersChance > 0.0D && random.nextDouble() <= level.getLevel().purpurConfig.cowNaturallyAggressiveToPlayersChance; // Purpur - Cows naturally aggressive to players chance - CowVariants.selectVariantToSpawn(this.random, this.registryAccess(), SpawnContext.create(level, this.blockPosition())).ifPresent(this::setVariant); + VariantUtils.selectVariantToSpawn(SpawnContext.create(level, this.blockPosition()), Registries.COW_VARIANT).ifPresent(this::setVariant); return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData); } diff --git a/purpur-server/minecraft-patches/unapplied-features/0020-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch similarity index 85% rename from purpur-server/minecraft-patches/unapplied-features/0020-Mobs-always-drop-experience.patch rename to purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch index cae877335..59641be0f 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0020-Mobs-always-drop-experience.patch +++ b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Mobs always drop experience diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java -index fe6f29c5e663daea017b19aaafaddda40b4c22bb..745f73e1f80d9c433630e31769b404eeeb63cb88 100644 +index 1c446cec71aa163374ab9832c961a6b4c3fc534b..86a694b94045b47f6e98c480645f75738b8a052c 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java -@@ -60,6 +60,13 @@ public class GlowSquid extends Squid { +@@ -61,6 +61,13 @@ public class GlowSquid extends Squid { } // Purpur end - Toggle for water sensitive mob damage @@ -23,10 +23,10 @@ index fe6f29c5e663daea017b19aaafaddda40b4c22bb..745f73e1f80d9c433630e31769b404ee protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java -index 4d44b35ee34eb256b9aff9d74b1cb9ae1ac9503f..46aaba94e7b6bde26ad3b61fcf5e0aa07fed7987 100644 +index 2d2b44f2617732bcdfd969454f80b9ad4af470a1..4e046158a0782a1fd08c6b4d8d332b6eb5bce7aa 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java -@@ -117,6 +117,13 @@ public class Bat extends AmbientCreature { +@@ -118,6 +118,13 @@ public class Bat extends AmbientCreature { } // Purpur end - Toggle for water sensitive mob damage @@ -41,10 +41,10 @@ index 4d44b35ee34eb256b9aff9d74b1cb9ae1ac9503f..46aaba94e7b6bde26ad3b61fcf5e0aa0 public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index 9a9b0d1ca7b30916e1ac3938924ced8d77dafdaf..e9dfff7e3726cd2229f89bb39fa1ca4815d99a6d 100644 +index 31a9451417272ec5bb6a6cbc3ec308f6c5cd057f..ca5651f15552f91fba650747d28a75c00fa11442 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -494,6 +494,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -495,6 +495,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } // Purpur end - Toggle for water sensitive mob damage @@ -59,10 +59,10 @@ index 9a9b0d1ca7b30916e1ac3938924ced8d77dafdaf..e9dfff7e3726cd2229f89bb39fa1ca48 public int getRemainingPersistentAngerTime() { return this.entityData.get(DATA_REMAINING_ANGER_TIME); diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index 1d758dd3ee0834fcf9ebf737bc7a016b881145e5..db536a60f3f370d163e4429865634b449f4c0cfb 100644 +index 41f303078b2e1f0460215fbfe27ff06fd5783c35..09d518a59fe93afbeacb2d41a0c9d287f4a74443 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java -@@ -138,6 +138,13 @@ public class Cat extends TamableAnimal { +@@ -139,6 +139,13 @@ public class Cat extends TamableAnimal { } // Purpur end - Toggle for water sensitive mob damage @@ -77,10 +77,10 @@ index 1d758dd3ee0834fcf9ebf737bc7a016b881145e5..db536a60f3f370d163e4429865634b44 protected void registerGoals() { this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true); diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java -index 3faa8ac614b6d2f8f90c7092900aa24aa976c0ac..75cccc11019c5c6587d441e2c759d351dcb56153 100644 +index 58f7690a05febac5c57ba7ea2aff93b7d94a4291..eaf913805195a580e3aa816dc28053abb9bdc246 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java -@@ -115,6 +115,13 @@ public class Chicken extends Animal { +@@ -116,6 +116,13 @@ public class Chicken extends Animal { } // Purpur end - Toggle for water sensitive mob damage @@ -113,10 +113,10 @@ index 6128ed595cb97cc11c1a0e1e1673b3af8e428fb8..7e08573cba6efcd78fcce37bccc2923f public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index 731f27cf8687ffa95c0df5601a4465b5174fe248..6b504c2fdde020e086b0d01139cb56d65b7f9ad1 100644 +index 09ee10a17e15431a2937cf753e670dc000a2e36f..b2fa170b14bc3037e5c143d320d0a1ef24738f1c 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java -@@ -70,6 +70,13 @@ public class Cow extends AbstractCow { +@@ -71,6 +71,13 @@ public class Cow extends AbstractCow { } // Purpur end - Toggle for water sensitive mob damage @@ -131,10 +131,10 @@ index 731f27cf8687ffa95c0df5601a4465b5174fe248..6b504c2fdde020e086b0d01139cb56d6 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java -index 4f3777ee9cf7a67d5e2f489dbcf40ec2a1ed13cd..87ba416479df56bad5d13c01e96e92e45b7802a3 100644 +index cff87e0047167751d9b4672a0caae642f15426a9..23696a5e2871ea07f34d4b4f6a20e2896ac3f5bd 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java -@@ -165,6 +165,13 @@ public class Dolphin extends AgeableWaterCreature { +@@ -166,6 +166,13 @@ public class Dolphin extends AgeableWaterCreature { } // Purpur end - Toggle for water sensitive mob damage @@ -149,10 +149,10 @@ index 4f3777ee9cf7a67d5e2f489dbcf40ec2a1ed13cd..87ba416479df56bad5d13c01e96e92e4 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 98cb5c75bb4397914271f81aeace045105a9572e..fcda990a5575288b39f6aa16b0ec48d2a57542e9 100644 +index 23e119ce82c3a0541b40249b20f133e39fac6858..8964bb5098c0dc36741af3656af6bc0b5b463abe 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -201,6 +201,13 @@ public class Fox extends Animal { +@@ -202,6 +202,13 @@ public class Fox extends Animal { } // Purpur end - Toggle for water sensitive mob damage @@ -167,10 +167,10 @@ index 98cb5c75bb4397914271f81aeace045105a9572e..fcda990a5575288b39f6aa16b0ec48d2 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java -index 498302a20b783f2208417b56716f4fc4f18bc333..21ed6bfcba6ea58663dc8e932814c1ac084d0402 100644 +index 006df1758bdaeb55a7db938afd9e00c575a62e60..8885ab56eb72c0106ef57359ca11f70c012fc348 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java -@@ -106,6 +106,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -107,6 +107,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob { } // Purpur end - Toggle for water sensitive mob damage @@ -185,10 +185,10 @@ index 498302a20b783f2208417b56716f4fc4f18bc333..21ed6bfcba6ea58663dc8e932814c1ac protected void registerGoals() { if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur - Iron golem calm anger options diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index 114d893f74dfb4422380cad649b7f3708c29c1c3..07c89507b13d44dfc7903570e0d8c834e91866b7 100644 +index 298cd49b28b5efb0f6401c19fc083a3714cb9aeb..5750f87944ea84d59674d1df7f5d48121d987a54 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -99,6 +99,13 @@ public class MushroomCow extends AbstractCow implements Shearable { +@@ -100,6 +100,13 @@ public class MushroomCow extends AbstractCow implements Shearable { } // Purpur end - Toggle for water sensitive mob damage @@ -203,10 +203,10 @@ index 114d893f74dfb4422380cad649b7f3708c29c1c3..07c89507b13d44dfc7903570e0d8c834 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index 47429374bee47c98216a0eb6dbe65df5fcc0e117..dcfa57bc691e997969bc9fef1983088322e4e4e4 100644 +index d92af280d85856d57f3031dfaf7c644cbfc18f15..4c20569ec5c504c582575851ab1d74248289b1c0 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java -@@ -102,6 +102,13 @@ public class Ocelot extends Animal { +@@ -103,6 +103,13 @@ public class Ocelot extends Animal { } // Purpur end - Toggle for water sensitive mob damage @@ -221,10 +221,10 @@ index 47429374bee47c98216a0eb6dbe65df5fcc0e117..dcfa57bc691e997969bc9fef19830883 return this.entityData.get(DATA_TRUSTING); } diff --git a/net/minecraft/world/entity/animal/Panda.java b/net/minecraft/world/entity/animal/Panda.java -index 85929b3f4503033d17ec7fd42746c5f071a3fd6f..99d99d59ec0eb13dc40bc88bd70ad884bb9e2859 100644 +index 4678f432b6a8f74bbd121aee41f1b093888946f7..02bfa88568e635770675ea9173f2cf3ca21457fa 100644 --- a/net/minecraft/world/entity/animal/Panda.java +++ b/net/minecraft/world/entity/animal/Panda.java -@@ -155,6 +155,13 @@ public class Panda extends Animal { +@@ -156,6 +156,13 @@ public class Panda extends Animal { } // Purpur end - Toggle for water sensitive mob damage @@ -239,10 +239,10 @@ index 85929b3f4503033d17ec7fd42746c5f071a3fd6f..99d99d59ec0eb13dc40bc88bd70ad884 protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) { return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot(); diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java -index c1d4bcbc3bad5f2fcaecd4007db7318a07a63324..1b8350a09a9f2a708c8cd1b0669828912f1e4214 100644 +index 92f43418e5b21eb2a323a12649a96e0f62764618..dddf3a2e372bd0d483c1da01d36fe59b17b3d4e2 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java -@@ -213,6 +213,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -215,6 +215,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { } // Purpur end - Toggle for water sensitive mob damage @@ -257,10 +257,10 @@ index c1d4bcbc3bad5f2fcaecd4007db7318a07a63324..1b8350a09a9f2a708c8cd1b066982891 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index c2718006f6a47dda0655818181881bcdcfef34dc..5bc370d45fc6e0a37cc77ac1b36e0caad959741c 100644 +index 6f318222011e3bc57c4f0b92c0fba1f410a1d65e..adbbe938c14d14a628d9963acec57c32661957cd 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java -@@ -104,6 +104,13 @@ public class Pig extends Animal implements ItemSteerable { +@@ -105,6 +105,13 @@ public class Pig extends Animal implements ItemSteerable { } // Purpur end - Toggle for water sensitive mob damage @@ -275,10 +275,10 @@ index c2718006f6a47dda0655818181881bcdcfef34dc..5bc370d45fc6e0a37cc77ac1b36e0caa protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java -index f9d34a8242043ba61dcebb669754d9da0480eb13..ab08e5e589dac3341c006876378903f7cf1db25f 100644 +index a800acb671a18287f1407bd293a433f1fe039ce5..e0b51b482607ec5a9f5b4d13d918d79b2f52f9c0 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java -@@ -138,6 +138,13 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -139,6 +139,13 @@ public class PolarBear extends Animal implements NeutralMob { } // Purpur end - Toggle for water sensitive mob damage @@ -293,10 +293,10 @@ index f9d34a8242043ba61dcebb669754d9da0480eb13..ab08e5e589dac3341c006876378903f7 @Override public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { diff --git a/net/minecraft/world/entity/animal/Pufferfish.java b/net/minecraft/world/entity/animal/Pufferfish.java -index 09977f4ce3545f076be26d173f40fc261fe3c515..3b815f3ad9068eb2bdf93eac1c1aff38dffdb850 100644 +index a9219906038a24831b3d1e6851af4225b60616c3..685176ce37538cbbc614401db568acdb0ad264bb 100644 --- a/net/minecraft/world/entity/animal/Pufferfish.java +++ b/net/minecraft/world/entity/animal/Pufferfish.java -@@ -72,6 +72,13 @@ public class Pufferfish extends AbstractFish { +@@ -73,6 +73,13 @@ public class Pufferfish extends AbstractFish { } // Purpur end - Toggle for water sensitive mob damage @@ -311,10 +311,10 @@ index 09977f4ce3545f076be26d173f40fc261fe3c515..3b815f3ad9068eb2bdf93eac1c1aff38 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index de2ffef11b50f3bde03785f6cb13c97c437288e5..38e2698c5084f0c14c7fde5de542ed61a7cb7f1d 100644 +index dcbbe3406cf481e2e1d5c4cc6baaa5ac564b1ad1..1af1b33702296f9aa74c33436ea2904c5e5ae43d 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java -@@ -166,6 +166,13 @@ public class Rabbit extends Animal { +@@ -167,6 +167,13 @@ public class Rabbit extends Animal { } // Purpur end - Toggle for water sensitive mob damage @@ -329,10 +329,10 @@ index de2ffef11b50f3bde03785f6cb13c97c437288e5..38e2698c5084f0c14c7fde5de542ed61 public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Salmon.java b/net/minecraft/world/entity/animal/Salmon.java -index 78f83edd809a72bf5a2f908d8d5e3b1755541a29..25811130990e680174a0e930a6d066ad2d580f60 100644 +index 3c517936aee31fcf246787c033688870a2349e55..d2679beaa3be6de36227c5b66609e0df393c4376 100644 --- a/net/minecraft/world/entity/animal/Salmon.java +++ b/net/minecraft/world/entity/animal/Salmon.java -@@ -64,6 +64,13 @@ public class Salmon extends AbstractSchoolingFish { +@@ -65,6 +65,13 @@ public class Salmon extends AbstractSchoolingFish { } // Purpur end - Toggle for water sensitive mob damage @@ -347,10 +347,10 @@ index 78f83edd809a72bf5a2f908d8d5e3b1755541a29..25811130990e680174a0e930a6d066ad public int getMaxSchoolSize() { return 5; diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index 2af4ba00c9f48d3ab9063eda8abb3d15c1bb0929..ed7492af66a2ad678fe7a19f779ab7c4fb3dd8ae 100644 +index 8917b3d2d75dc1a0ddf1b6dd64267f69506e80dc..8984a4fc0aae9fd72bc3f7222003c7593810ab77 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java -@@ -87,6 +87,13 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -88,6 +88,13 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM } // Purpur end - Configurable entity base attributes @@ -383,10 +383,10 @@ index 2108cbddc9a880347ff36fc4ce8b56e8215b9eac..8371f3892e50150db018f0b265986ffa protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/net/minecraft/world/entity/animal/TropicalFish.java b/net/minecraft/world/entity/animal/TropicalFish.java -index 70afdcbd9d12f323ababde628e1422d1a1b82210..f3c7e8b244eb7ba3d99cc0d29e388bab8e743351 100644 +index 4510798913f94474b16ab6cbfa32dc0fdf0a226a..8d1fa86c6f4881c05f11fa80018b8de7f4920006 100644 --- a/net/minecraft/world/entity/animal/TropicalFish.java +++ b/net/minecraft/world/entity/animal/TropicalFish.java -@@ -102,6 +102,13 @@ public class TropicalFish extends AbstractSchoolingFish { +@@ -103,6 +103,13 @@ public class TropicalFish extends AbstractSchoolingFish { } // Purpur end - Toggle for water sensitive mob damage @@ -401,10 +401,10 @@ index 70afdcbd9d12f323ababde628e1422d1a1b82210..f3c7e8b244eb7ba3d99cc0d29e388bab return "entity.minecraft.tropical_fish.predefined." + variantId; } diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java -index f99c135a1b99a52c72388cdcc6c46933eb7ba75b..c84f63f064a7769761f75cdedaceacde858b9b4e 100644 +index 3c2ded73af16360474fb0410456e94746393ca0e..9bdc1f10e3b40672449ad166f130ecabdacc75d3 100644 --- a/net/minecraft/world/entity/animal/Turtle.java +++ b/net/minecraft/world/entity/animal/Turtle.java -@@ -124,6 +124,13 @@ public class Turtle extends Animal { +@@ -125,6 +125,13 @@ public class Turtle extends Animal { } // Purpur end - Toggle for water sensitive mob damage @@ -419,10 +419,10 @@ index f99c135a1b99a52c72388cdcc6c46933eb7ba75b..c84f63f064a7769761f75cdedaceacde this.homePos = homePos; } diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index da48db578931eb04ba7f2f1fbf26b6fb5bea617a..c5aac98efa518696381b4018b3504ebb323bb6b4 100644 +index f364117decd00f00ae0dc729addb5a35008b6ca5..05070562ee7ea23d4e2fa602466f097827ffa35b 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -159,6 +159,13 @@ public class Axolotl extends Animal implements Bucketable { +@@ -161,6 +161,13 @@ public class Axolotl extends Animal implements Bucketable { } // Purpur end - Toggle for water sensitive mob damage @@ -437,10 +437,10 @@ index da48db578931eb04ba7f2f1fbf26b6fb5bea617a..c5aac98efa518696381b4018b3504ebb public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index 47de7e4710234676358378fb5fa9a6b034662e42..5eb656a33cb6ca8a93125c27cd7db175d35b80c3 100644 +index 952d9f5c2bb2e869df475a78b04be10e7541829e..386591ff45c45146b75d44071f54c2789db15a21 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -145,6 +145,13 @@ public class Goat extends Animal { +@@ -146,6 +146,13 @@ public class Goat extends Animal { } // Purpur end - Toggle for water sensitive mob damage @@ -473,10 +473,10 @@ index 9b17b1acf63fddb5f5b6cdf95283ae8f619a8120..0783d41a6c4622b03d9d368c1af949af public SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java -index 8754c3d6fd06bd2c834fe06e238afa330b24e547..206f911d1184a22f401d217f713495e6e85263be 100644 +index 2928159447a87ea8cc945e73e2e81ad1dbe13680..f1080a40f759b30b921b88b4f6edd35f4795406f 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java -@@ -84,6 +84,13 @@ public class Horse extends AbstractHorse { +@@ -85,6 +85,13 @@ public class Horse extends AbstractHorse { } // Purpur end - Toggle for water sensitive mob damage @@ -491,10 +491,10 @@ index 8754c3d6fd06bd2c834fe06e238afa330b24e547..206f911d1184a22f401d217f713495e6 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index 2e776404e65c5dc6040d00a1ed8b5ce0df7badc0..e300a1284fd98791871ba1780bb7352cd848766a 100644 +index 017482c8818a854b23237e27e3304498d800569d..1bef43f42aee02a0a00556318607072ce9814860 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -160,6 +160,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -161,6 +161,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { } // Purpur end - Toggle for water sensitive mob damage @@ -527,10 +527,10 @@ index 14a17d4b33b276f28e45ce06de06793a73a50916..6e0b1c83a6a03d12296e0e3b2c805b64 public SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index f1a131b9fe4fce78cf34e04eefc886a844a50e72..b02ca00ff18484947aa2f4ff90ab9dda2196a679 100644 +index cff709a28830a842a499f7dfe3b8bc0b703c9af4..f6ab6ecc10486694d77905239a82bda4dec94936 100644 --- a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -@@ -79,6 +79,13 @@ public class SkeletonHorse extends AbstractHorse { +@@ -80,6 +80,13 @@ public class SkeletonHorse extends AbstractHorse { } // Purpur end - Toggle for water sensitive mob damage @@ -545,10 +545,10 @@ index f1a131b9fe4fce78cf34e04eefc886a844a50e72..b02ca00ff18484947aa2f4ff90ab9dda return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/horse/TraderLlama.java b/net/minecraft/world/entity/animal/horse/TraderLlama.java -index 4cd4bfd57285808f4bda7e7dd2ddeda36dd13af0..6c6cc0261123ba6a78c8f509715c738d629de253 100644 +index 81e902ba31b55722f4d257e918b56fa654083916..a8540e491161d82a6b72262e4414f8bb16705d47 100644 --- a/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/net/minecraft/world/entity/animal/horse/TraderLlama.java -@@ -83,6 +83,13 @@ public class TraderLlama extends Llama { +@@ -84,6 +84,13 @@ public class TraderLlama extends Llama { } // Purpur end - Toggle for water sensitive mob damage @@ -581,10 +581,10 @@ index e78fac0a5e37d53afbc200f015adab60b3bfc9da..e59172ea2fafbab673dc3e9bdc25055f return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/sheep/Sheep.java b/net/minecraft/world/entity/animal/sheep/Sheep.java -index 1ecfda9a5222d7c175108edbbff552ea036e0321..c53ab665a0c87d342adbe395c87e15a3f5f49708 100644 +index 8394453415a0d098de6176662f97df2174a83697..500c87f5f7b2eda637103125d6e541f7c9fb385f 100644 --- a/net/minecraft/world/entity/animal/sheep/Sheep.java +++ b/net/minecraft/world/entity/animal/sheep/Sheep.java -@@ -123,6 +123,13 @@ public class Sheep extends Animal implements Shearable { +@@ -101,6 +101,13 @@ public class Sheep extends Animal implements Shearable { } // Purpur end - Toggle for water sensitive mob damage @@ -599,10 +599,10 @@ index 1ecfda9a5222d7c175108edbbff552ea036e0321..c53ab665a0c87d342adbe395c87e15a3 protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java -index 243e848a6f4eaa2a72f02a1f056f20d9de23058f..936ee9e80239ad965be75ceeb38d5248243e9c4e 100644 +index d492c6bcbc45e312a5ee2d3567a26853b514d027..7e7cb9db1c84bdb173b444bec90663a93fb3b549 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java -@@ -231,6 +231,13 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -230,6 +230,13 @@ public class Wolf extends TamableAnimal implements NeutralMob { } // Purpur end - Toggle for water sensitive mob damage @@ -617,10 +617,10 @@ index 243e848a6f4eaa2a72f02a1f056f20d9de23058f..936ee9e80239ad965be75ceeb38d5248 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 5862384e096d0a97a9a92a921f704e441243e38a..bbcb03548052b28bd622d7d8ce161ccaed1ed386 100644 +index d4e4aa98e2259aa7f5dbce1585257a4e24b4782f..0613d80561f50e32dc4d1c471521f001659d017d 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -227,6 +227,13 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -228,6 +228,13 @@ public class WitherBoss extends Monster implements RangedAttackMob { } // Purpur end - Toggle for water sensitive mob damage @@ -671,10 +671,10 @@ index 420fe0d01d0b173a6a541f77e1aaca3f3bb565e7..7eca4b751d900c6d6ee34993c3e23681 public boolean doHurtTarget(ServerLevel level, Entity source) { if (super.doHurtTarget(level, source)) { diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java -index 67f99138834011d12f429cf7ff6fdb7c6bd06262..567e1bc0bb2e96f831206e70612dfe8bcb825b74 100644 +index 7ebce241a4195326bbecd158952f2ec559196ad3..2839c755e5ca58896bc14f95ce4889d48ec415b3 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java -@@ -271,6 +271,13 @@ public class Creeper extends Monster { +@@ -272,6 +272,13 @@ public class Creeper extends Monster { } // Purpur end - Toggle for water sensitive mob damage @@ -689,10 +689,10 @@ index 67f99138834011d12f429cf7ff6fdb7c6bd06262..567e1bc0bb2e96f831206e70612dfe8b public SoundEvent getHurtSound(DamageSource damageSource) { return SoundEvents.CREEPER_HURT; diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java -index 3dae0020a506527e1e556945da5334de54bdabee..b85d1e196d2bf61ac4896205afb08eba89c4397e 100644 +index 6e8ae9aa0b5051b7fb303476e52ba2cc76c29c84..2e6d0f035a01277aa28bbe912d5df8dc4cf04547 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java -@@ -129,6 +129,13 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -130,6 +130,13 @@ public class Drowned extends Zombie implements RangedAttackMob { } // Purpur end - Toggle for water sensitive mob damage @@ -707,7 +707,7 @@ index 3dae0020a506527e1e556945da5334de54bdabee..b85d1e196d2bf61ac4896205afb08eba protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0)); diff --git a/net/minecraft/world/entity/monster/ElderGuardian.java b/net/minecraft/world/entity/monster/ElderGuardian.java -index 27dd75a64af375ce498224bfd7ed4799ed586d9c..a708692a71014aabc1fc842837e1c0a82fd3a343 100644 +index 287b6fea404d4f1f121219f92918dc2d1c0ac780..ab1c050ff326a072e817a05958b8f4ec803af063 100644 --- a/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/net/minecraft/world/entity/monster/ElderGuardian.java @@ -58,6 +58,13 @@ public class ElderGuardian extends Guardian { @@ -725,10 +725,10 @@ index 27dd75a64af375ce498224bfd7ed4799ed586d9c..a708692a71014aabc1fc842837e1c0a8 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0); } diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index 10b505712791d10e9b36cc6cfffeb590c74284e5..46e4440a4e0d6a6ff4fdd56687fe40324641ef49 100644 +index 73d66dffa57b31e4d772438f6d2f23cfbbcfb281..fcdb3ee493e65bf002e78862f00061336e731ede 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -116,6 +116,13 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -114,6 +114,13 @@ public class EnderMan extends Monster implements NeutralMob { } // Purpur end - Configurable entity base attributes @@ -743,10 +743,10 @@ index 10b505712791d10e9b36cc6cfffeb590c74284e5..46e4440a4e0d6a6ff4fdd56687fe4032 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java -index c4bfd0fb0fbee4fa72e4cf17931c95831daaf73f..7d3932dcb263500357e9aad28881229418a0d458 100644 +index 4565a592face29a077d96fc0cd52bceaed52f755..4ea0e5f24664a1c8f2c8bdae559784434374adf6 100644 --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java -@@ -78,6 +78,13 @@ public class Endermite extends Monster { +@@ -79,6 +79,13 @@ public class Endermite extends Monster { } // Purpur end - Toggle for water sensitive mob damage @@ -761,10 +761,10 @@ index c4bfd0fb0fbee4fa72e4cf17931c95831daaf73f..7d3932dcb263500357e9aad288812294 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Evoker.java b/net/minecraft/world/entity/monster/Evoker.java -index e1debcc5d859961a9d9893fa5ffbe67deea35f6d..f32fa187ba6b16f1e8b1f308dc9073f808d52d86 100644 +index d77e3b0f36ec4a262ff375d9e2da912553a344f8..5c1992a7fd5d7c5fe23ebfad35a828263d0ff93c 100644 --- a/net/minecraft/world/entity/monster/Evoker.java +++ b/net/minecraft/world/entity/monster/Evoker.java -@@ -82,6 +82,13 @@ public class Evoker extends SpellcasterIllager { +@@ -80,6 +80,13 @@ public class Evoker extends SpellcasterIllager { } // Purpur end - Toggle for water sensitive mob damage @@ -779,10 +779,10 @@ index e1debcc5d859961a9d9893fa5ffbe67deea35f6d..f32fa187ba6b16f1e8b1f308dc9073f8 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java -index 4864009a9e531d37f9c3747a042d8ea1ed6ccbf7..c2e6e2f4a2c1e72521f0afd1664d9ba02ef08d7d 100644 +index 92a9ce3d7db83a631281a6ac11ccc4441e04efdc..f11b9f5ff3087ee2b53c1614b63f29ef33072f73 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java -@@ -92,6 +92,13 @@ public class Ghast extends FlyingMob implements Enemy { +@@ -101,6 +101,13 @@ public class Ghast extends Mob implements Enemy { } // Purpur end - Toggle for water sensitive mob damage @@ -797,7 +797,7 @@ index 4864009a9e531d37f9c3747a042d8ea1ed6ccbf7..c2e6e2f4a2c1e72521f0afd1664d9ba0 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/Giant.java b/net/minecraft/world/entity/monster/Giant.java -index 009b8a8b1b9aabc0aef1c12a0c0f65f9ccfcd306..3f575abee4c8933d1642400d134b0fc915215a1a 100644 +index ccc2f7906c322a5406467986565074cbddf6cbe0..f4ec41a74b13be98f3ac78521fdd357842bc9ebd 100644 --- a/net/minecraft/world/entity/monster/Giant.java +++ b/net/minecraft/world/entity/monster/Giant.java @@ -69,6 +69,13 @@ public class Giant extends Monster { @@ -812,8 +812,8 @@ index 009b8a8b1b9aabc0aef1c12a0c0f65f9ccfcd306..3f575abee4c8933d1642400d134b0fc9 + // Purpur end - Mobs always drop experience + public static AttributeSupplier.Builder createAttributes() { - return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 100.0).add(Attributes.MOVEMENT_SPEED, 0.5).add(Attributes.ATTACK_DAMAGE, 50.0); - } + return Monster.createMonsterAttributes() + .add(Attributes.MAX_HEALTH, 100.0) diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java index 9868117ecf0a3b36f81086297c639f6f274e0055..3ba8da3bd04774fb3131fdbd2aa0bd6c9f31c817 100644 --- a/net/minecraft/world/entity/monster/Guardian.java @@ -851,7 +851,7 @@ index 3f331215ef49c52fa3a53bcf744159d2221111f5..a4ce65911a5d778f60bcedb3acd9fe59 EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index 553a8f0f5b895f3d8528f10efdc918466e4f4d87..b8ada9ebd0d8d4ca0e8eb7e6084a0057f4758ea4 100644 +index b2e59058c71eb0b05670be8dcddfff073ae2d0db..93eaafe260312f26840a2afee8375b8a95d97ba2 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -91,6 +91,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -887,10 +887,10 @@ index da90b7dc79aa6d01e88c1250fff662ba1b001dc3..7ef0f84d4c449a8991683ca66d7b16ca return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index c2bc638b0029ac46cf388187ca74545060a54914..2e1e7cf0fe1bc25437cf2f429ff33b4263b1a6f1 100644 +index bfd4d7eef537c0d3688159d6db99236d6ed2f810..82fe0c14f22e8492766553a93b24cb506b09afd9 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -158,6 +158,13 @@ public class Phantom extends FlyingMob implements Enemy { +@@ -159,6 +159,13 @@ public class Phantom extends Mob implements Enemy { public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; } // Purpur end - API for any mob to burn daylight @@ -905,10 +905,10 @@ index c2bc638b0029ac46cf388187ca74545060a54914..2e1e7cf0fe1bc25437cf2f429ff33b42 public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Pillager.java b/net/minecraft/world/entity/monster/Pillager.java -index 4c41e7e0a164779bf1d6765fdb750dcd60acd104..3d12b509a9b57f0326ec48eed93b2962f6f0e493 100644 +index faaf42a029b1a0423c5e10ee3e17e4ba0e70be02..2ed473468032bb6edbd03882b5f5405b90a2f0f4 100644 --- a/net/minecraft/world/entity/monster/Pillager.java +++ b/net/minecraft/world/entity/monster/Pillager.java -@@ -95,6 +95,13 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve +@@ -96,6 +96,13 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve } // Purpur end - Toggle for water sensitive mob damage @@ -923,10 +923,10 @@ index 4c41e7e0a164779bf1d6765fdb750dcd60acd104..3d12b509a9b57f0326ec48eed93b2962 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index 0b6550c3abad0eb00af4f303725045a8aa3dc4b1..56b844a8252c7f7ece12db98775230134e1898d6 100644 +index d75df6de50f9830efeea826d0ebdac17f56d4c4b..2b85cedf235e673d6030c2a649abf60b5792b242 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java -@@ -107,6 +107,13 @@ public class Ravager extends Raider { +@@ -108,6 +108,13 @@ public class Ravager extends Raider { } // Purpur end - Toggle for water sensitive mob damage @@ -941,10 +941,10 @@ index 0b6550c3abad0eb00af4f303725045a8aa3dc4b1..56b844a8252c7f7ece12db9877523013 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index c9dab7d6b1afe8749022d99aa988782c75270561..56401c993d9a4c41b0782831a8b857646bf18f88 100644 +index d38c6025833079a435971c66cfbb90486721ca14..768da16864cbb925e4988f3bcfb7dc86a9b1846d 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -141,6 +141,13 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -142,6 +142,13 @@ public class Shulker extends AbstractGolem implements Enemy { } // Purpur end - Toggle for water sensitive mob damage @@ -959,7 +959,7 @@ index c9dab7d6b1afe8749022d99aa988782c75270561..56401c993d9a4c41b0782831a8b85764 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java -index af33bd8c472f7e7bfdab52558bac379166ff2253..a6d6cb3e122488328ff980ed5902caff5490671b 100644 +index 51714029d4ea5033014dcefd25f74cc0c9a72dbd..bcae390578519fef362a126fbcf2b5cfd18c3dc4 100644 --- a/net/minecraft/world/entity/monster/Silverfish.java +++ b/net/minecraft/world/entity/monster/Silverfish.java @@ -73,6 +73,13 @@ public class Silverfish extends Monster { @@ -977,10 +977,10 @@ index af33bd8c472f7e7bfdab52558bac379166ff2253..a6d6cb3e122488328ff980ed5902caff protected void registerGoals() { this.friendsGoal = new Silverfish.SilverfishWakeUpFriendsGoal(this); diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java -index fbf8818e0fd80705648f038647b718ec2a2cd1b6..48cbc3cb983da08cfec78828b15f148459a22b44 100644 +index 555ada78c81ce912bf8d57a9a094102804b372ef..c6ab31fa5204220f4c89dd48dd0966036a4975cf 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -57,6 +57,13 @@ public class Skeleton extends AbstractSkeleton { +@@ -58,6 +58,13 @@ public class Skeleton extends AbstractSkeleton { } // Purpur end - Toggle for water sensitive mob damage @@ -995,10 +995,10 @@ index fbf8818e0fd80705648f038647b718ec2a2cd1b6..48cbc3cb983da08cfec78828b15f1484 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java -index f44e9f04e083d48e4a90d8d8e8b5cc199bf9f351..7b6db084a483b4a9c2f292c5ed6e4c7550344c50 100644 +index 29b500eb4c010ff83d8474f8ee5602c479243e19..b299fc08fe900b4d48ce3e6986bcea000253053e 100644 --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java -@@ -140,6 +140,13 @@ public class Slime extends Mob implements Enemy { +@@ -141,6 +141,13 @@ public class Slime extends Mob implements Enemy { } // Purpur end - Toggle for water sensitive mob damage @@ -1067,10 +1067,10 @@ index 533801988cb4f8a916ef002a179990ca913b2f32..fe31c4a45afd61be8b74efe9d0858ccd EntityType entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index 0808520f39d5ce96baad25180ead7a69922950f5..488e0605e9769d52faffecbc86c28c779d0ff25b 100644 +index 193994476a78d68d2ef45f7a354648ce347b0f55..7502f447610cd43dde465d3dc94d3a9682133a14 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java -@@ -117,6 +117,13 @@ public class Vex extends Monster implements TraceableEntity { +@@ -119,6 +119,13 @@ public class Vex extends Monster implements TraceableEntity { } // Purpur end - Toggle for water sensitive mob damage @@ -1085,10 +1085,10 @@ index 0808520f39d5ce96baad25180ead7a69922950f5..488e0605e9769d52faffecbc86c28c77 public boolean isFlapping() { return this.tickCount % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index 50da0e9246f50be6073e26c8fa042fe2b4eabb32..8ba772d9f5f53dc0dea269c5089e742f20dbc308 100644 +index 9f4d93308adc49d7ae83796a8dc43db16e7992b6..df95c6be4469eeefa248e5ef18cfaba3d4cdeea6 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -88,6 +88,13 @@ public class Vindicator extends AbstractIllager { +@@ -89,6 +89,13 @@ public class Vindicator extends AbstractIllager { } // Purpur end - Toggle for water sensitive mob damage @@ -1139,10 +1139,10 @@ index ef2a7fdc8abe05b7718b71e23556258aba392c75..b3f5b2e3e2cfc378de948c0e186727d5 protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/net/minecraft/world/entity/monster/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java -index 7cb2bc8b126a0027216ec4afd7f6e54fe328b8be..bdf52bfe661d4c0ad6c5a28254302f8f0021c09b 100644 +index ddc8de9a111395aa77025b809f176425be7bb30c..e37c6dcbe62cba2cb7f33ac1792d539f9b07aa24 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java -@@ -118,6 +118,13 @@ public class Zoglin extends Monster implements HoglinBase { +@@ -119,6 +119,13 @@ public class Zoglin extends Monster implements HoglinBase { } // Purpur end - Toggle for water sensitive mob damage @@ -1157,10 +1157,10 @@ index 7cb2bc8b126a0027216ec4afd7f6e54fe328b8be..bdf52bfe661d4c0ad6c5a28254302f8f protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index aed6db357f5b4550407a424a5b83c590044568ee..783f8b9a05939b9f42fc77065f6347e3c6ddf8f5 100644 +index 147c030a2f8fd0d430070a36946fa42af177ea68..ab4dc7b3a7593d255dbd7d1df667fce3504af3ed 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -151,6 +151,13 @@ public class Zombie extends Monster { +@@ -150,6 +150,13 @@ public class Zombie extends Monster { } // Purpur end - Toggle for water sensitive mob damage @@ -1175,10 +1175,10 @@ index aed6db357f5b4550407a424a5b83c590044568ee..783f8b9a05939b9f42fc77065f6347e3 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index c6e460c21af6145321cad527112adc15e9f30d8d..ae5939c940bdd93977fa882360fc31e46479554f 100644 +index 606fe4bd9c3359e42a025a866873e147ee16a40e..e218e5d5f146ec996a6f5ce7e76b1d6506ac1cb9 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -130,6 +130,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -129,6 +129,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } // Purpur end - Toggle for water sensitive mob damage @@ -1193,10 +1193,10 @@ index c6e460c21af6145321cad527112adc15e9f30d8d..ae5939c940bdd93977fa882360fc31e4 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 34e259b95abfc514e07584a699ecc80de0014250..39489c8a347031fb4f73faca46039786e35762ac 100644 +index 7406f1f589509769aed260197f7cfabc081ce37b..f58c48d9de85fda3d13079f3e56b31af75b3c725 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -112,6 +112,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -113,6 +113,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { } // Purpur end - Toggle for water sensitive mob damage @@ -1211,10 +1211,10 @@ index 34e259b95abfc514e07584a699ecc80de0014250..39489c8a347031fb4f73faca46039786 public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index ee2cd8bfb74dead58f77f9755f306aa7166285fd..252a6469cab202bcc612b4d52a5027c615029a21 100644 +index ddb7532d83b46dae22798937e097a8876fcd6106..994f6e5cb0960d43de00d9ef6d25e81107e0774a 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -134,6 +134,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -135,6 +135,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Toggle for water sensitive mob damage @@ -1229,10 +1229,10 @@ index ee2cd8bfb74dead58f77f9755f306aa7166285fd..252a6469cab202bcc612b4d52a5027c6 public void setTimeInOverworld(int timeInOverworld) { this.timeInOverworld = timeInOverworld; diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index 0059e926f09317e056f3f722c4ca775c43bc0b86..54ab9593b39051d47f1dd8bddf210064768382be 100644 +index 76d572959b3422d1691e34fec3bbeb8d5b50d715..c48044ff1fd5b587935d11747d93598d0bc0c7a3 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -168,6 +168,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -169,6 +169,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento } // Purpur end - Toggle for water sensitive mob damage @@ -1244,8 +1244,8 @@ index 0059e926f09317e056f3f722c4ca775c43bc0b86..54ab9593b39051d47f1dd8bddf210064 + // Purpur end - Mobs always drop experience + @Override - public void addAdditionalSaveData(CompoundTag compound) { - super.addAdditionalSaveData(compound); + protected void addAdditionalSaveData(ValueOutput output) { + super.addAdditionalSaveData(output); diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java index f4893cc54d7f144025da0057beedb3a974c80dc1..70ee15527fa6f30783d6a58bb767b18124f25c53 100644 --- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java @@ -1265,10 +1265,10 @@ index f4893cc54d7f144025da0057beedb3a974c80dc1..70ee15527fa6f30783d6a58bb767b181 return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 654935f2994c588c8545c21d6de839711c55cdfc..5b52bbac242a7fbb8eaea7e41b7265a1a859ff7c 100644 +index 6490b3791648f0680d44d6ca1e0d3b67df180997..baf72d0e5701cd234752988284e7fefba4c56380 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -288,6 +288,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -289,6 +289,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end - Toggle for water sensitive mob damage @@ -1283,10 +1283,10 @@ index 654935f2994c588c8545c21d6de839711c55cdfc..5b52bbac242a7fbb8eaea7e41b7265a1 public Brain getBrain() { return (Brain)super.getBrain(); diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 7ad6a8479a0bdda570ac286220eacd0ba8642111..776e4d001bc6e6d419eb4392dc85bf4594e57058 100644 +index f2b59a4490226168dd69ace94022cf6398d48615..dc6b30518270486cf3b2eaab4db13a507917f37d 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -104,6 +104,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -105,6 +105,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill } // Purpur end - Toggle for water sensitive mob damage From 9f6cbee8e0fb9a4c49b38978ddd80e216ee9ae94 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 1 Jun 2025 17:27:04 -0700 Subject: [PATCH 115/289] it compiles \o/ --- .../features/0001-Ridables.patch | 94 ++++++++++--------- ...-Configurable-entity-base-attributes.patch | 14 +-- ...ed-to-crystals-and-crystals-shoot-ph.patch | 8 +- .../0011-Phantoms-burn-in-light.patch | 8 +- ...e-entity-breeding-times-configurable.patch | 18 ++++ ...oggle-for-water-sensitive-mob-damage.patch | 10 +- ...018-API-for-any-mob-to-burn-daylight.patch | 14 +-- .../0020-Mobs-always-drop-experience.patch | 10 +- .../server/level/ServerPlayer.java.patch | 4 +- .../ServerGamePacketListenerImpl.java.patch | 6 +- .../minecraft/world/entity/Entity.java.patch | 10 +- .../world/level/block/SpawnerBlock.java.patch | 15 ++- .../level/block/entity/BlockEntity.java.patch | 2 +- .../block/entity/SignBlockEntity.java.patch | 29 +++--- .../craftbukkit/block/CraftBeehive.java.patch | 4 +- .../purpur/entity/PurpurStoredBee.java | 27 ++++-- 16 files changed, 160 insertions(+), 113 deletions(-) diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 4703d4bed..110d08b7a 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -42,7 +42,7 @@ index e4c88e1f99e684fadec47eeceb82420c879897cf..44a8629ec03c01597c7167c26d801c01 @Override public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 14a7b040e9f5609a0e08783b60a767618a192de7..0c489a6d3357ed0d3dc9341440b87623d007da3f 100644 +index 565f54a7e37b9303cb23db09881751b364cdf5c4..38f92b36533c5f9694ca689a88f3f42a977d003a 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -761,6 +761,15 @@ public class ServerPlayer extends Player { @@ -62,7 +62,7 @@ index 14a7b040e9f5609a0e08783b60a767618a192de7..0c489a6d3357ed0d3dc9341440b87623 private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7cdb4d46bb0ebdece3cdbe0dc2c156fe211da0d0..58be234e80a0c55642ba66a5001bac784c420a95 100644 +index 55e74b04ed0576923b8acfdf833e6c999d5a7b6c..900d59620d309258b3b883ccd8cb086f26db0c11 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2773,6 +2773,8 @@ public class ServerGamePacketListenerImpl @@ -75,10 +75,10 @@ index 7cdb4d46bb0ebdece3cdbe0dc2c156fe211da0d0..58be234e80a0c55642ba66a5001bac78 if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index fe1b49288dabc8aecfcae151b40fa76d633fc8c2..bce2b06cd7c0b9928a6538ddcd370f2c4d84a9ae 100644 +index efeee8849237270ad7c8cd0577dcefed34b82299..7e9e0e9cd0a12af66d937859885da5c0f619af22 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -3069,6 +3069,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3065,6 +3065,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -92,7 +92,7 @@ index fe1b49288dabc8aecfcae151b40fa76d633fc8c2..bce2b06cd7c0b9928a6538ddcd370f2c this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3110,6 +3117,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3106,6 +3113,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -107,7 +107,7 @@ index fe1b49288dabc8aecfcae151b40fa76d633fc8c2..bce2b06cd7c0b9928a6538ddcd370f2c if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5079,4 +5094,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5075,4 +5090,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -177,7 +177,7 @@ index f0c452ddc4b299a930de261722cc41a89aa78eeb..8e8ddab59de508c84c4182e105a11554 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 65cb0a0cfa3d75e4d1083b7e6b22ca1b2682dc49..e78d30d8fdfcb1a530bf3380251fabd0c9a18f46 100644 +index 96e47e6145a4cce8c154a05f9b155c1ba74bfa6a..d272f5e789cb6c03ede0bece14fc3fe976a02ff3 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -238,9 +238,9 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -3483,10 +3483,10 @@ index 7efa39ab1fb34da41a04cd6816f2571c6eba98f5..10142de6bdf9474958ca939c956a4282 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/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java -index bbdff8b4043f27045684a2aa5687e2b7ca7afbb5..c7ac650f9618fd124035f9cf01fffada7efc97e1 100644 +index bbdff8b4043f27045684a2aa5687e2b7ca7afbb5..e09004313c7c8333eba38bbfab09b20bdb646034 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java -@@ -52,11 +52,47 @@ public class Ghast extends Mob implements Enemy { +@@ -52,11 +52,35 @@ public class Ghast extends Mob implements Enemy { this.moveControl = new Ghast.GhastMoveControl(this, false, () -> false); } @@ -3510,18 +3510,6 @@ index bbdff8b4043f27045684a2aa5687e2b7ca7afbb5..c7ac650f9618fd124035f9cf01fffada + public double getMaxY() { + return level().purpurConfig.ghastMaxY; + } -+ -+ @Override -+ public void travel(Vec3 vec3) { -+ super.travel(vec3); -+ if (getRider() != null && this.isControllable() && !onGround) { -+ float speed = (float) getAttributeValue(Attributes.FLYING_SPEED); -+ setSpeed(speed); -+ Vec3 mot = getDeltaMovement(); -+ move(net.minecraft.world.entity.MoverType.SELF, mot.multiply(speed, 1.0, speed)); -+ setDeltaMovement(mot.scale(0.9D)); -+ } -+ } + // Purpur end - Ridables + @Override @@ -3534,7 +3522,23 @@ index bbdff8b4043f27045684a2aa5687e2b7ca7afbb5..c7ac650f9618fd124035f9cf01fffada this.targetSelector .addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (entity, level) -> Math.abs(entity.getY() - this.getY()) <= 4.0)); } -@@ -236,7 +272,7 @@ public class Ghast extends Mob implements Enemy { +@@ -106,6 +130,15 @@ public class Ghast extends Mob implements Enemy { + @Override + public void travel(Vec3 travelVector) { + this.travelFlying(travelVector, 0.02F); ++ // Purpur start - Ridables ++ if (getRider() != null && this.isControllable() && !onGround) { ++ float speed = (float) getAttributeValue(Attributes.FLYING_SPEED); ++ setSpeed(speed); ++ Vec3 mot = getDeltaMovement(); ++ move(net.minecraft.world.entity.MoverType.SELF, mot.multiply(speed, 1.0, speed)); ++ setDeltaMovement(mot.scale(0.9D)); ++ } ++ // Purpur end - Ridables + } + + @Override +@@ -236,7 +269,7 @@ public class Ghast extends Mob implements Enemy { } } @@ -3543,7 +3547,7 @@ index bbdff8b4043f27045684a2aa5687e2b7ca7afbb5..c7ac650f9618fd124035f9cf01fffada private final Mob ghast; private int floatDuration; private final boolean careful; -@@ -250,7 +286,7 @@ public class Ghast extends Mob implements Enemy { +@@ -250,7 +283,7 @@ public class Ghast extends Mob implements Enemy { } @Override @@ -3791,10 +3795,10 @@ index 889c31cc9257fbbd5df8325ccee9ce39b026ec4b..4a1299d6cee2807522de0c2d0d4745c5 @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 2abb55d84507fd29817760cb0068dd083f7f1c37..99194cf1fa89d3112719ead9f7de260ca5b9b676 100644 +index 2abb55d84507fd29817760cb0068dd083f7f1c37..855ec37a7e4110e37823ecf62f67f5cb3714f4bf 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -62,6 +62,64 @@ public class Phantom extends Mob implements Enemy { +@@ -62,6 +62,52 @@ public class Phantom extends Mob implements Enemy { this.lookControl = new Phantom.PhantomLookControl(this); } @@ -3819,18 +3823,6 @@ index 2abb55d84507fd29817760cb0068dd083f7f1c37..99194cf1fa89d3112719ead9f7de260c + return level().purpurConfig.phantomMaxY; + } + -+ @Override -+ public void travel(Vec3 vec3) { -+ super.travel(vec3); -+ if (getRider() != null && this.isControllable() && !onGround) { -+ float speed = (float) getAttributeValue(Attributes.FLYING_SPEED); -+ setSpeed(speed); -+ Vec3 mot = getDeltaMovement(); -+ move(net.minecraft.world.entity.MoverType.SELF, mot.multiply(speed, speed, speed)); -+ setDeltaMovement(mot.scale(0.9D)); -+ } -+ } -+ + public static net.minecraft.world.entity.ai.attributes.AttributeSupplier.Builder createAttributes() { + return Monster.createMonsterAttributes().add(Attributes.FLYING_SPEED, 3.0D); + } @@ -3859,7 +3851,7 @@ index 2abb55d84507fd29817760cb0068dd083f7f1c37..99194cf1fa89d3112719ead9f7de260c @Override public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; -@@ -74,9 +132,11 @@ public class Phantom extends Mob implements Enemy { +@@ -74,9 +120,11 @@ public class Phantom extends Mob implements Enemy { @Override protected void registerGoals() { @@ -3871,7 +3863,7 @@ index 2abb55d84507fd29817760cb0068dd083f7f1c37..99194cf1fa89d3112719ead9f7de260c this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal()); } -@@ -92,6 +152,7 @@ public class Phantom extends Mob implements Enemy { +@@ -92,6 +140,7 @@ public class Phantom extends Mob implements Enemy { private void updatePhantomSizeInfo() { this.refreshDimensions(); @@ -3879,7 +3871,7 @@ index 2abb55d84507fd29817760cb0068dd083f7f1c37..99194cf1fa89d3112719ead9f7de260c this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(6 + this.getPhantomSize()); } -@@ -149,6 +210,7 @@ public class Phantom extends Mob implements Enemy { +@@ -149,6 +198,7 @@ public class Phantom extends Mob implements Enemy { @Override public void aiStep() { if (this.isAlive() && this.shouldBurnInDay && this.isSunBurnTick()) { // Paper - shouldBurnInDay API @@ -3887,7 +3879,23 @@ index 2abb55d84507fd29817760cb0068dd083f7f1c37..99194cf1fa89d3112719ead9f7de260c this.igniteForSeconds(8.0F); } -@@ -419,25 +481,42 @@ public class Phantom extends Mob implements Enemy { +@@ -167,6 +217,15 @@ public class Phantom extends Mob implements Enemy { + @Override + public void travel(Vec3 travelVector) { + this.travelFlying(travelVector, 0.2F); ++ // Purpur start - Ridables ++ if (this.getRider() != null && this.isControllable() && !this.onGround) { ++ float speed = (float) this.getAttributeValue(Attributes.FLYING_SPEED); ++ this.setSpeed(speed); ++ Vec3 mot = this.getDeltaMovement(); ++ this.move(net.minecraft.world.entity.MoverType.SELF, mot.multiply(speed, speed, speed)); ++ this.setDeltaMovement(mot.scale(0.9D)); ++ } ++ // Purpur end - Ridables + } + + @Override +@@ -419,25 +478,42 @@ public class Phantom extends Mob implements Enemy { } } @@ -4029,7 +4037,7 @@ index 2b9a72b8742bf13c69df5ce0c905d47a92b9d8bc..b67ac487ce4a7fd8b2f62452ab0b87f4 this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.0); } else { diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index aaa95836e7d767ab6d162ff227f8a82a41255304..e0c70493e771b50885b0263ff07e8ee594c2dfdc 100644 +index b45145051f936bb08941be1b3cd2790f73102352..7b04bf19ee575b9199cb65f0eb3f412a05acac08 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java @@ -110,12 +110,31 @@ public class Shulker extends AbstractGolem implements Enemy { @@ -5046,7 +5054,7 @@ index 93ed977260f369677028bbd8396862f344dfeaa3..e5d6d8bd30876832e6219969849e8260 if (this.level().purpurConfig.wanderingTraderAllowTrading) { // Purpur - Add config for villager trading this.setTradingPlayer(player); diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index aba0104c4953ef514118ee8af76d029100081fc4..c421cc7dc6c401a19eaf193abd970f21e910f927 100644 +index cc29c094f81f16e6b4d74877e31fabd4a0e62435..65d981d26c729d63aa9bad1bbe90cef35207e832 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -239,6 +239,19 @@ public abstract class Player extends LivingEntity { diff --git a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch index c732be65e..9292fb8a4 100644 --- a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch +++ b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch @@ -23,7 +23,7 @@ index 8e8ddab59de508c84c4182e105a11554387dcce0..1896f91e10a5e17332836d5354813a18 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index e78d30d8fdfcb1a530bf3380251fabd0c9a18f46..ae0c2f41c522656bde37d4f31699ee6172b5a79d 100644 +index d272f5e789cb6c03ede0bece14fc3fe976a02ff3..41b6b18130d89b3c3c31bbb2d184fa735a8cd99c 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -291,6 +291,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -1107,10 +1107,10 @@ index 10142de6bdf9474958ca939c956a428218ee48db..e8aac93cffa3a9d4105c03c1aeb4d571 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java -index c7ac650f9618fd124035f9cf01fffada7efc97e1..5e2ae3ada994b5fa7758a61cdf1c0e9f26c23a79 100644 +index e09004313c7c8333eba38bbfab09b20bdb646034..06333fe18ea71464d35584592f487c6ac572f0cd 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java -@@ -86,6 +86,14 @@ public class Ghast extends Mob implements Enemy { +@@ -74,6 +74,14 @@ public class Ghast extends Mob implements Enemy { } // Purpur end - Ridables @@ -1243,10 +1243,10 @@ index 4a1299d6cee2807522de0c2d0d4745c5810e4121..bb1364c4a220cc93f7ac01cbaa617561 return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 99194cf1fa89d3112719ead9f7de260ca5b9b676..96ef89704122485948a526bcc323379474ac9343 100644 +index 855ec37a7e4110e37823ecf62f67f5cb3714f4bf..e35d1e91c1300d8f7d14a5cfa54c404c9f21184d 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -153,7 +153,10 @@ public class Phantom extends Mob implements Enemy { +@@ -141,7 +141,10 @@ public class Phantom extends Mob implements Enemy { private void updatePhantomSizeInfo() { this.refreshDimensions(); if (level().purpurConfig.phantomFlamesOnSwoop && attackPhase == AttackPhase.SWOOP) shoot(); // Purpur - Ridables - Phantom flames on swoop @@ -1258,7 +1258,7 @@ index 99194cf1fa89d3112719ead9f7de260ca5b9b676..96ef89704122485948a526bcc3233794 } public int getPhantomSize() { -@@ -178,6 +181,23 @@ public class Phantom extends Mob implements Enemy { +@@ -166,6 +169,23 @@ public class Phantom extends Mob implements Enemy { return true; } @@ -1321,7 +1321,7 @@ index b67ac487ce4a7fd8b2f62452ab0b87f4a55006f2..9e7b07f353fb8f0650b8805014c37136 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index e0c70493e771b50885b0263ff07e8ee594c2dfdc..069dacf455e597a4cb2efae03553479cac2a5fec 100644 +index 7b04bf19ee575b9199cb65f0eb3f412a05acac08..66f26ecce4f9d74c1b008b09c0eaf4b6ef4a177a 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java @@ -127,6 +127,14 @@ public class Shulker extends AbstractGolem implements Enemy { diff --git a/purpur-server/minecraft-patches/features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/purpur-server/minecraft-patches/features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 0045fa085..33e025049 100644 --- a/purpur-server/minecraft-patches/features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/purpur-server/minecraft-patches/features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -72,7 +72,7 @@ index 5bff703ae4f95091620dec5347246d7c0cbe5d5e..220a828717e1933a44c5282b56713ba0 @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 96ef89704122485948a526bcc323379474ac9343..f9f6199f5b64733be69e9e8dbdb3cd26700d822b 100644 +index e35d1e91c1300d8f7d14a5cfa54c404c9f21184d..1d7432bcce99c893a1f6e4a02d0cad65c0d6d3a4 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -49,6 +49,7 @@ public class Phantom extends Mob implements Enemy { @@ -83,7 +83,7 @@ index 96ef89704122485948a526bcc323379474ac9343..f9f6199f5b64733be69e9e8dbdb3cd26 // Paper start @Nullable public java.util.UUID spawningEntity; -@@ -120,6 +121,25 @@ public class Phantom extends Mob implements Enemy { +@@ -108,6 +109,25 @@ public class Phantom extends Mob implements Enemy { } // Purpur end - Ridables @@ -109,7 +109,7 @@ index 96ef89704122485948a526bcc323379474ac9343..f9f6199f5b64733be69e9e8dbdb3cd26 @Override public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; -@@ -133,9 +153,15 @@ public class Phantom extends Mob implements Enemy { +@@ -121,9 +141,15 @@ public class Phantom extends Mob implements Enemy { @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables @@ -128,7 +128,7 @@ index 96ef89704122485948a526bcc323379474ac9343..f9f6199f5b64733be69e9e8dbdb3cd26 this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal()); } -@@ -517,6 +543,124 @@ public class Phantom extends Mob implements Enemy { +@@ -514,6 +540,124 @@ public class Phantom extends Mob implements Enemy { } } diff --git a/purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch b/purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch index 79cdba713..aa5a25007 100644 --- a/purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch +++ b/purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms burn in light diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index f9f6199f5b64733be69e9e8dbdb3cd26700d822b..f0351975340dec2b2bd51670f193baf44a62ae16 100644 +index 1d7432bcce99c893a1f6e4a02d0cad65c0d6d3a4..5b2018019f6ec9e91357d46dd66865e2f232507a 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -55,6 +55,7 @@ public class Phantom extends Mob implements Enemy { @@ -16,7 +16,7 @@ index f9f6199f5b64733be69e9e8dbdb3cd26700d822b..f0351975340dec2b2bd51670f193baf4 public Phantom(EntityType entityType, Level level) { super(entityType, level); -@@ -255,7 +256,11 @@ public class Phantom extends Mob implements Enemy { +@@ -243,7 +244,11 @@ public class Phantom extends Mob implements Enemy { @Override public void aiStep() { @@ -29,7 +29,7 @@ index f9f6199f5b64733be69e9e8dbdb3cd26700d822b..f0351975340dec2b2bd51670f193baf4 if (getRider() == null || !this.isControllable()) // Purpur - Ridables this.igniteForSeconds(8.0F); } -@@ -378,6 +383,7 @@ public class Phantom extends Mob implements Enemy { +@@ -375,6 +380,7 @@ public class Phantom extends Mob implements Enemy { List nearbyPlayers = serverLevel.getNearbyPlayers( this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0, 64.0, 16.0) ); @@ -37,7 +37,7 @@ index f9f6199f5b64733be69e9e8dbdb3cd26700d822b..f0351975340dec2b2bd51670f193baf4 if (!nearbyPlayers.isEmpty()) { nearbyPlayers.sort(Comparator.comparing(Entity::getY).reversed()); -@@ -747,6 +753,12 @@ public class Phantom extends Mob implements Enemy { +@@ -744,6 +750,12 @@ public class Phantom extends Mob implements Enemy { return false; } else if (!target.isAlive()) { return false; diff --git a/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch b/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch index 136aa01b4..134cb2219 100644 --- a/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch +++ b/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch @@ -149,6 +149,24 @@ index 869a0154c81593db8933f9daa6a7d3a9d02facc5..37b6bfa8dc1fd4ed0006f6531d2056bc this.animal.resetLove(); this.partner.resetLove(); serverLevel.addFreshEntityWithPassengers(fox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason +diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java +index 8e998a2b35e38dbc74edbaa007f66e98e5486647..74bca6719c0bb1a4cabe058eeff6f8dc73632628 100644 +--- a/net/minecraft/world/entity/animal/HappyGhast.java ++++ b/net/minecraft/world/entity/animal/HappyGhast.java +@@ -120,6 +120,13 @@ public class HappyGhast extends Animal { + this.removeAllGoals(goal -> true); + } + ++ // Purpur start - Make entity breeding times configurable ++ @Override ++ public int getPurpurBreedTime() { ++ return 6000; ++ } ++ // Purpur end - Make entity breeding times configurable ++ + @Override + protected void ageBoundaryReached() { + if (this.isBaby()) { diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java index 8cfbe37df24647c3f0a2d64bcc3451de1402c86f..3e4cb7680e6082ebab95e2b8307eedb0d3fcfbcd 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java diff --git a/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch b/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch index 3b1ee9b98..043ba8941 100644 --- a/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch +++ b/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch @@ -809,10 +809,10 @@ index 4d1d746e39d136243dc620c89b29daf80dc62230..d77e3b0f36ec4a262ff375d9e2da9125 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java -index 5e2ae3ada994b5fa7758a61cdf1c0e9f26c23a79..92a9ce3d7db83a631281a6ac11ccc4441e04efdc 100644 +index 06333fe18ea71464d35584592f487c6ac572f0cd..07ea4f44d9fd32d5be5aae6c36b30806acc9db64 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java -@@ -94,6 +94,13 @@ public class Ghast extends Mob implements Enemy { +@@ -82,6 +82,13 @@ public class Ghast extends Mob implements Enemy { } // Purpur end - Configurable entity base attributes @@ -917,10 +917,10 @@ index bb1364c4a220cc93f7ac01cbaa617561de4cd2e3..da90b7dc79aa6d01e88c1250fff662ba return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index f0351975340dec2b2bd51670f193baf44a62ae16..3e66363e0677d98b5c406fbaac2d4eaa533c6eb2 100644 +index 5b2018019f6ec9e91357d46dd66865e2f232507a..67dc738faef3ab414bf791692090aaea3dbe7385 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -141,6 +141,13 @@ public class Phantom extends Mob implements Enemy { +@@ -129,6 +129,13 @@ public class Phantom extends Mob implements Enemy { } // Purpur end - Phantoms attracted to crystals and crystals shoot phantoms @@ -971,7 +971,7 @@ index 23b6d3c9746e1ee641d8b19ec50805cb271a9cc9..d75df6de50f9830efeea826d0ebdac17 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index 069dacf455e597a4cb2efae03553479cac2a5fec..d38c6025833079a435971c66cfbb90486721ca14 100644 +index 66f26ecce4f9d74c1b008b09c0eaf4b6ef4a177a..decadd1844e197400e4130c2d4f8ef8622cfd7f6 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java @@ -135,6 +135,13 @@ public class Shulker extends AbstractGolem implements Enemy { diff --git a/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch index 452e113f5..37cd11243 100644 --- a/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0018-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/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index bce2b06cd7c0b9928a6538ddcd370f2c4d84a9ae..5a6db2d02204cf98de02c30b63666692ed03c000 100644 +index 7e9e0e9cd0a12af66d937859885da5c0f619af22..0fb1267063476bb510ff236800132b535c29a50c 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -435,6 +435,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -35,7 +35,7 @@ index bce2b06cd7c0b9928a6538ddcd370f2c4d84a9ae..5a6db2d02204cf98de02c30b63666692 this.type = entityType; this.level = level; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index a70fddd19b24bb25edde63e4fda4685ee6997eba..eabee40979ab8a1611b2d4eff04414f303b672f1 100644 +index 70808e9f092953a3edf7001b318c91228844f73c..98096df5f83196a6fee8d26637a1816807952f3f 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -286,6 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -207,7 +207,7 @@ index 9baec22561093d64157d93449e84c23b3f238b39..3f331215ef49c52fa3a53bcf744159d2 @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 3e66363e0677d98b5c406fbaac2d4eaa533c6eb2..bfd4d7eef537c0d3688159d6db99236d6ed2f810 100644 +index 67dc738faef3ab414bf791692090aaea3dbe7385..2c7f11e165ea9f59dca6de559c7bcba39977cb19 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -62,6 +62,7 @@ public class Phantom extends Mob implements Enemy { @@ -218,7 +218,7 @@ index 3e66363e0677d98b5c406fbaac2d4eaa533c6eb2..bfd4d7eef537c0d3688159d6db99236d } // Purpur start - Ridables -@@ -148,6 +149,16 @@ public class Phantom extends Mob implements Enemy { +@@ -136,6 +137,16 @@ public class Phantom extends Mob implements Enemy { } // Purpur end - Toggle for water sensitive mob damage @@ -235,7 +235,7 @@ index 3e66363e0677d98b5c406fbaac2d4eaa533c6eb2..bfd4d7eef537c0d3688159d6db99236d @Override public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; -@@ -263,15 +274,7 @@ public class Phantom extends Mob implements Enemy { +@@ -251,15 +262,7 @@ public class Phantom extends Mob implements Enemy { @Override public void aiStep() { @@ -252,7 +252,7 @@ index 3e66363e0677d98b5c406fbaac2d4eaa533c6eb2..bfd4d7eef537c0d3688159d6db99236d super.aiStep(); } -@@ -309,7 +312,7 @@ public class Phantom extends Mob implements Enemy { +@@ -306,7 +309,7 @@ public class Phantom extends Mob implements Enemy { this.setPhantomSize(input.getIntOr("size", 0)); // Paper start this.spawningEntity = input.read("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC).orElse(null); @@ -261,7 +261,7 @@ index 3e66363e0677d98b5c406fbaac2d4eaa533c6eb2..bfd4d7eef537c0d3688159d6db99236d // Paper end } -@@ -320,7 +323,7 @@ public class Phantom extends Mob implements Enemy { +@@ -317,7 +320,7 @@ public class Phantom extends Mob implements Enemy { output.putInt("size", this.getPhantomSize()); // Paper start output.storeNullable("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC, this.spawningEntity); diff --git a/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch index 59641be0f..732676310 100644 --- a/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch +++ b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch @@ -779,10 +779,10 @@ index d77e3b0f36ec4a262ff375d9e2da912553a344f8..5c1992a7fd5d7c5fe23ebfad35a82826 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java -index 92a9ce3d7db83a631281a6ac11ccc4441e04efdc..f11b9f5ff3087ee2b53c1614b63f29ef33072f73 100644 +index 07ea4f44d9fd32d5be5aae6c36b30806acc9db64..6f312f0b8ab60c839129ea671f2d9c128fa58e58 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java -@@ -101,6 +101,13 @@ public class Ghast extends Mob implements Enemy { +@@ -89,6 +89,13 @@ public class Ghast extends Mob implements Enemy { } // Purpur end - Toggle for water sensitive mob damage @@ -887,10 +887,10 @@ index da90b7dc79aa6d01e88c1250fff662ba1b001dc3..7ef0f84d4c449a8991683ca66d7b16ca return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index bfd4d7eef537c0d3688159d6db99236d6ed2f810..82fe0c14f22e8492766553a93b24cb506b09afd9 100644 +index 2c7f11e165ea9f59dca6de559c7bcba39977cb19..3b812e0860e37d30d5d12f97410ed5fd2babadf6 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -159,6 +159,13 @@ public class Phantom extends Mob implements Enemy { +@@ -147,6 +147,13 @@ public class Phantom extends Mob implements Enemy { public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; } // Purpur end - API for any mob to burn daylight @@ -941,7 +941,7 @@ index d75df6de50f9830efeea826d0ebdac17f56d4c4b..2b85cedf235e673d6030c2a649abf60b protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index d38c6025833079a435971c66cfbb90486721ca14..768da16864cbb925e4988f3bcfb7dc86a9b1846d 100644 +index decadd1844e197400e4130c2d4f8ef8622cfd7f6..2ace8aebd050e43582524c4a659132fef0e05be4 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java @@ -142,6 +142,13 @@ public class Shulker extends AbstractGolem implements Enemy { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index 1b2a563b5..b100b40ed 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -210,8 +210,8 @@ + } + + @Override -+ public boolean canBeCollidedWith() { -+ return !this.isAfk() && super.canBeCollidedWith(); ++ public boolean canBeCollidedWith(Entity entity) { ++ return !this.isAfk() && super.canBeCollidedWith(entity); + } + // Purpur end - AFK API diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index 841cc134f..4e3a6149c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -179,8 +179,8 @@ } + // Purpur start - Dont run with scissors! -+ if (this.player.serverLevel().purpurConfig.dontRunWithScissors && this.player.isSprinting() && !(this.player.serverLevel().purpurConfig.ignoreScissorsInWater && this.player.isInWater()) && !(this.player.serverLevel().purpurConfig.ignoreScissorsInLava && this.player.isInLava()) && (isScissors(this.player.getItemInHand(InteractionHand.MAIN_HAND)) || isScissors(this.player.getItemInHand(InteractionHand.OFF_HAND))) && (int) (Math.random() * 10) == 0) { -+ this.player.hurtServer(this.player.serverLevel(), this.player.damageSources().scissors(), (float) this.player.serverLevel().purpurConfig.scissorsRunningDamage); ++ if (this.player.level().purpurConfig.dontRunWithScissors && this.player.isSprinting() && !(this.player.level().purpurConfig.ignoreScissorsInWater && this.player.isInWater()) && !(this.player.level().purpurConfig.ignoreScissorsInLava && this.player.isInLava()) && (isScissors(this.player.getItemInHand(InteractionHand.MAIN_HAND)) || isScissors(this.player.getItemInHand(InteractionHand.OFF_HAND))) && (int) (Math.random() * 10) == 0) { ++ this.player.hurtServer(this.player.level(), this.player.damageSources().scissors(), (float) this.player.level().purpurConfig.scissorsRunningDamage); + if (!org.purpurmc.purpur.PurpurConfig.dontRunWithScissors.isBlank()) this.player.sendActionBarMessage(org.purpurmc.purpur.PurpurConfig.dontRunWithScissors); + } + // Purpur end - Dont run with scissors! @@ -197,7 +197,7 @@ + if (!stack.is(Items.SHEARS)) return false; + + ResourceLocation itemModelReference = stack.get(net.minecraft.core.component.DataComponents.ITEM_MODEL); -+ if (itemModelReference != null && itemModelReference.equals(this.player.serverLevel().purpurConfig.dontRunWithScissorsItemModelReference)) return true; ++ if (itemModelReference != null && itemModelReference.equals(this.player.level().purpurConfig.dontRunWithScissorsItemModelReference)) return true; + + return stack.getOrDefault(DataComponents.CUSTOM_MODEL_DATA, net.minecraft.world.item.component.CustomModelData.EMPTY).equals(net.minecraft.world.item.component.CustomModelData.EMPTY); + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index c474ef13e..1927d54c1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -81,7 +81,7 @@ return this.isInWater() || flag; } -- void updateInWaterStateAndDoWaterCurrentPushing() { +- public void updateInWaterStateAndDoWaterCurrentPushing() { + public void updateInWaterStateAndDoWaterCurrentPushing() { // Purpur - Movement options for armor stands - package-private -> public - TODO: use AT file if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { this.wasTouchingWater = false; @@ -98,16 +98,12 @@ } catch (Throwable var7) { CrashReport crashReport = CrashReport.forThrowable(var7, "Saving entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being saved"); -@@ -2557,6 +_,13 @@ +@@ -2557,6 +_,9 @@ } freezeLocked = input.getBooleanOr("Paper.FreezeLock", false); // Paper end + -+ // Purpur start - Fire immune API -+ if (input.contains("Purpur.FireImmune")) { -+ immuneToFire = input.getBoolean("Purpur.FireImmune").orElse(null); -+ } -+ // Purpur end - Fire immune API ++ immuneToFire = input.read("Purpur.FireImmune", com.mojang.serialization.Codec.BOOL).orElse(null); // Purpur - Fire immune API + } catch (Throwable var7) { CrashReport crashReport = CrashReport.forThrowable(var7, "Loading entity NBT"); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch index 9c1015ed7..0b505b086 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch @@ -1,6 +1,14 @@ --- a/net/minecraft/world/level/block/SpawnerBlock.java +++ b/net/minecraft/world/level/block/SpawnerBlock.java -@@ -38,6 +_,59 @@ +@@ -14,6 +_,7 @@ + import net.minecraft.world.level.block.state.BlockState; + + public class SpawnerBlock extends BaseEntityBlock { ++ private static final org.slf4j.Logger LOGGER = com.mojang.logging.LogUtils.getLogger(); + public static final MapCodec CODEC = simpleCodec(SpawnerBlock::new); + + @Override +@@ -38,6 +_,62 @@ ); } @@ -13,7 +21,10 @@ + 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()); ++ try (net.minecraft.util.ProblemReporter.ScopedCollector scopedCollector = new net.minecraft.util.ProblemReporter.ScopedCollector(blockEntity.problemPath(), LOGGER)) { ++ net.minecraft.world.level.storage.ValueInput valueInput = net.minecraft.world.level.storage.TagValueInput.create(scopedCollector, player.level().registryAccess(), nextSpawnData.entityToSpawn()); ++ type = net.minecraft.world.entity.EntityType.by(valueInput); ++ } + net.minecraft.nbt.CompoundTag spawnDataTag = new net.minecraft.nbt.CompoundTag(); + spawnDataTag.storeNullable("SpawnData", net.minecraft.world.level.SpawnData.CODEC, nextSpawnData); + item.set(net.minecraft.core.component.DataComponents.CUSTOM_DATA, net.minecraft.world.item.component.CustomData.EMPTY.update(compoundTag -> compoundTag.put("Purpur.SpawnData", spawnDataTag))); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch index e06155335..d33824d55 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch @@ -6,7 +6,7 @@ // Paper end - read persistent data container + + -+ this.persistentLore = tag.read("Purpur.persistentLore", net.minecraft.world.item.component.ItemLore.CODEC).orElse(null); // Purpur - Persistent BlockEntity Lore and DisplayName ++ this.persistentLore = input.read("Purpur.persistentLore", net.minecraft.world.item.component.ItemLore.CODEC).orElse(null); // Purpur - Persistent BlockEntity Lore and DisplayName + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch index 940a560fc..427ad45ec 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch @@ -35,26 +35,29 @@ ); } } -@@ -306,6 +_,24 @@ +@@ -306,6 +_,27 @@ // CraftBukkit - this return new CommandSourceStack(commandSource, Vec3.atCenterOf(pos), Vec2.ZERO, level, 2, string, component, level.getServer(), player); // Paper - Fix commands from signs not firing command events } + + // Purpur start - Signs allow color codes + public ClientboundBlockEntityDataPacket getTranslatedUpdatePacket(boolean filtered, boolean front) { -+ final CompoundTag nbt = new CompoundTag(); -+ this.saveAdditional(nbt, this.getLevel().registryAccess()); -+ final Component[] lines = front ? frontText.getMessages(filtered) : backText.getMessages(filtered); -+ final String side = front ? "front_text" : "back_text"; -+ for (int i = 0; i < 4; i++) { -+ final var component = io.papermc.paper.adventure.PaperAdventure.asAdventure(lines[i]); -+ final String line = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacyAmpersand().serialize(component); -+ final CompoundTag sideNbt = nbt.getCompoundOrEmpty(side); -+ final net.minecraft.nbt.ListTag messagesNbt = sideNbt.getListOrEmpty("messages"); -+ messagesNbt.set(i, net.minecraft.nbt.StringTag.valueOf(line)); ++ try (net.minecraft.util.ProblemReporter.ScopedCollector scopedCollector = new net.minecraft.util.ProblemReporter.ScopedCollector(this.problemPath(), LOGGER)) { ++ net.minecraft.world.level.storage.TagValueOutput tagValueOutput = net.minecraft.world.level.storage.TagValueOutput.createWithContext(scopedCollector, this.getLevel().registryAccess()); ++ this.saveAdditional(tagValueOutput); ++ ++ final Component[] lines = front ? frontText.getMessages(filtered) : backText.getMessages(filtered); ++ final String side = front ? "front_text" : "back_text"; ++ for (int i = 0; i < 4; i++) { ++ final net.kyori.adventure.text.Component component = io.papermc.paper.adventure.PaperAdventure.asAdventure(lines[i]); ++ final String line = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacyAmpersand().serialize(component); ++ net.minecraft.world.level.storage.ValueOutput sideNbt = tagValueOutput.child(side); ++ net.minecraft.world.level.storage.ValueOutput.TypedOutputList messagesNbt = sideNbt.list("messages", com.mojang.serialization.Codec.STRING); ++ messagesNbt.add(line); ++ } ++ tagValueOutput.putString("PurpurEditor", "true"); ++ return ClientboundBlockEntityDataPacket.create(this, (blockEntity, registryAccess) -> tagValueOutput.buildResult()); + } -+ nbt.putString("PurpurEditor", "true"); -+ return ClientboundBlockEntityDataPacket.create(this, (blockEntity, registryAccess) -> nbt); + } + // Purpur end - Signs allow color codes diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch index e8bb09a96..b2fe7e396 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java.patch @@ -10,7 +10,7 @@ super(world, blockEntity); + // Purpur start - load bees to be able to modify them individually - Stored Bee API + for(BeehiveBlockEntity.BeeData data : blockEntity.getStored()) { -+ storage.add(new org.purpurmc.purpur.entity.PurpurStoredBee(data, this)); ++ storage.add(new org.purpurmc.purpur.entity.PurpurStoredBee(data, this, blockEntity)); + } + // Purpur end - Stored Bee API } @@ -65,7 +65,7 @@ + // Purpur start - check if new bee was added, and if yes, add to stored bees - Stored Bee API + List storedBeeData = this.getSnapshot().getStored(); + if(length < storedBeeData.size()) { -+ storage.add(new org.purpurmc.purpur.entity.PurpurStoredBee(storedBeeData.getLast(), this)); ++ storage.add(new org.purpurmc.purpur.entity.PurpurStoredBee(storedBeeData.getLast(), this, this.getBlockEntity())); + } + // Purpur end - Stored Bee API } diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java b/purpur-server/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java index 1cd79edbe..cdaa50276 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java @@ -1,23 +1,29 @@ package org.purpurmc.purpur.entity; +import com.mojang.logging.LogUtils; import io.papermc.paper.adventure.PaperAdventure; import net.kyori.adventure.text.Component; import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.ProblemReporter; import net.minecraft.world.level.block.entity.BeehiveBlockEntity; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.storage.TagValueInput; +import net.minecraft.world.level.storage.ValueInput; import org.bukkit.block.EntityBlockStorage; -import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer; import org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry; +import org.bukkit.craftbukkit.util.CraftChatMessage; import org.bukkit.entity.Bee; import org.bukkit.entity.EntityType; import org.bukkit.persistence.PersistentDataContainer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - +import org.slf4j.Logger; import java.util.Locale; public class PurpurStoredBee implements StoredEntity { + static final Logger LOGGER = LogUtils.getLogger(); + private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry(); private final EntityBlockStorage blockStorage; @@ -26,16 +32,21 @@ public class PurpurStoredBee implements StoredEntity { private Component customName; - public PurpurStoredBee(BeehiveBlockEntity.BeeData data, EntityBlockStorage blockStorage) { + public PurpurStoredBee(BeehiveBlockEntity.BeeData data, EntityBlockStorage blockStorage, final BeehiveBlockEntity blockEntity) { this.handle = data; this.blockStorage = blockStorage; CompoundTag customData = handle.occupant.entityData().copyTag(); - net.minecraft.network.chat.Component customNameMinecraft = BlockEntity.parseCustomNameSafe(customData.get("CustomName"), ((CraftWorld) blockStorage.getWorld()).getHandle().registryAccess()); - this.customName = customNameMinecraft == null ? null : PaperAdventure.asAdventure(customNameMinecraft); - if (customData.get("BukkitValues") instanceof CompoundTag compoundTag) { - this.persistentDataContainer.putAll(compoundTag); + try (ProblemReporter.ScopedCollector scopedCollector = new ProblemReporter.ScopedCollector(blockEntity.problemPath(), LOGGER)) { + ValueInput valueInput = TagValueInput.create(scopedCollector, blockEntity.getLevel().registryAccess(), customData); + + net.minecraft.network.chat.Component customNameMinecraft = BlockEntity.parseCustomNameSafe(valueInput, "CustomName"); + this.customName = customNameMinecraft == null ? null : PaperAdventure.asAdventure(customNameMinecraft); + + if (customData.get("BukkitValues") instanceof CompoundTag compoundTag) { + this.persistentDataContainer.putAll(compoundTag); + } } } @@ -98,7 +109,7 @@ public class PurpurStoredBee implements StoredEntity { if(customName == null) { handle.occupant.entityData().copyTag().remove("CustomName"); } else { - handle.occupant.entityData().copyTag().putString("CustomName", net.minecraft.network.chat.Component.Serializer.toJson(PaperAdventure.asVanilla(customName), ((CraftWorld) blockStorage.getWorld()).getHandle().registryAccess())); + handle.occupant.entityData().copyTag().putString("CustomName", CraftChatMessage.toJSON(PaperAdventure.asVanilla(customName))); } } } From 99c1ff6999d9ad39c6c94d2a99e98e7785df4954 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 1 Jun 2025 18:43:16 -0700 Subject: [PATCH 116/289] use AT for setting method as public --- .../sources/net/minecraft/world/entity/Entity.java.patch | 9 --------- 1 file changed, 9 deletions(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 1927d54c1..4c6ce5ffc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -77,15 +77,6 @@ } public boolean causeFallDamage(double fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -1816,7 +_,7 @@ - return this.isInWater() || flag; - } - -- public void updateInWaterStateAndDoWaterCurrentPushing() { -+ public void updateInWaterStateAndDoWaterCurrentPushing() { // Purpur - Movement options for armor stands - package-private -> public - TODO: use AT file - if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { - this.wasTouchingWater = false; - } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) { @@ -2437,6 +_,11 @@ output.putBoolean("Paper.FreezeLock", true); } From bd773d449d9eab65dbc970f38ca194ca031e3d4c Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 1 Jun 2025 19:00:13 -0700 Subject: [PATCH 117/289] fix color codes in sign preview --- .../world/level/block/entity/SignBlockEntity.java.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch index 427ad45ec..d9530e11b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch @@ -48,11 +48,11 @@ + + final Component[] lines = front ? frontText.getMessages(filtered) : backText.getMessages(filtered); + final String side = front ? "front_text" : "back_text"; ++ net.minecraft.world.level.storage.ValueOutput sideNbt = tagValueOutput.child(side); ++ net.minecraft.world.level.storage.ValueOutput.TypedOutputList messagesNbt = sideNbt.list("messages", com.mojang.serialization.Codec.STRING); + for (int i = 0; i < 4; i++) { + final net.kyori.adventure.text.Component component = io.papermc.paper.adventure.PaperAdventure.asAdventure(lines[i]); + final String line = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacyAmpersand().serialize(component); -+ net.minecraft.world.level.storage.ValueOutput sideNbt = tagValueOutput.child(side); -+ net.minecraft.world.level.storage.ValueOutput.TypedOutputList messagesNbt = sideNbt.list("messages", com.mojang.serialization.Codec.STRING); + messagesNbt.add(line); + } + tagValueOutput.putString("PurpurEditor", "true"); From 1505068927a3c2e25faebcc8f6f907e17409cc84 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 1 Jun 2025 19:34:17 -0700 Subject: [PATCH 118/289] add happy ghast config options --- .../features/0001-Ridables.patch | 20 ++++++++++- ...-Configurable-entity-base-attributes.patch | 33 +++++++++++++++++++ ...e-entity-breeding-times-configurable.patch | 6 ++-- .../purpurmc/purpur/PurpurWorldConfig.java | 23 +++++++++++++ 4 files changed, 78 insertions(+), 4 deletions(-) diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 110d08b7a..47a650dd5 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -75,7 +75,7 @@ index 55e74b04ed0576923b8acfdf833e6c999d5a7b6c..900d59620d309258b3b883ccd8cb086f if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index efeee8849237270ad7c8cd0577dcefed34b82299..7e9e0e9cd0a12af66d937859885da5c0f619af22 100644 +index b2bcdaa27b5b8dcca60da185fa331fcf2d711665..be21e55bb0e3e4ce0a93d20ba5eb80e342c3d29e 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -3065,6 +3065,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -1076,6 +1076,24 @@ index 354c7a41407fc6518965d09bfe3089676b6da794..a81ada76bfd6c4b49d1552f48e2009bc } } } +diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java +index 8e998a2b35e38dbc74edbaa007f66e98e5486647..3154ba3c1786a607a9f6511288051889632764bf 100644 +--- a/net/minecraft/world/entity/animal/HappyGhast.java ++++ b/net/minecraft/world/entity/animal/HappyGhast.java +@@ -120,6 +120,13 @@ public class HappyGhast extends Animal { + this.removeAllGoals(goal -> true); + } + ++ // Purpur start - Ridables ++ @Override ++ public boolean dismountsUnderwater() { ++ return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.happyGhastRidableInWater; ++ } ++ // Purpur end - Ridables ++ + @Override + protected void ageBoundaryReached() { + if (this.isBaby()) { diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java index 25e0438e1a98dc5f6aaabba8af2295cec871d6f1..d7c330e77c384bba800829bdbe07f6b66695896e 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java diff --git a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch index 9292fb8a4..39587a943 100644 --- a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch +++ b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch @@ -201,6 +201,39 @@ index a81ada76bfd6c4b49d1552f48e2009bc7d8c71d2..869a0154c81593db8933f9daa6a7d3a9 @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); +diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java +index 3154ba3c1786a607a9f6511288051889632764bf..801fc7e1a6ec56a6cde5b787daebe3c8c008cc93 100644 +--- a/net/minecraft/world/entity/animal/HappyGhast.java ++++ b/net/minecraft/world/entity/animal/HappyGhast.java +@@ -127,6 +127,19 @@ public class HappyGhast extends Animal { + } + // Purpur end - Ridables + ++ // Purpur start - Configurable entity base attributes ++ @Override ++ public void initAttributes() { ++ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.happyGhastMaxHealth); ++ this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.happyGhastScale); ++ this.getAttribute(Attributes.TEMPT_RANGE).setBaseValue(this.level().purpurConfig.happyGhastTemptRange); ++ this.getAttribute(Attributes.FLYING_SPEED).setBaseValue(this.level().purpurConfig.happyGhastFlyingSpeed); ++ this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(this.level().purpurConfig.happyGhastMovementSpeed); ++ this.getAttribute(Attributes.FOLLOW_RANGE).setBaseValue(this.level().purpurConfig.happyGhastFollowRange); ++ this.getAttribute(Attributes.CAMERA_DISTANCE).setBaseValue(this.level().purpurConfig.happyGhastCameraDistance); ++ } ++ // Purpur end - Configurable entity base attributes ++ + @Override + protected void ageBoundaryReached() { + if (this.isBaby()) { +@@ -150,7 +163,7 @@ public class HappyGhast extends Animal { + + @Override + protected float sanitizeScale(float scale) { +- return Math.min(scale, 1.0F); ++ return Math.min(scale, 1.0F); // Purpur - Configurable entity base attributes + } + + @Override diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java index d7c330e77c384bba800829bdbe07f6b66695896e..1cb7e0985a59e83f118d4656e94a79f4d81836ff 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java diff --git a/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch b/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch index 134cb2219..ba379b430 100644 --- a/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch +++ b/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch @@ -150,12 +150,12 @@ index 869a0154c81593db8933f9daa6a7d3a9d02facc5..37b6bfa8dc1fd4ed0006f6531d2056bc this.partner.resetLove(); serverLevel.addFreshEntityWithPassengers(fox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index 8e998a2b35e38dbc74edbaa007f66e98e5486647..74bca6719c0bb1a4cabe058eeff6f8dc73632628 100644 +index 801fc7e1a6ec56a6cde5b787daebe3c8c008cc93..50a64a312cb6af0f39117993553b66de1f095150 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java -@@ -120,6 +120,13 @@ public class HappyGhast extends Animal { - this.removeAllGoals(goal -> true); +@@ -140,6 +140,13 @@ public class HappyGhast extends Animal { } + // Purpur end - Configurable entity base attributes + // Purpur start - Make entity breeding times configurable + @Override diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 31cc4e6e6..611847bd7 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1972,6 +1972,29 @@ public class PurpurWorldConfig { chanceHeadHalloweenOnEntity = (float) getDouble("gameplay-mechanics.halloween.head-chance", chanceHeadHalloweenOnEntity); } + public boolean happyGhastRidableInWater = false; + public double happyGhastMaxHealth = 20.0D; + public double happyGhastTemptRange = 16.0D; + public double happyGhastFlyingSpeed = 0.05D; + public double happyGhastMovementSpeed = 0.05D; + public double happyGhastFollowRange = 16.0D; + public double happyGhastCameraDistance = 8.0D; + public double happyGhastScale = 1.0D; + public boolean happyGhastTakeDamageFromWater = false; + public boolean happyGhastAlwaysDropExp = false; + private void happyGhastSettings() { + happyGhastRidableInWater = getBoolean("mobs.happy_ghast.ridable-in-water", happyGhastRidableInWater); + happyGhastMaxHealth = getDouble("mobs.happy_ghast.attributes.max_health", happyGhastMaxHealth); + happyGhastTemptRange = getDouble("mobs.happy_ghast.attributes.tempt_range", happyGhastTemptRange); + happyGhastFlyingSpeed = getDouble("mobs.happy_ghast.attributes.flying_speed", happyGhastFlyingSpeed); + happyGhastMovementSpeed = getDouble("mobs.happy_ghast.attributes.movement_speed", happyGhastMovementSpeed); + happyGhastFollowRange = getDouble("mobs.happy_ghast.attributes.follow_range", happyGhastFollowRange); + happyGhastCameraDistance = getDouble("mobs.happy_ghast.attributes.camera_distance", happyGhastCameraDistance); + happyGhastScale = Mth.clamp(getDouble("mobs.happy_ghast.attributes.scale", happyGhastScale), 0.0625D, 1.0D); + happyGhastTakeDamageFromWater = getBoolean("mobs.happy_ghast.takes-damage-from-water", happyGhastTakeDamageFromWater); + happyGhastAlwaysDropExp = getBoolean("mobs.happy_ghast.always-drop-exp", happyGhastAlwaysDropExp); + } + public boolean hoglinRidable = false; public boolean hoglinRidableInWater = true; public boolean hoglinControllable = true; From 2a46cfc53033b892aea11fa724ed2121bcaa7e88 Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 3 Jun 2025 22:14:04 -0700 Subject: [PATCH 119/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@20e9fe8e Fix javadocs in DriedGhast PaperMC/Paper@1366eaa5 Readd dropped hunk PaperMC/Paper@4b6fae10 1.21.6-pre2 PaperMC/Paper@5cfd6383 Fix compile issues PaperMC/Paper@18924de7 run generator PaperMC/Paper@fbc139e0 some fixes PaperMC/Paper@0c3879ac track block for lava/conduit damage PaperMC/Paper@767e99c9 Moonrise attempt PaperMC/Paper@b15c51ce Rest of feature patches PaperMC/Paper@c136222e Moonrise compile fixes and changes PaperMC/Paper@52880cec Fix LayeredCauldronBlock event call PaperMC/Paper@4fa21c21 Update Moonrise to 1.21.6-pre2 PaperMC/Paper@cb705c41 Add DataConverter patch PaperMC/Paper@87b3d8ba Replace deprecated Thread#getId usage with Thread#threadId PaperMC/Paper@5b362692 Add MCUtil#toLocation from Folia PaperMC/Paper@b2f3c2c9 Move over to non discarding reporter PaperMC/Paper@4c4ddfcc Update ItemType --- gradle.properties | 4 +- .../features/0001-Ridables.patch | 30 +++++++-------- .../0003-Barrels-and-enderchests-6-rows.patch | 6 +-- ...-Minecart-settings-and-WASD-controls.patch | 4 +- ...018-API-for-any-mob-to-burn-daylight.patch | 4 +- .../server/MinecraftServer.java.patch | 18 ++++----- .../server/level/ServerLevel.java.patch | 28 +++++++------- .../server/level/ServerPlayer.java.patch | 30 +++++++-------- .../server/level/WorldGenRegion.java.patch | 2 +- .../ServerGamePacketListenerImpl.java.patch | 26 ++++++------- .../server/players/PlayerList.java.patch | 8 ++-- .../minecraft/world/entity/Entity.java.patch | 38 +++++++++---------- .../entity/ai/behavior/AcquirePoi.java.patch | 16 ++++---- .../ai/sensing/NearestBedSensor.java.patch | 19 ++++------ .../minecraft/world/item/ItemStack.java.patch | 2 +- .../world/item/crafting/Ingredient.java.patch | 6 +-- .../world/level/EntityGetter.java.patch | 2 +- .../minecraft/world/level/Level.java.patch | 8 ++-- .../world/level/NaturalSpawner.java.patch | 2 +- .../world/level/ServerExplosion.java.patch | 8 +++- .../level/block/entity/BlockEntity.java.patch | 6 +-- .../entity/ConduitBlockEntity.java.patch | 4 +- .../chunk/storage/EntityStorage.java.patch | 6 +-- .../storage/RegionFileStorage.java.patch | 2 +- .../level/material/FlowingFluid.java.patch | 4 +- .../features/0002-Ridables.patch | 6 +-- ...0004-Add-EntityTeleportHinderedEvent.patch | 6 +-- ...005-API-for-any-mob-to-burn-daylight.patch | 4 +- .../craftbukkit/entity/CraftEntity.java.patch | 2 +- .../util/CraftMagicNumbers.java.patch | 2 +- .../org/spigotmc/WatchdogThread.java.patch | 4 +- 31 files changed, 154 insertions(+), 153 deletions(-) diff --git a/gradle.properties b/gradle.properties index c49321757..aef1c99ca 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT -mcVersion = 1.21.6-pre1 -paperCommit = ff05a2df6313f422f22c7f640294641a59559250 +mcVersion = 1.21.6-pre2 +paperCommit = 4c4ddfcce5e83504e9de0d1418ed09f561b93f58 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 47a650dd5..acdcc6b37 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -18,34 +18,34 @@ index 61ab8b508d2b614d0f05ae4cc23dc214f8e95a1d..d6e8bd3b302f821b286b15db3d66c8b2 public boolean isClientAuthoritative() { return false; diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 096ee3a095468a7d0577f9adc7a9bf7cccc4727d..cf3d17009faee82e659b2ca6cabfae70abf96b8a 100644 +index 67f988ab10e060e5b6f558d30f43ddf7dc332699..c6e5eb1bac6164a1323cf39fa215096d58fe2f1f 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1635,6 +1635,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - BlockPhysicsEvent +@@ -1745,6 +1745,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent serverLevel.updateLagCompensationTick(); // Paper - lag compensation + net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers + serverLevel.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur - Ridables profilerFiller.push(() -> serverLevel + " " + serverLevel.dimension().location()); /* Drop global time updates if (this.tickCount % 20 == 0) { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index e4c88e1f99e684fadec47eeceb82420c879897cf..44a8629ec03c01597c7167c26d801c015157c242 100644 +index 83eff33884bffddfafc85eeb4a2900104a396e2e..3c7159d0981c948e71a5612ba4083accb5849ed4 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -215,6 +215,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - public final java.util.UUID uuid; +@@ -216,6 +216,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe 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) + public boolean hasRidableMoveEvent = false; // Purpur - Ridables @Override public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 565f54a7e37b9303cb23db09881751b364cdf5c4..38f92b36533c5f9694ca689a88f3f42a977d003a 100644 +index cb8b23e04d9315c733856a2e2956cfbf5860d516..1ac6488820c569e84c5666ce58223b321dab7a39 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -761,6 +761,15 @@ public class ServerPlayer extends Player { +@@ -797,6 +797,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.trackEnteredOrExitedLavaOnVehicle(); this.updatePlayerAttributes(); this.advancements.flushDirty(this, true); @@ -62,10 +62,10 @@ index 565f54a7e37b9303cb23db09881751b364cdf5c4..38f92b36533c5f9694ca689a88f3f42a private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 55e74b04ed0576923b8acfdf833e6c999d5a7b6c..900d59620d309258b3b883ccd8cb086f26db0c11 100644 +index 014557e343d3ede351b3a2b950bb803d7e771490..628b1a5ac93d7cd1be8175aab88d2f5e29b60257 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2773,6 +2773,8 @@ public class ServerGamePacketListenerImpl +@@ -2844,6 +2844,8 @@ public class ServerGamePacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -75,10 +75,10 @@ index 55e74b04ed0576923b8acfdf833e6c999d5a7b6c..900d59620d309258b3b883ccd8cb086f if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index b2bcdaa27b5b8dcca60da185fa331fcf2d711665..be21e55bb0e3e4ce0a93d20ba5eb80e342c3d29e 100644 +index 5351e368233d2bca5fe8568cb97c09e49293fb70..d4f9a29cfbb59d557eef790ca07575187c99854b 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -3065,6 +3065,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3302,6 +3302,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -92,7 +92,7 @@ index b2bcdaa27b5b8dcca60da185fa331fcf2d711665..be21e55bb0e3e4ce0a93d20ba5eb80e3 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3106,6 +3113,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3343,6 +3350,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -107,7 +107,7 @@ index b2bcdaa27b5b8dcca60da185fa331fcf2d711665..be21e55bb0e3e4ce0a93d20ba5eb80e3 if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5075,4 +5090,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5388,4 +5403,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -1077,7 +1077,7 @@ index 354c7a41407fc6518965d09bfe3089676b6da794..a81ada76bfd6c4b49d1552f48e2009bc } } diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index 8e998a2b35e38dbc74edbaa007f66e98e5486647..3154ba3c1786a607a9f6511288051889632764bf 100644 +index 210b35ce4abe22d79c13c9c6dbd7114a723f66ee..e0491ba54d93f85359e11fdbc66775d11bcec7ac 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java @@ -120,6 +120,13 @@ public class HappyGhast extends Animal { diff --git a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch index c8acefc2e..be7a4921b 100644 --- a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch +++ b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 7a247b713ceb3a513de1f91cdda1d30a32845d13..f9f3deed9f892ece5568a6ede9955c8e19937b60 100644 +index 5e8db3d74d4e2bd6e28042de67dde38b26768fc4..9e76257c195e46ef60a742144109a3947229cb6e 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -1040,6 +1040,27 @@ public abstract class PlayerList { +@@ -1041,6 +1041,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API @@ -37,7 +37,7 @@ index 7a247b713ceb3a513de1f91cdda1d30a32845d13..f9f3deed9f892ece5568a6ede9955c8e public boolean isWhiteListed(GameProfile profile) { diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index c421cc7dc6c401a19eaf193abd970f21e910f927..acb53dba83fe9481508fa4d4704203a08f575450 100644 +index 65d981d26c729d63aa9bad1bbe90cef35207e832..97b104679bb2b9e466caa10d7b022ee6d597e7e5 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -221,6 +221,7 @@ public abstract class Player extends LivingEntity { diff --git a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch index 9c035117e..b98b25d8b 100644 --- a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch +++ b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 0c489a6d3357ed0d3dc9341440b87623d007da3f..ed63c0cc2750485ab4d53c242fec94c1a66e9dbe 100644 +index 1ac6488820c569e84c5666ce58223b321dab7a39..853d54a28a348492372eb38b50b155a6644129e4 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -1170,6 +1170,11 @@ public class ServerPlayer extends Player { +@@ -1206,6 +1206,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc } else { // Purpur start - Add boat fall damage config if (damageSource.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) { diff --git a/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch index 37cd11243..85ed6f5d2 100644 --- a/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0018-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/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 7e9e0e9cd0a12af66d937859885da5c0f619af22..0fb1267063476bb510ff236800132b535c29a50c 100644 +index d4f9a29cfbb59d557eef790ca07575187c99854b..068ce6f155abf3bda758f2bcdb4377836c610945 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -435,6 +435,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -542,6 +542,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Purpur end - Add canSaveToDisk to Entity diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch index b0dd7735b..c6efe0f37 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch @@ -25,8 +25,8 @@ + protected boolean upnp = false; // Purpur - UPnP Port Forwarding public static S spin(Function threadFunction) { - AtomicReference atomicReference = new AtomicReference<>(); -@@ -918,6 +_,15 @@ + ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system +@@ -995,6 +_,15 @@ LOGGER.info("Stopping server"); Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing @@ -42,7 +42,7 @@ // CraftBukkit start if (this.server != null) { this.server.spark.disable(); // Paper - spark -@@ -1012,6 +_,8 @@ +@@ -1093,6 +_,8 @@ this.safeShutdown(waitForServer, false); } public void safeShutdown(boolean waitForServer, boolean isRestarting) { @@ -51,7 +51,7 @@ this.isRestarting = isRestarting; this.hasLoggedStop = true; // Paper - Debugging if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging -@@ -1031,6 +_,7 @@ +@@ -1112,6 +_,7 @@ private static final long MAX_CATCHUP_BUFFER = TICK_TIME * TPS * 60L; private long lastTick = 0; private long catchupTime = 0; @@ -59,7 +59,7 @@ public final RollingAverage tps1 = new RollingAverage(60); public final RollingAverage tps5 = new RollingAverage(60 * 5); public final RollingAverage tps15 = new RollingAverage(60 * 15); -@@ -1116,6 +_,16 @@ +@@ -1197,6 +_,16 @@ } // Paper end - Add onboarding message for initial server start @@ -76,7 +76,7 @@ while (this.running) { long l; if (!this.isPaused() && this.tickRateManager.isSprinting() && this.tickRateManager.checkShouldSprintThisTick()) { -@@ -1140,14 +_,19 @@ +@@ -1221,14 +_,19 @@ if (++MinecraftServer.currentTick % MinecraftServer.SAMPLE_INTERVAL == 0) { final long diff = currentTime - tickSection; final java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP); @@ -99,7 +99,7 @@ tickSection = currentTime; } // Paper end - further improve server tick loop -@@ -1172,6 +_,12 @@ +@@ -1260,6 +_,12 @@ profilerFiller.popPush("nextTickWait"); this.mayHaveDelayedTasks = true; this.delayedTasksMaxNextTickTimeNanos = Math.max(Util.getNanos() + l, this.nextTickTimeNanos); @@ -112,7 +112,7 @@ this.startMeasuringTaskExecutionTime(); this.waitUntilNextTick(); this.finishMeasuringTaskExecutionTime(); -@@ -1581,7 +_,7 @@ +@@ -1690,7 +_,7 @@ long worldTime = level.getGameTime(); final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight); for (Player entityhuman : level.players()) { @@ -121,7 +121,7 @@ continue; } ServerPlayer entityplayer = (ServerPlayer) entityhuman; -@@ -1745,7 +_,7 @@ +@@ -1855,7 +_,7 @@ @DontObfuscate public String getServerModName() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch index 60beb270d..5626a7245 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch @@ -9,7 +9,7 @@ private final RandomSequences randomSequences; // CraftBukkit start -@@ -353,7 +_,24 @@ +@@ -590,7 +_,24 @@ // CraftBukkit end this.tickTime = tickTime; this.server = server; @@ -35,15 +35,15 @@ this.serverLevelData = serverLevelData; ChunkGenerator chunkGenerator = levelStem.generator(); // CraftBukkit start -@@ -435,6 +_,7 @@ - this.randomSequences = Objects.requireNonNullElseGet(randomSequences, () -> this.getDataStorage().computeIfAbsent(RandomSequences.TYPE)); - this.waypointManager = new ServerWaypointManager(); +@@ -675,6 +_,7 @@ + this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler); + // Paper end - rewrite chunk system this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit + this.preciseTime = this.serverLevelData.getDayTime(); // Purpur - Configurable daylight cycle } // Paper start -@@ -481,7 +_,7 @@ +@@ -721,7 +_,7 @@ } int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); @@ -52,7 +52,7 @@ // Paper start - create time skip event - move up calculations final long newDayTime = this.levelData.getDayTime() + 24000L; org.bukkit.event.world.TimeSkipEvent event = new org.bukkit.event.world.TimeSkipEvent( -@@ -598,6 +_,13 @@ +@@ -840,6 +_,13 @@ this.serverLevelData.getScheduledEvents().tick(this.server, l); Profiler.get().pop(); if (this.serverLevelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { @@ -66,7 +66,7 @@ this.setDayTime(this.levelData.getDayTime() + 1L); } } -@@ -605,7 +_,21 @@ +@@ -847,7 +_,21 @@ public void setDayTime(long time) { this.serverLevelData.setDayTime(time); @@ -89,7 +89,7 @@ public void tickCustomSpawners(boolean spawnEnemies, boolean spawnFriendlies) { for (CustomSpawner customSpawner : this.customSpawners) { -@@ -682,9 +_,17 @@ +@@ -951,9 +_,17 @@ && this.random.nextDouble() < currentDifficultyAt.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01) // Paper - Configurable spawn chances for skeleton horses && !this.getBlockState(blockPos.below()).is(Blocks.LIGHTNING_ROD); if (flag) { @@ -109,7 +109,7 @@ skeletonHorse.setAge(0); skeletonHorse.setPos(blockPos.getX(), blockPos.getY(), blockPos.getZ()); this.addFreshEntity(skeletonHorse, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit -@@ -719,9 +_,35 @@ +@@ -988,9 +_,35 @@ if (blockState.is(Blocks.SNOW)) { int layersValue = blockState.getValue(SnowLayerBlock.LAYERS); if (layersValue < Math.min(_int, 8)) { @@ -145,7 +145,7 @@ } } else { org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(this, heightmapPos, Blocks.SNOW.defaultBlockState(), 3, null); // CraftBukkit -@@ -742,7 +_,7 @@ +@@ -1011,7 +_,7 @@ pointOfInterestType -> pointOfInterestType.is(PoiTypes.LIGHTNING_ROD), blockPos -> blockPos.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockPos.getX(), blockPos.getZ()) - 1, pos, @@ -154,7 +154,7 @@ PoiManager.Occupancy.ANY ); return optional.map(blockPos -> blockPos.above(1)); -@@ -791,8 +_,26 @@ +@@ -1060,8 +_,26 @@ int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); Component component; if (this.sleepStatus.areEnoughSleeping(_int)) { @@ -181,7 +181,7 @@ component = Component.translatable("sleep.players_sleeping", this.sleepStatus.amountSleeping(), this.sleepStatus.sleepersNeeded(_int)); } -@@ -929,6 +_,7 @@ +@@ -1198,6 +_,7 @@ @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -189,7 +189,7 @@ 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.... -@@ -936,6 +_,7 @@ +@@ -1205,6 +_,7 @@ this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -197,7 +197,7 @@ this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. -@@ -2384,7 +_,7 @@ +@@ -2727,7 +_,7 @@ // 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/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index b100b40ed..a03daa6d8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -425,6 +_,10 @@ +@@ -431,6 +_,10 @@ public @Nullable com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent public @Nullable String clientBrandName = null; // Paper - Brand support public @Nullable 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 @@ -9,9 +9,9 @@ + private boolean compassBar = false; // Purpur - Add compass command + private boolean ramBar = false; // Purpur - Implement rambar commands - public ServerPlayer(MinecraftServer server, ServerLevel level, GameProfile gameProfile, ClientInformation clientInformation) { - super(level, gameProfile); -@@ -528,6 +_,10 @@ + // Paper start - rewrite chunk system + private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; +@@ -564,6 +_,10 @@ this.respawnConfig = input.read("respawn", ServerPlayer.RespawnConfig.CODEC).orElse(null); this.spawnExtraParticlesOnFall = input.getBooleanOr("spawn_extra_particles_on_fall", false); this.raidOmenPosition = input.read("raid_omen_position", BlockPos.CODEC).orElse(null); @@ -22,7 +22,7 @@ } @Override -@@ -545,6 +_,9 @@ +@@ -581,6 +_,9 @@ output.storeNullable("raid_omen_position", BlockPos.CODEC, this.raidOmenPosition); this.saveEnderPearls(output); this.getBukkitEntity().setExtraData(output); // CraftBukkit @@ -32,7 +32,7 @@ } private void saveParentVehicle(ValueOutput output) { -@@ -1041,6 +_,7 @@ +@@ -1077,6 +_,7 @@ // Paper - moved up to sendClientboundPlayerCombatKillPacket() sendClientboundPlayerCombatKillPacket(event.getShowDeathMessages(), deathScreenMessage); // Paper - Expand PlayerDeathEvent Team team = this.getTeam(); @@ -40,7 +40,7 @@ if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) { this.server.getPlayerList().broadcastSystemMessage(deathMessage, false); } else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { -@@ -1147,6 +_,13 @@ +@@ -1183,6 +_,13 @@ if (this.isInvulnerableTo(level, damageSource)) { return false; } else { @@ -54,7 +54,7 @@ Entity entity = damageSource.getEntity(); if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. !(entity instanceof Player player && !this.canHarmPlayer(player)) -@@ -1391,6 +_,7 @@ +@@ -1427,6 +_,7 @@ serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -62,7 +62,7 @@ this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1507,7 +_,7 @@ +@@ -1543,7 +_,7 @@ new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), monster -> monster.isPreventingPlayerRest(this.level(), this) ); @@ -71,7 +71,7 @@ return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1544,7 +_,19 @@ +@@ -1580,7 +_,19 @@ CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); if (!this.level().canSleepThroughNights()) { @@ -92,7 +92,7 @@ } this.level().updateSleepingPlayerList(); -@@ -1636,6 +_,7 @@ +@@ -1672,6 +_,7 @@ @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -100,7 +100,7 @@ this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -1945,6 +_,26 @@ +@@ -1981,6 +_,26 @@ this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -127,7 +127,7 @@ @Override public void displayClientMessage(Component chatComponent, boolean actionBar) { this.sendSystemMessage(chatComponent, actionBar); -@@ -2163,6 +_,20 @@ +@@ -2199,6 +_,20 @@ ); } @@ -148,7 +148,7 @@ public void sendSystemMessage(Component mesage) { this.sendSystemMessage(mesage, false); } -@@ -2301,7 +_,67 @@ +@@ -2337,7 +_,67 @@ public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -217,7 +217,7 @@ public ServerStatsCounter getStats() { return this.stats; -@@ -2929,4 +_,56 @@ +@@ -2965,4 +_,56 @@ return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch index fb3d981ba..ab71931ac 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/level/WorldGenRegion.java +++ b/net/minecraft/server/level/WorldGenRegion.java -@@ -284,6 +_,7 @@ +@@ -314,6 +_,7 @@ return true; } else { // Paper start - Buffer OOB setBlock calls diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index 4e3a6149c..f3c9a2115 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -34,7 +34,7 @@ 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 +_,8 @@ +@@ -651,6 +_,8 @@ this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -43,7 +43,7 @@ Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -697,6 +_,7 @@ +@@ -730,6 +_,7 @@ PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); if (packet.getId() == this.awaitingTeleport) { if (this.awaitingPositionFromClient == null) { @@ -51,7 +51,7 @@ this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause return; } -@@ -1230,6 +_,10 @@ +@@ -1263,6 +_,10 @@ final int maxBookPageSize = pageMax.intValue(); final double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D); long byteAllowed = maxBookPageSize; @@ -62,7 +62,7 @@ for (final String page : pageList) { final int byteLength = page.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; byteTotal += byteLength; -@@ -1254,7 +_,8 @@ +@@ -1287,7 +_,8 @@ } if (byteTotal > byteAllowed) { @@ -72,7 +72,7 @@ this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect return; } -@@ -1273,31 +_,45 @@ +@@ -1306,31 +_,45 @@ Optional optional = packet.title(); optional.ifPresent(list::add); list.addAll(packet.pages()); @@ -122,7 +122,7 @@ itemStack.set( DataComponents.WRITTEN_BOOK_CONTENT, new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list, true) -@@ -1311,6 +_,16 @@ +@@ -1344,6 +_,16 @@ return this.player.isTextFilteringEnabled() ? Filterable.passThrough(filteredText.filteredOrEmpty()) : Filterable.from(filteredText); } @@ -139,7 +139,7 @@ @Override public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); -@@ -1350,7 +_,15 @@ +@@ -1383,7 +_,15 @@ @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); @@ -156,7 +156,7 @@ this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause } else { ServerLevel serverLevel = this.player.level(); -@@ -1531,7 +_,7 @@ +@@ -1565,7 +_,7 @@ movedWrongly = true; if (event.getLogWarning()) // Paper end @@ -165,7 +165,7 @@ } // Paper } -@@ -1586,6 +_,8 @@ +@@ -1630,6 +_,8 @@ this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -174,7 +174,7 @@ Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -1641,6 +_,13 @@ +@@ -1685,6 +_,13 @@ this.player.tryResetCurrentImpulseContext(); } @@ -188,7 +188,7 @@ this.player.checkMovementStatistics(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1658,6 +_,17 @@ +@@ -1702,6 +_,17 @@ } } @@ -206,7 +206,7 @@ private boolean shouldCheckPlayerMovement(boolean isElytraMovement) { if (this.isSingleplayerOwner()) { return false; -@@ -2028,6 +_,7 @@ +@@ -2099,6 +_,7 @@ boolean cancelled; if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) { @@ -214,7 +214,7 @@ org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { -@@ -2679,6 +_,7 @@ +@@ -2750,6 +_,7 @@ AABB boundingBox = target.getBoundingBox(); if (this.player.canInteractWithEntity(boundingBox, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience value for interact range diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch index b2aeb51ba..9cc0386e8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch @@ -9,7 +9,7 @@ // Paper start - Send empty chunk, so players aren't stuck in the world loading screen with our chunk system not sending chunks when dead if (player.isDeadOrDying()) { net.minecraft.core.Holder plains = serverLevel.registryAccess().lookupOrThrow(net.minecraft.core.registries.Registries.BIOME) -@@ -512,6 +_,7 @@ +@@ -513,6 +_,7 @@ } public @Nullable net.kyori.adventure.text.Component remove(ServerPlayer player, net.kyori.adventure.text.Component leaveMessage) { // Paper end - Fix kick event leave message not being sent @@ -17,7 +17,7 @@ ServerLevel serverLevel = player.level(); player.awardStat(Stats.LEAVE_GAME); // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it -@@ -670,7 +_,7 @@ +@@ -671,7 +_,7 @@ // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameProfile) // ? Component.translatable("multiplayer.disconnect.server_full") // : null; @@ -26,7 +26,7 @@ event.disallow(org.bukkit.event.player.PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure } } -@@ -932,6 +_,20 @@ +@@ -933,6 +_,20 @@ } } @@ -47,7 +47,7 @@ public void broadcastAll(Packet packet, ResourceKey dimension) { for (ServerPlayer serverPlayer : this.players) { if (serverPlayer.level().dimension() == dimension) { -@@ -1016,6 +_,7 @@ +@@ -1017,6 +_,7 @@ } else { b = (byte)(24 + permLevel); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 4c6ce5ffc..66c58055d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -1,14 +1,14 @@ --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -147,6 +_,7 @@ +@@ -148,6 +_,7 @@ import org.slf4j.Logger; - public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, ScoreHolder, DataComponentGetter { + public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, ScoreHolder, DataComponentGetter, ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity, ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerEntity { // Paper - rewrite chunk system // Paper - optimise entity tracker + public static javax.script.ScriptEngine scriptEngine = new javax.script.ScriptEngineManager().getEngineByName("rhino"); // Purpur - Configurable entity base attributes // 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 snapTo -@@ -323,8 +_,9 @@ +@@ -280,8 +_,9 @@ public double xOld; public double yOld; public double zOld; @@ -19,7 +19,7 @@ public int tickCount; private int remainingFireTicks; public boolean wasTouchingWater; -@@ -358,8 +_,8 @@ +@@ -315,8 +_,8 @@ public PortalProcessor portalProcess; public int portalCooldown; private boolean invulnerable; @@ -30,7 +30,7 @@ private boolean hasGlowingTag; private final Set tags = new io.papermc.paper.util.SizeLimitedSet<>(new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(), MAX_ENTITY_TAG_COUNT); // Paper - fully limit tag size - replace set impl private final double[] pistonDeltas = new double[]{0.0, 0.0, 0.0}; -@@ -414,6 +_,7 @@ +@@ -371,6 +_,7 @@ public long activatedTick = Integer.MIN_VALUE; public boolean isTemporarilyActive; public long activatedImmunityTick = Integer.MIN_VALUE; @@ -38,9 +38,9 @@ public void inactiveTick() { } -@@ -426,10 +_,21 @@ +@@ -533,10 +_,21 @@ } - // Paper end + // Paper end - optimise entity tracker + // Purpur start - Add canSaveToDisk to Entity + public boolean canSaveToDisk() { @@ -60,7 +60,7 @@ this.position = Vec3.ZERO; this.blockPosition = BlockPos.ZERO; this.chunkPosition = ChunkPos.ZERO; -@@ -804,6 +_,7 @@ +@@ -911,6 +_,7 @@ && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage @@ -68,7 +68,7 @@ this.onBelowWorld(); } } -@@ -1741,7 +_,7 @@ +@@ -1889,7 +_,7 @@ } public boolean fireImmune() { @@ -77,7 +77,7 @@ } public boolean causeFallDamage(double fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2437,6 +_,11 @@ +@@ -2585,6 +_,11 @@ output.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -89,7 +89,7 @@ } catch (Throwable var7) { CrashReport crashReport = CrashReport.forThrowable(var7, "Saving entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being saved"); -@@ -2557,6 +_,9 @@ +@@ -2705,6 +_,9 @@ } freezeLocked = input.getBooleanOr("Paper.FreezeLock", false); // Paper end @@ -99,7 +99,7 @@ } catch (Throwable var7) { CrashReport crashReport = CrashReport.forThrowable(var7, "Loading entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); -@@ -2746,6 +_,7 @@ +@@ -2983,6 +_,7 @@ if (this.isAlive() && this instanceof Leashable leashable2) { if (leashable2.getLeashHolder() == player) { if (!this.level().isClientSide()) { @@ -107,7 +107,7 @@ // Paper start - EntityUnleashEvent if (!org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerUnleashEntityEvent( leashable2, player, hand, !player.hasInfiniteMaterials() -@@ -3151,15 +_,18 @@ +@@ -3388,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } @@ -127,7 +127,7 @@ } } } -@@ -3364,7 +_,7 @@ +@@ -3601,7 +_,7 @@ } public int getMaxAirSupply() { @@ -136,7 +136,7 @@ } public int getAirSupply() { -@@ -3909,7 +_,7 @@ +@@ -4146,7 +_,7 @@ // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -145,7 +145,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4432,6 +_,12 @@ +@@ -4671,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -155,10 +155,10 @@ + } + // Purpur end - Stop squids floating on top of water + - public boolean updateFluidHeightAndDoFluidPushing(TagKey fluidTag, double motionScale) { + // Paper start - optimise collisions + public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { - return false; -@@ -4795,7 +_,7 @@ +@@ -5102,7 +_,7 @@ } public float maxUpStep() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch index 6e83d6019..c457ae742 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch @@ -1,11 +1,11 @@ --- a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +++ b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -@@ -85,7 +_,7 @@ - } +@@ -86,7 +_,7 @@ }; - Set, BlockPos>> set = poiManager.findAllClosestFirstWithType( -- acquirablePois, predicate1, mob.blockPosition(), 48, PoiManager.Occupancy.HAS_SPACE -+ acquirablePois, predicate1, mob.blockPosition(), level.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE // Purpur - Configurable villager search radius - ) - .limit(5L) - .filter(pair1 -> predicate.test(level, pair1.getSecond())) + // Paper start - optimise POI access + final java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); +- io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, acquirablePois, predicate1, mob.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); ++ io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, acquirablePois, predicate1, mob.blockPosition(), level.purpurConfig.villagerAcquirePoiSearchRadius, level.purpurConfig.villagerAcquirePoiSearchRadius*level.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); // Purpur - Configurable villager search radius + final Set, BlockPos>> set = new java.util.HashSet<>(poiposes.size()); + for (final Pair, BlockPos> poiPose : poiposes) { + if (predicate.test(level, poiPose.getSecond())) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch index 5d0923750..7e2366a32 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch @@ -1,14 +1,11 @@ --- a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +++ b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -@@ -54,9 +_,9 @@ - } - }; - Set, BlockPos>> set = poiManager.findAllWithType( -- holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY -+ holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), level.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY - ) -- .collect(Collectors.toSet()); -+ .collect(Collectors.toSet()); // Purpur - Configurable villager search radius - Path path = AcquirePoi.findPathToPois(entity, set); +@@ -56,7 +_,7 @@ + // 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(), level.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); // Purpur - Configurable villager search radius + Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes)); + // Paper end - optimise POI access if (path != null && path.canReach()) { - BlockPos target = path.getTarget(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch index b076f46e7..c2ee158cb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch @@ -43,7 +43,7 @@ public int getDamageValue() { return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage()); } -@@ -1203,6 +_,12 @@ +@@ -1209,6 +_,12 @@ public boolean isEnchanted() { return !this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).isEmpty(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch index 5c451611e..fcee0a726 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch @@ -3,13 +3,13 @@ @@ -36,6 +_,7 @@ // CraftBukkit start @javax.annotation.Nullable - private java.util.List itemStacks; + private java.util.Set itemStacks; // Paper - Improve exact choice recipe ingredients + public Predicate predicate; // Purpur - Add predicate to recipe's ExactChoice ingredient public boolean isExact() { return this.itemStacks != null; -@@ -90,6 +_,11 @@ - return false; +@@ -88,6 +_,11 @@ + return this.itemStacks.contains(stack); // Paper - Improve exact choice recipe ingredients (hashing FTW!) } // CraftBukkit end + // Purpur start - Add predicate to recipe's ExactChoice ingredient diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch index e1a0fd757..73e6f74b1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/EntityGetter.java +++ b/net/minecraft/world/level/EntityGetter.java -@@ -144,7 +_,7 @@ +@@ -185,7 +_,7 @@ default boolean hasNearbyAlivePlayer(double x, double y, double z, double distance) { for (Player player : this.players()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch index 3ff14c768..eddf86fda 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/Level.java +++ b/net/minecraft/world/level/Level.java -@@ -159,11 +_,55 @@ +@@ -160,11 +_,55 @@ } // Paper end - add paper world config @@ -56,8 +56,8 @@ public CraftWorld getWorld() { return this.world; } -@@ -207,6 +_,8 @@ - ) { +@@ -840,6 +_,8 @@ + // Paper end - getblock optimisations - cache world height/sections this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).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) levelData).getLevelName(), environment); // Purpur - Purpur config files @@ -65,7 +65,7 @@ this.generator = generator; this.world = new CraftWorld((ServerLevel) this, generator, biomeProvider, environment); -@@ -1417,4 +_,14 @@ +@@ -2131,4 +_,14 @@ return this.id; } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch index 67708c82c..6ce413c7d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/NaturalSpawner.java +++ b/net/minecraft/world/level/NaturalSpawner.java -@@ -206,7 +_,7 @@ +@@ -261,7 +_,7 @@ mutableBlockPos.set(x, y, z); double d = x + 0.5; double d1 = z + 0.5; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch index f4e8e281f..a112829db 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/ServerExplosion.java +++ b/net/minecraft/world/level/ServerExplosion.java -@@ -73,7 +_,7 @@ +@@ -316,7 +_,7 @@ ) { this.level = level; this.source = source; @@ -9,7 +9,7 @@ this.center = center; this.fire = fire; this.blockInteraction = blockInteraction; -@@ -356,10 +_,27 @@ +@@ -638,7 +_,7 @@ public void explode() { // CraftBukkit start @@ -18,6 +18,10 @@ return; } // CraftBukkit end +@@ -650,6 +_,23 @@ + this.directMappedBlockCache = new ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache[BLOCK_EXPLOSION_CACHE_WIDTH * BLOCK_EXPLOSION_CACHE_WIDTH * BLOCK_EXPLOSION_CACHE_WIDTH]; + this.mutablePos = new BlockPos.MutableBlockPos(); + // Paper end - collision optimisations + // Purpur start - add PreExplodeEvents + if (this.source != null) { + Location location = new Location(this.level.getWorld(), this.center.x, this.center.y, this.center.z); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch index d33824d55..8abc6fa2c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -104,6 +_,10 @@ +@@ -105,6 +_,10 @@ input.read("PublicBukkitValues", CompoundTag.CODEC) .ifPresent(this.persistentDataContainer::putAll); // Paper end - read persistent data container @@ -11,7 +11,7 @@ } public final void loadWithComponents(ValueInput input) { -@@ -116,6 +_,11 @@ +@@ -117,6 +_,11 @@ } protected void saveAdditional(ValueOutput output) { @@ -23,7 +23,7 @@ } public final CompoundTag saveWithFullMetadata(HolderLookup.Provider registries) { -@@ -400,4 +_,17 @@ +@@ -402,4 +_,17 @@ return this.blockEntity.getNameForReporting() + "@" + this.blockEntity.getBlockPos(); } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch index 553410e9a..a337495d8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch @@ -30,8 +30,8 @@ EntityReference entityReference = updateDestroyTarget(blockEntity.destroyTarget, level, pos, canDestroy); LivingEntity livingEntity = EntityReference.get(entityReference, level, LivingEntity.class); if (damageTarget && livingEntity != null) { // CraftBukkit -- if (livingEntity.hurtServer(level, level.damageSources().magic(), 4.0F)) // CraftBukkit - move up -+ if (livingEntity.hurtServer(level, level.damageSources().magic(), level.purpurConfig.conduitDamageAmount)) // CraftBukkit - move up // Purpur - Conduit behavior configuration +- if (livingEntity.hurtServer(level, level.damageSources().magic().eventBlockDamager(level, pos), 4.0F)) // CraftBukkit - move up ++ if (livingEntity.hurtServer(level, level.damageSources().magic().eventBlockDamager(level, pos), level.purpurConfig.conduitDamageAmount)) // CraftBukkit - move up // Purpur - Conduit behavior configuration level.playSound( null, livingEntity.getX(), livingEntity.getY(), livingEntity.getZ(), SoundEvents.CONDUIT_ATTACK_TARGET, SoundSource.BLOCKS, 1.0F, 1.0F ); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch index 3a1098066..accc2318d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch @@ -1,8 +1,8 @@ --- a/net/minecraft/world/level/chunk/storage/EntityStorage.java +++ b/net/minecraft/world/level/chunk/storage/EntityStorage.java -@@ -97,6 +_,7 @@ - ListTag listTag = new ListTag(); - entities.getEntities().forEach(entity -> { +@@ -108,6 +_,7 @@ + } + // Paper end - Entity load/save limit per chunk TagValueOutput tagValueOutput = TagValueOutput.createWithContext(scopedCollector.forChild(entity.problemPath()), entity.registryAccess()); + if (!entity.canSaveToDisk()) return; // Purpur - Add canSaveToDisk to Entity if (entity.save(tagValueOutput)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch index f9e571450..8f5ddb2d7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +++ b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -@@ -49,7 +_,7 @@ +@@ -308,7 +_,7 @@ // Paper start private static void printOversizedLog(String msg, Path file, int x, int z) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch index a2b76868b..78e131bae 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/material/FlowingFluid.java +++ b/net/minecraft/world/level/material/FlowingFluid.java -@@ -190,7 +_,7 @@ +@@ -232,7 +_,7 @@ } } @@ -9,7 +9,7 @@ BlockState blockState1 = level.getBlockState(mutableBlockPos.setWithOffset(pos, Direction.DOWN)); FluidState fluidState1 = blockState1.getFluidState(); if (blockState1.isSolid() || this.isSourceBlockOfThisType(fluidState1)) { -@@ -267,6 +_,12 @@ +@@ -319,6 +_,12 @@ } protected abstract boolean canConvertToSource(ServerLevel level); diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index 3ad719453..5022ad19b 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index f70cf786578b1467ec1e02ecea4844dca4277614..041fc1d4182834bda5de9b2172601a2a59b5514b 100644 +index 5fcfbb42c4491ee0878c87bd1724b9bfab57c128..7aaeafd5ee030d032d6e0574fc991942fac5eaa7 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1325,4 +1325,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1348,4 +1348,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.entity.get(io.papermc.paper.datacomponent.PaperDataComponentType.bukkitToMinecraft(type)) != null; } @@ -36,7 +36,7 @@ index f70cf786578b1467ec1e02ecea4844dca4277614..041fc1d4182834bda5de9b2172601a2a + // Purpur end - Ridables } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 574f982a29e8a8ccdbedf65432a1d78928a4b807..e04b7e7d4d3e6e5edba7dbc72b4458174025024c 100644 +index 5ceb08265f883e6634f3f4189c74aa8395addd12..5d64ce696db99f4cefe2c74357b400e00a4ccf60 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -515,6 +515,15 @@ public class CraftEventFactory { diff --git a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch index 7cae4c665..01db886a8 100644 --- a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0004-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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 771bd838bdda98f0cb626e58be893ee82140f81e..1e153eb974be9d1fde9d3a0ad2d8fbd2c3c44803 100644 +index 7aaeafd5ee030d032d6e0574fc991942fac5eaa7..df23fbae231eca494131bf7ec78924669cd5e03d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -304,6 +304,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -309,6 +309,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { boolean retainPassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS); // Don't allow teleporting between worlds while keeping passengers if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -29,7 +29,7 @@ index 771bd838bdda98f0cb626e58be893ee82140f81e..1e153eb974be9d1fde9d3a0ad2d8fbd2 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index e48849bff8e64a16f04d75ad3f0ff769ef3a813e..0d303c3c614142b4183e76f9347e613d7e6db211 100644 +index 91f56fffbced0599d77d39c6d1d8de78b960e58c..213afcae6bb02e4e340d5fa477bdddbb9434fc70 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1439,6 +1439,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch index 53c52637b..f9b172eb8 100644 --- a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0005-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/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 1e153eb974be9d1fde9d3a0ad2d8fbd2c3c44803..86a9adcb98281396b7447aac20b87cb8c15557dd 100644 +index df23fbae231eca494131bf7ec78924669cd5e03d..834389b78d9342e96b3473c9cb6e40ca6cd4e46f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -115,6 +115,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -120,6 +120,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } // Purpur end - Fire Immunity API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch index cf2bfbfcc..ad9c0dbd1 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -103,6 +_,18 @@ +@@ -108,6 +_,18 @@ this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch index 91deafef7..32ef5cc86 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -487,7 +_,7 @@ +@@ -491,7 +_,7 @@ @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { diff --git a/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch index 1d6ab6004..7dc409927 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/spigotmc/WatchdogThread.java.patch @@ -38,9 +38,9 @@ // Paper end - Different message for short timeout logger.log(Level.SEVERE, "------------------------------"); - logger.log(Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Paper!):"); // Paper -+ logger.log(Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Purpur!):" ); // Paper // Purpur - Rebrand ++ logger.log(Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Purpur!):"); // Paper // Purpur - Rebrand FeatureHooks.dumpAllChunkLoadInfo(MinecraftServer.getServer(), isLongTimeout); // Paper - log detailed tick information - WatchdogThread.dumpThread(ManagementFactory.getThreadMXBean().getThreadInfo(MinecraftServer.getServer().serverThread.getId(), Integer.MAX_VALUE), logger); + WatchdogThread.dumpThread(ManagementFactory.getThreadMXBean().getThreadInfo(MinecraftServer.getServer().serverThread.threadId(), Integer.MAX_VALUE), logger); logger.log(Level.SEVERE, "------------------------------"); @@ -120,7 +_,7 @@ WatchdogThread.dumpThread(thread, logger); From 80872f173fafe605e7a11191b430512b3edfa911 Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 4 Jun 2025 16:25:52 -0700 Subject: [PATCH 120/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@ec548f93 1.21.6-pre3 PaperMC/Paper@66272e6a Bump server compile memory PaperMC/Paper@a4e0777a Build updates PaperMC/Paper@b81bb102 Add new attributes for 1.21.6 PaperMC/Paper@39ff9ed2 Pass hand to entity unleash event PaperMC/Paper@f8bde6e1 Resend leash state --- gradle.properties | 4 +- purpur-server/build.gradle.kts.patch | 199 +++++++++--------- .../features/0001-Ridables.patch | 10 +- .../minecraft/world/entity/Entity.java.patch | 10 +- 4 files changed, 112 insertions(+), 111 deletions(-) diff --git a/gradle.properties b/gradle.properties index aef1c99ca..4065b6d41 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT -mcVersion = 1.21.6-pre2 -paperCommit = 4c4ddfcce5e83504e9de0d1418ed09f561b93f58 +mcVersion = 1.21.6-pre3 +paperCommit = f8bde6e1d0d303188572c5e6785b92dbbc07c218 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index d8d97ad97..833ab3217 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -8,10 +8,108 @@ plugins { `java-library` -@@ -20,13 +_,65 @@ - testRuntimeOnly("org.junit.platform:junit-platform-launcher") +@@ -24,9 +_,21 @@ + minecraftVersion = providers.gradleProperty("mcVersion") + gitFilePatches = false + +- updatingMinecraft { +- oldPaperCommit = "a033e3b9ef78cfe85be807ac3fd1dd956274d4db" ++ //updatingMinecraft { ++ // oldPaperCommit = "a033e3b9ef78cfe85be807ac3fd1dd956274d4db" ++ //} ++ ++ // Purpur start - Rebrand ++ val purpur = forks.register("purpur") { ++ upstream.patchDir("paperServer") { ++ upstreamPath = "paper-server" ++ excludes = setOf("src/minecraft", "patches", "build.gradle.kts") ++ patchesDir = rootDirectory.dir("purpur-server/paper-patches") ++ outputDir = rootDirectory.dir("paper-server") ++ } + } ++ activeFork = purpur ++ // Purpur end - Rebrand + + spigot { + enabled = false +@@ -109,7 +_,21 @@ + } } +-val log4jPlugins = sourceSets.create("log4jPlugins") ++// Purpur start - Rebrand ++sourceSets { ++ main { ++ java { srcDir("../paper-server/src/main/java") } ++ resources { srcDir("../paper-server/src/main/resources") } ++ } ++ test { ++ java { srcDir("../paper-server/src/test/java") } ++ resources { srcDir("../paper-server/src/test/resources") } ++ } ++} ++val log4jPlugins = sourceSets.create("log4jPlugins") { ++ java { srcDir("../paper-server/src/log4jPlugins/java") } ++} ++// Purpur end - Rebrand + configurations.named(log4jPlugins.compileClasspathConfigurationName) { + extendsFrom(configurations.compileClasspath.get()) + } +@@ -131,7 +_,7 @@ + } + + dependencies { +- implementation(project(":paper-api")) ++ implementation(project(":purpur-api")) // Purpur + implementation("ca.spottedleaf:concurrentutil:0.0.3") + implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+ + implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21 +@@ -159,6 +_,10 @@ + implementation("org.spongepowered:configurate-yaml:4.2.0-20250225.064233-199") + implementation("org.spongepowered:configurate-core:4.2.0-20250225.064233-204") // Pinned dependency of above pinned yaml snapshot. + ++ 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 ++ + // Deps that were previously in the API but have now been moved here for backwards compat, eventually to be removed + runtimeOnly("commons-lang:commons-lang:2.6") + runtimeOnly("org.xerial:sqlite-jdbc:3.49.1.0") +@@ -207,14 +_,14 @@ + val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim() + attributes( + "Main-Class" to "org.bukkit.craftbukkit.Main", +- "Implementation-Title" to "Paper", ++ "Implementation-Title" to "Purpur", // Purpur + "Implementation-Version" to implementationVersion, + "Implementation-Vendor" to date, +- "Specification-Title" to "Paper", ++ "Specification-Title" to "Purpur", // Purpur + "Specification-Version" to project.version, +- "Specification-Vendor" to "Paper Team", +- "Brand-Id" to "papermc:paper", +- "Brand-Name" to "Paper", ++ "Specification-Vendor" to "Purpur Team", // Purpur ++ "Brand-Id" to "purpurmc:purpur", // Purpur ++ "Brand-Name" to "Purpur", // Purpur + "Build-Number" to (build ?: ""), + "Build-Time" to buildTime.toString(), + "Git-Branch" to gitBranch, +@@ -273,7 +_,7 @@ + jvmArgumentProviders.add(provider) + } + +-val generatedDir: java.nio.file.Path = layout.projectDirectory.dir("src/generated/java").asFile.toPath() ++val generatedDir: java.nio.file.Path = layout.projectDirectory.dir("../paper-server/src/generated/java").asFile.toPath() // Purpur + idea { + module { + generatedSourceDirs.add(generatedDir.toFile()) +@@ -375,4 +_,44 @@ + description = "Spin up a test server from the reobf Paperclip jar" + classpath(tasks.createReobfPaperclipJar.flatMap { it.outputZip }) + mainClass.set(null as String?) ++} ++ +tasks.register("rebuildMinecraftSourcesWithGit") { + group = "temp" + @@ -50,101 +148,4 @@ + } + + return files.size -+} -+ - paperweight { - minecraftVersion = providers.gradleProperty("mcVersion") - gitFilePatches = false - -- updatingMinecraft { -- oldPaperCommit = "a033e3b9ef78cfe85be807ac3fd1dd956274d4db" -+ //updatingMinecraft { -+ // oldPaperCommit = "a033e3b9ef78cfe85be807ac3fd1dd956274d4db" -+ //} -+ -+ // Purpur start - Rebrand -+ val purpur = forks.register("purpur") { -+ upstream.patchDir("paperServer") { -+ upstreamPath = "paper-server" -+ excludes = setOf("src/minecraft", "patches", "build.gradle.kts") -+ patchesDir = rootDirectory.dir("purpur-server/paper-patches") -+ outputDir = rootDirectory.dir("paper-server") -+ } - } -+ activeFork = purpur -+ // Purpur end - Rebrand - - spigot { - buildDataRef = "702e1a0a5072b2c4082371d5228cb30525687efc" -@@ -108,7 +_,21 @@ - } } - --val log4jPlugins = sourceSets.create("log4jPlugins") -+// Purpur start - Rebrand -+sourceSets { -+ main { -+ java { srcDir("../paper-server/src/main/java") } -+ resources { srcDir("../paper-server/src/main/resources") } -+ } -+ test { -+ java { srcDir("../paper-server/src/test/java") } -+ resources { srcDir("../paper-server/src/test/resources") } -+ } -+} -+val log4jPlugins = sourceSets.create("log4jPlugins") { -+ java { srcDir("../paper-server/src/log4jPlugins/java") } -+} -+// Purpur end - Rebrand - configurations.named(log4jPlugins.compileClasspathConfigurationName) { - extendsFrom(configurations.compileClasspath.get()) - } -@@ -130,7 +_,7 @@ - } - - dependencies { -- implementation(project(":paper-api")) -+ implementation(project(":purpur-api")) // Purpur - implementation("ca.spottedleaf:concurrentutil:0.0.3") - implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+ - implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21 -@@ -158,6 +_,10 @@ - implementation("org.spongepowered:configurate-yaml:4.2.0-20250225.064233-199") - implementation("org.spongepowered:configurate-core:4.2.0-20250225.064233-204") // Pinned dependency of above pinned yaml snapshot. - -+ 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 -+ - // Deps that were previously in the API but have now been moved here for backwards compat, eventually to be removed - runtimeOnly("commons-lang:commons-lang:2.6") - runtimeOnly("org.xerial:sqlite-jdbc:3.49.1.0") -@@ -206,14 +_,14 @@ - val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim() - attributes( - "Main-Class" to "org.bukkit.craftbukkit.Main", -- "Implementation-Title" to "Paper", -+ "Implementation-Title" to "Purpur", // Purpur - "Implementation-Version" to implementationVersion, - "Implementation-Vendor" to date, -- "Specification-Title" to "Paper", -+ "Specification-Title" to "Purpur", // Purpur - "Specification-Version" to project.version, -- "Specification-Vendor" to "Paper Team", -- "Brand-Id" to "papermc:paper", -- "Brand-Name" to "Paper", -+ "Specification-Vendor" to "Purpur Team", // Purpur -+ "Brand-Id" to "purpurmc:purpur", // Purpur -+ "Brand-Name" to "Purpur", // Purpur - "Build-Number" to (build ?: ""), - "Build-Time" to buildTime.toString(), - "Git-Branch" to gitBranch, -@@ -267,7 +_,7 @@ - jvmArgumentProviders.add(provider) - } - --val generatedDir: java.nio.file.Path = layout.projectDirectory.dir("src/generated/java").asFile.toPath() -+val generatedDir: java.nio.file.Path = layout.projectDirectory.dir("../paper-server/src/generated/java").asFile.toPath() - idea { - module { - generatedSourceDirs.add(generatedDir.toFile()) diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index acdcc6b37..e4be598d8 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -75,10 +75,10 @@ index 014557e343d3ede351b3a2b950bb803d7e771490..628b1a5ac93d7cd1be8175aab88d2f5e if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 5351e368233d2bca5fe8568cb97c09e49293fb70..d4f9a29cfbb59d557eef790ca07575187c99854b 100644 +index 4857161d69150e4c63ca54728ea12c0a59927acb..afc3d54982818a7ae5d9f3c6bae9c84f2ca8b7f6 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -3302,6 +3302,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3303,6 +3303,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -92,7 +92,7 @@ index 5351e368233d2bca5fe8568cb97c09e49293fb70..d4f9a29cfbb59d557eef790ca0757518 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3343,6 +3350,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3344,6 +3351,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -107,7 +107,7 @@ index 5351e368233d2bca5fe8568cb97c09e49293fb70..d4f9a29cfbb59d557eef790ca0757518 if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5388,4 +5403,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5389,4 +5404,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -1077,7 +1077,7 @@ index 354c7a41407fc6518965d09bfe3089676b6da794..a81ada76bfd6c4b49d1552f48e2009bc } } diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index 210b35ce4abe22d79c13c9c6dbd7114a723f66ee..e0491ba54d93f85359e11fdbc66775d11bcec7ac 100644 +index 6e294ce65c8977db01ff1b9c8281c1c59ba156c0..d72af85b4605549aa73c7ef5956db30075325a16 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java @@ -120,6 +120,13 @@ public class HappyGhast extends Animal { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 66c58055d..71e0e3828 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -107,7 +107,7 @@ // Paper start - EntityUnleashEvent if (!org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerUnleashEntityEvent( leashable2, player, hand, !player.hasInfiniteMaterials() -@@ -3388,15 +_,18 @@ +@@ -3389,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } @@ -127,7 +127,7 @@ } } } -@@ -3601,7 +_,7 @@ +@@ -3602,7 +_,7 @@ } public int getMaxAirSupply() { @@ -136,7 +136,7 @@ } public int getAirSupply() { -@@ -4146,7 +_,7 @@ +@@ -4147,7 +_,7 @@ // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -145,7 +145,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4671,6 +_,12 @@ +@@ -4672,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -158,7 +158,7 @@ // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { -@@ -5102,7 +_,7 @@ +@@ -5103,7 +_,7 @@ } public float maxUpStep() { From 2a261de395cf9247cf606b64881a2e9e15c1a27b Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 4 Jun 2025 16:40:14 -0700 Subject: [PATCH 121/289] remove bandaid fix for compileJava, paper adds it themselves in the server module --- build.gradle.kts | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index b7ff36c8c..2702101e2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -46,7 +46,6 @@ subprojects { options.release = 21 options.isFork = true options.compilerArgs.addAll(listOf("-Xlint:-deprecation", "-Xlint:-removal")) - options.forkOptions.memoryMaximumSize = "4g" } tasks.withType { options.encoding = Charsets.UTF_8.name() From e40ada42af85e2269ec928a357bcbafd9ecd824b Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 5 Jun 2025 19:50:36 -0700 Subject: [PATCH 122/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@921c5f93 Do not send update packets for saddle/body slots PaperMC/Paper@f00d9bce Second part of diff PaperMC/Paper@24cd24c8 Optimise CraftWorld#getLoadedChunks PaperMC/Paper@73c536da add new UI sound category PaperMC/Paper@a8df9346 Run generators PaperMC/Paper@77d1c233 Remove useless comments and FQN in source PaperMC/Paper@26a82545 fix some NPEs PaperMC/Paper@774c40e7 Update CraftWorld#getForceLoadedChunks to avoid using getChunkAt --- gradle.properties | 2 +- .../sources/net/minecraft/world/entity/Entity.java.patch | 2 +- .../src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index 4065b6d41..14a06cb58 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6-pre3 -paperCommit = f8bde6e1d0d303188572c5e6785b92dbbc07c218 +paperCommit = 774c40e71297c6e6d7d417639e1ce61cc79cc5ba org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 71e0e3828..9a2d5079a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -106,7 +106,7 @@ + if (hand == InteractionHand.OFF_HAND && (level().purpurConfig.villagerCanBeLeashed || level().purpurConfig.wanderingTraderCanBeLeashed) && this instanceof net.minecraft.world.entity.npc.AbstractVillager) return InteractionResult.CONSUME; // Purpur - Allow leashing villagers // Paper start - EntityUnleashEvent if (!org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerUnleashEntityEvent( - leashable2, player, hand, !player.hasInfiniteMaterials() + leashable2, player, hand, !player.hasInfiniteMaterials(), true @@ -3389,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch index 72ef202a0..eb9822cce 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2352,6 +_,50 @@ +@@ -2370,6 +_,50 @@ return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } From ea9489a8073847f0b7b502845fd9b2ce1bdf984f Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 5 Jun 2025 19:50:54 -0700 Subject: [PATCH 123/289] remove bandaid fix here too --- gradle.properties | 2 -- 1 file changed, 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 14a06cb58..9bf49e281 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,5 +8,3 @@ org.gradle.configuration-cache = true org.gradle.caching = true org.gradle.parallel = true org.gradle.vfs.watch = false - -org.gradle.jvmargs=-Xmx4G From 4cd43bb79b2a6f6192b9d79fc49d968966b7525e Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 5 Jun 2025 20:06:03 -0700 Subject: [PATCH 124/289] fix tests --- .../features/0006-fix-tests.patch | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 purpur-server/paper-patches/features/0006-fix-tests.patch diff --git a/purpur-server/paper-patches/features/0006-fix-tests.patch b/purpur-server/paper-patches/features/0006-fix-tests.patch new file mode 100644 index 000000000..876fc5584 --- /dev/null +++ b/purpur-server/paper-patches/features/0006-fix-tests.patch @@ -0,0 +1,20 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: granny +Date: Thu, 5 Jun 2025 20:05:32 -0700 +Subject: [PATCH] fix tests + + +diff --git a/src/test/java/org/bukkit/craftbukkit/inventory/YamlSerializationTest.java b/src/test/java/org/bukkit/craftbukkit/inventory/YamlSerializationTest.java +index 6ecfd6209dc2c994b43d29d328668435e16c69d1..f92ce0a220b347e54252ebaf3123d5abca807c22 100644 +--- a/src/test/java/org/bukkit/craftbukkit/inventory/YamlSerializationTest.java ++++ b/src/test/java/org/bukkit/craftbukkit/inventory/YamlSerializationTest.java +@@ -94,8 +94,8 @@ public class YamlSerializationTest { + count: 1 + components: + minecraft:unbreakable: '{}' ++ minecraft:tooltip_display: '{hidden_components:["minecraft:unbreakable","minecraft:enchantments"]}' + minecraft:enchantments: '{"minecraft:sharpness":2}' +- minecraft:tooltip_display: '{hidden_components:["minecraft:enchantments","minecraft:unbreakable"]}' + schema_version: 1 + """.formatted(Bukkit.getUnsafe().getDataVersion())); + } From 916df1a858c46e240fa966540cf1cc819cfb3c36 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 5 Jun 2025 21:18:05 -0700 Subject: [PATCH 125/289] use the correct item reference for retrieving components, closes #1668 --- .../world/entity/monster/piglin/PiglinAi.java.patch | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch index 1c6e7e4c3..ae53e80fd 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch @@ -7,7 +7,7 @@ - if (entity.getItemBySlot(equipmentSlot).is(ItemTags.PIGLIN_SAFE_ARMOR)) { + // Purpur start - piglins ignore gold-trimmed armor + net.minecraft.world.item.ItemStack itemStack = entity.getItemBySlot(equipmentSlot); -+ if (itemStack.is(ItemTags.PIGLIN_SAFE_ARMOR) || (entity.level().purpurConfig.piglinIgnoresArmorWithGoldTrim && isWearingGoldTrim(itemStack.getItem()))) { ++ if (itemStack.is(ItemTags.PIGLIN_SAFE_ARMOR) || (entity.level().purpurConfig.piglinIgnoresArmorWithGoldTrim && isWearingGoldTrim(itemStack))) { + // Purpur end - piglins ignore gold-trimmed armor return true; } @@ -17,8 +17,8 @@ } + + // Purpur start - piglins ignore gold-trimmed armor -+ private static boolean isWearingGoldTrim(Item itemstack) { -+ net.minecraft.world.item.equipment.trim.ArmorTrim armorTrim = itemstack.components().get(net.minecraft.core.component.DataComponents.TRIM); ++ private static boolean isWearingGoldTrim(net.minecraft.world.item.ItemStack itemstack) { ++ net.minecraft.world.item.equipment.trim.ArmorTrim armorTrim = itemstack.getComponents().get(net.minecraft.core.component.DataComponents.TRIM); + return armorTrim != null && armorTrim.material().is(net.minecraft.world.item.equipment.trim.TrimMaterials.GOLD); + } + // Purpur end - piglins ignore gold-trimmed armor From 5471cee83e376dac2dce98c81bd628719491c76e Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 6 Jun 2025 19:18:40 -0700 Subject: [PATCH 126/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@94fefb88 [ci/skip] fix classpath split on Windows for generator CLI --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 9bf49e281..6f8529412 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6-pre3 -paperCommit = 774c40e71297c6e6d7d417639e1ce61cc79cc5ba +paperCommit = 94fefb88e6af6e7699d16d949dc4cee88e0c4a1b org.gradle.configuration-cache = true org.gradle.caching = true From eb0ba67d83aca9c6fb8b6962f31c09b54674c4aa Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 6 Jun 2025 19:30:41 -0700 Subject: [PATCH 127/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@4eda045b Backport fix for MC-296337 (Fixes #12617) (#12619) PaperMC/Paper@7ebc94c2 Add Registry#getTagValues (#12603) PaperMC/Paper@e87320d5 Fix UOE when using generateTree with pale oak (#12616) --- gradle.properties | 2 +- .../features/0001-Ridables.patch | 12 +++++----- ...018-API-for-any-mob-to-burn-daylight.patch | 10 ++++---- .../minecraft/world/entity/Entity.java.patch | 24 +++++++++---------- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/gradle.properties b/gradle.properties index 90f55875d..c1e78b05f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = 2ba1675c7506cadd8a540ea452e5dafb79ae8947 +paperCommit = e87320d5f2c5ef7b784b2680835e0e9c101b9e30 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 009aa9ee9..e9eb00f3d 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -62,7 +62,7 @@ index 5ced523477c2b86e2b46182a77a9d991cf4cdd1f..f55dc4affffd495b4c02b77c8a60f172 private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index c6b2591eb8ba7005919ea4b885f95c4d603305b6..9f695e97d247b24b12a4a115bfb012c7e344ccf8 100644 +index bf8a8124145e4339cadcc83691f076bdad3ec43d..6315f7aa585aa287c3c59c0cabe85faf633374fa 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2831,6 +2831,8 @@ public class ServerGamePacketListenerImpl @@ -75,10 +75,10 @@ index c6b2591eb8ba7005919ea4b885f95c4d603305b6..9f695e97d247b24b12a4a115bfb012c7 if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index b8a0abd1cbdc0c86ae9e68ebaeec14cd4728450e..05b936babba4fb9847dedb823406d06fa79a95c2 100644 +index ff6a936093abbd4799f36c2581bb57a529a18e00..ce456b05dc05534b9e2bfe408d96a44fd59f3b59 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -3110,6 +3110,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3114,6 +3114,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -92,7 +92,7 @@ index b8a0abd1cbdc0c86ae9e68ebaeec14cd4728450e..05b936babba4fb9847dedb823406d06f this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3151,6 +3158,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3155,6 +3162,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -107,7 +107,7 @@ index b8a0abd1cbdc0c86ae9e68ebaeec14cd4728450e..05b936babba4fb9847dedb823406d06f if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5153,4 +5168,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5157,4 +5172,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -3347,7 +3347,7 @@ index fd33a8b59f40299ab644a4c52921b66a9b6552ca..eccbb27aa7efa6e24e04db114b06c7db return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0); } diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index 19a047c99c3afc6f8b23d7279491b156785a2c28..f991e59e896fc39da8f318871168b4c9bb0d8328 100644 +index ed322ed572cac147acf26ba18a7803685557e0d7..16df35760f7a3057be4caa63e0b59db67622a25e 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java @@ -91,9 +91,27 @@ public class EnderMan extends Monster implements NeutralMob { diff --git a/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch index 09ee6ceb8..85cb84a9a 100644 --- a/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0018-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/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 1edca56b4bf880460148d00b98225fc34bd15f17..5b0a4ef4ae5a762432dbb0def005f7505197445e 100644 +index ce456b05dc05534b9e2bfe408d96a44fd59f3b59..de389a4db6faf229dad599366d26feff63497126 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -521,6 +521,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -525,6 +525,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Purpur end - Add canSaveToDisk to Entity @@ -35,7 +35,7 @@ index 1edca56b4bf880460148d00b98225fc34bd15f17..5b0a4ef4ae5a762432dbb0def005f750 this.type = entityType; this.level = level; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 13a1b5dd8b1a07a584f71b1f24da28965f5e2a5d..fb42e31e812f99bf7b74c376ed47fcaee3213238 100644 +index e7b7f09d224a630f61259a0d905b2ad6a6fa6986..b4fc3f22c088849837cb73996a5906515f12bde6 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -273,6 +273,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -96,7 +96,7 @@ index 13a1b5dd8b1a07a584f71b1f24da28965f5e2a5d..fb42e31e812f99bf7b74c376ed47fcae protected void applyInput() { diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index b828524d62a940f89f0c0fa926ef0423019ec212..e9344f61a943d610dfabe4918c227ddba166f17f 100644 +index 964c7e60a8b0171ee31b12a277a4e9f8940ab58d..09b4e592255aa2dc49dbd82be35f2f87e0b9b6ba 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java @@ -1531,19 +1531,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -122,7 +122,7 @@ index b828524d62a940f89f0c0fa926ef0423019ec212..e9344f61a943d610dfabe4918c227ddb @Override diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 0a5de00d41c59528e9f85a7cf82363c45e24d2bc..185edd9878f5193c44b75a126e8182caade7e943 100644 +index 607be674b6dcb9b099e9182b268c6bd960c5a87d..21cf84f1d037e3e387a3e254599673125f89ba9c 100644 --- a/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -64,11 +64,12 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index b88e9207b..c600e0872 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -38,7 +38,7 @@ public void inactiveTick() { } -@@ -512,10 +_,21 @@ +@@ -516,10 +_,21 @@ } // Paper end - optimise entity tracker @@ -60,7 +60,7 @@ this.position = Vec3.ZERO; this.blockPosition = BlockPos.ZERO; this.chunkPosition = ChunkPos.ZERO; -@@ -885,6 +_,7 @@ +@@ -889,6 +_,7 @@ && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage @@ -68,7 +68,7 @@ this.onBelowWorld(); } } -@@ -1830,7 +_,7 @@ +@@ -1834,7 +_,7 @@ } public boolean fireImmune() { @@ -77,7 +77,7 @@ } public boolean causeFallDamage(double fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -1890,7 +_,7 @@ +@@ -1894,7 +_,7 @@ return this.isInWater() || flag; } @@ -86,7 +86,7 @@ if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { this.wasTouchingWater = false; } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) { -@@ -2516,6 +_,13 @@ +@@ -2520,6 +_,13 @@ compound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -100,7 +100,7 @@ return compound; } catch (Throwable var8) { CrashReport crashReport = CrashReport.forThrowable(var8, "Saving entity NBT"); -@@ -2646,6 +_,13 @@ +@@ -2650,6 +_,13 @@ freezeLocked = compound.getBooleanOr("Paper.FreezeLock", false); } // Paper end @@ -114,7 +114,7 @@ } catch (Throwable var8) { CrashReport crashReport = CrashReport.forThrowable(var8, "Loading entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); -@@ -2874,6 +_,7 @@ +@@ -2878,6 +_,7 @@ if (this.isAlive() && this instanceof Leashable leashable) { if (leashable.getLeashHolder() == player) { if (!this.level().isClientSide()) { @@ -122,7 +122,7 @@ // CraftBukkit start - fire PlayerUnleashEntityEvent // Paper start - Expand EntityUnleashEvent org.bukkit.event.player.PlayerUnleashEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials()); -@@ -3190,15 +_,18 @@ +@@ -3194,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } @@ -142,7 +142,7 @@ } } } -@@ -3403,7 +_,7 @@ +@@ -3407,7 +_,7 @@ } public int getMaxAirSupply() { @@ -151,7 +151,7 @@ } public int getAirSupply() { -@@ -3931,7 +_,7 @@ +@@ -3935,7 +_,7 @@ // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -160,7 +160,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4468,6 +_,12 @@ +@@ -4472,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -173,7 +173,7 @@ // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { -@@ -4876,7 +_,7 @@ +@@ -4880,7 +_,7 @@ } public float maxUpStep() { From 8dfb6bda48218272175dcf9b6d8df366d9245d1b Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 8 Jun 2025 11:29:01 -0700 Subject: [PATCH 128/289] comment out the custom task for now --- purpur-server/build.gradle.kts.patch | 83 ++++++++++++++-------------- 1 file changed, 41 insertions(+), 42 deletions(-) diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index 833ab3217..7e4ff9fe1 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -104,48 +104,47 @@ idea { module { generatedSourceDirs.add(generatedDir.toFile()) -@@ -375,4 +_,44 @@ - description = "Spin up a test server from the reobf Paperclip jar" +@@ -376,3 +_,43 @@ classpath(tasks.createReobfPaperclipJar.flatMap { it.outputZip }) mainClass.set(null as String?) -+} -+ -+tasks.register("rebuildMinecraftSourcesWithGit") { -+ group = "temp" -+ -+ val patchDir = project.rootDir.resolve("purpur-server/minecraft-patches/sources").convertToPath().cleanDir() -+ val inputDir = this.project.rootDir.resolve("purpur-server/src/minecraft/java").convertToPath() -+ -+ val git = Git(inputDir) -+ git("stash", "push").executeSilently(silenceErr = true) -+ git("checkout", "file").executeSilently(silenceErr = true) -+ -+ rebuildWithGit(git, patchDir) -+} -+ -+private fun rebuildWithGit( -+ git: Git, -+ patchDir: java.nio.file.Path -+): Int { -+ val files = git("diff-tree", "--name-only", "--no-commit-id", "-r", "HEAD").getText().split("\n") -+ files.parallelStream().forEach { filename -> -+ if (filename.isBlank()) return@forEach -+ val patch = git( -+ "format-patch", -+ "--diff-algorithm=myers", -+ "--full-index", -+ "--no-signature", -+ "--no-stat", -+ "--no-numbered", -+ "-1", -+ "HEAD", -+ "--stdout", -+ filename -+ ).getText() -+ val patchFile = patchDir.resolve("$filename.patch") -+ patchFile.createParentDirectories() -+ patchFile.writeText(patch) -+ } -+ -+ return files.size } ++ ++// tasks.register("rebuildMinecraftSourcesWithGit") { ++// group = "temp" ++// ++// val patchDir = project.rootDir.resolve("purpur-server/minecraft-patches/sources").convertToPath().cleanDir() ++// val inputDir = this.project.rootDir.resolve("purpur-server/src/minecraft/java").convertToPath() ++// ++// val git = Git(inputDir) ++// git("stash", "push").executeSilently(silenceErr = true) ++// git("checkout", "file").executeSilently(silenceErr = true) ++// ++// rebuildWithGit(git, patchDir) ++// } ++// ++// private fun rebuildWithGit( ++// git: Git, ++// patchDir: java.nio.file.Path ++// ): Int { ++// val files = git("diff-tree", "--name-only", "--no-commit-id", "-r", "HEAD").getText().split("\n") ++// files.parallelStream().forEach { filename -> ++// if (filename.isBlank()) return@forEach ++// val patch = git( ++// "format-patch", ++// "--diff-algorithm=myers", ++// "--full-index", ++// "--no-signature", ++// "--no-stat", ++// "--no-numbered", ++// "-1", ++// "HEAD", ++// "--stdout", ++// filename ++// ).getText() ++// val patchFile = patchDir.resolve("$filename.patch") ++// patchFile.createParentDirectories() ++// patchFile.writeText(patch) ++// } ++// ++// return files.size ++// } From c39c270a37b6474d76fb476da70556664f9c8cd8 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 8 Jun 2025 11:31:48 -0700 Subject: [PATCH 129/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@73d218c1 Improve command permission lookups PaperMC/Paper@7c2ffd5e Prune the api version suffix PaperMC/Paper@c609d6dc Remove SERVER_ONLY command flag functionality PaperMC/Paper@3594d24a Properly send over SADDLE and BODY equipment items to PlayerInventory PaperMC/Paper@720e63ff Remove craft flying PaperMC/Paper@1e441025 Removed inlined art api PaperMC/Paper@adb5aefc Add api for shear equippable logic PaperMC/Paper@4604c5f2 Change ordering on YamlSanitizationTest PaperMC/Paper@c986ce54 Fix V4307 ordering issues PaperMC/Paper@48e94e8c fix sponge absorb resetting block entity data of waterlogged blocks PaperMC/Paper@c5fc0dc8 support block state mutation of already placed block entity in BlockStateListPopulator --- .../Run_Purpur_Paperclip_Jar.xml | 4 ++-- gradle.properties | 2 +- .../commands/CommandSourceStack.java.patch | 4 ++-- .../minecraft/commands/Commands.java.patch | 4 ++-- .../minecraft/world/level/Level.java.patch | 2 +- .../features/0006-fix-tests.patch | 20 ------------------- 6 files changed, 8 insertions(+), 28 deletions(-) delete mode 100644 purpur-server/paper-patches/features/0006-fix-tests.patch diff --git a/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml b/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml index cdd44578f..f285361d8 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 6f8529412..564b95259 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6-pre3 -paperCommit = 94fefb88e6af6e7699d16d949dc4cee88e0c4a1b +paperCommit = c5fc0dc84b2e9f875b7dc03ed75cf6744abc4902 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch index 8863fb3c8..007fa82c9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/commands/CommandSourceStack.java +++ b/net/minecraft/commands/CommandSourceStack.java -@@ -457,6 +_,19 @@ +@@ -447,6 +_,19 @@ } // CraftBukkit end @@ -20,7 +20,7 @@ public Vec3 getPosition() { return this.worldPosition; } -@@ -541,6 +_,30 @@ +@@ -531,6 +_,30 @@ } } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch index 0fc215487..3e54cc7b4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch @@ -24,7 +24,7 @@ } if (selection.includeIntegrated) { -@@ -535,6 +_,7 @@ +@@ -537,6 +_,7 @@ private void runSync(ServerPlayer player, java.util.Collection bukkit, RootCommandNode rootCommandNode) { // Paper end - Perf: Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootCommandNode, true).callEvent(); // Paper - Brigadier API @@ -32,7 +32,7 @@ org.bukkit.event.player.PlayerCommandSendEvent event = new org.bukkit.event.player.PlayerCommandSendEvent(player.getBukkitEntity(), new java.util.LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -545,6 +_,8 @@ +@@ -547,6 +_,8 @@ } } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch index eddf86fda..dc002e072 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch @@ -65,7 +65,7 @@ this.generator = generator; this.world = new CraftWorld((ServerLevel) this, generator, biomeProvider, environment); -@@ -2131,4 +_,14 @@ +@@ -2124,4 +_,14 @@ return this.id; } } diff --git a/purpur-server/paper-patches/features/0006-fix-tests.patch b/purpur-server/paper-patches/features/0006-fix-tests.patch deleted file mode 100644 index 876fc5584..000000000 --- a/purpur-server/paper-patches/features/0006-fix-tests.patch +++ /dev/null @@ -1,20 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: granny -Date: Thu, 5 Jun 2025 20:05:32 -0700 -Subject: [PATCH] fix tests - - -diff --git a/src/test/java/org/bukkit/craftbukkit/inventory/YamlSerializationTest.java b/src/test/java/org/bukkit/craftbukkit/inventory/YamlSerializationTest.java -index 6ecfd6209dc2c994b43d29d328668435e16c69d1..f92ce0a220b347e54252ebaf3123d5abca807c22 100644 ---- a/src/test/java/org/bukkit/craftbukkit/inventory/YamlSerializationTest.java -+++ b/src/test/java/org/bukkit/craftbukkit/inventory/YamlSerializationTest.java -@@ -94,8 +94,8 @@ public class YamlSerializationTest { - count: 1 - components: - minecraft:unbreakable: '{}' -+ minecraft:tooltip_display: '{hidden_components:["minecraft:unbreakable","minecraft:enchantments"]}' - minecraft:enchantments: '{"minecraft:sharpness":2}' -- minecraft:tooltip_display: '{hidden_components:["minecraft:enchantments","minecraft:unbreakable"]}' - schema_version: 1 - """.formatted(Bukkit.getUnsafe().getDataVersion())); - } From 20075b42e4970a1fff6803e4c7475b9e41d4abd2 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 8 Jun 2025 11:50:21 -0700 Subject: [PATCH 130/289] is javadoc.io down again?? --- purpur-api/build.gradle.kts.patch | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/purpur-api/build.gradle.kts.patch b/purpur-api/build.gradle.kts.patch index 755a5bb4e..7dc5f4924 100644 --- a/purpur-api/build.gradle.kts.patch +++ b/purpur-api/build.gradle.kts.patch @@ -28,7 +28,7 @@ } } } -@@ -165,8 +_,10 @@ +@@ -165,16 +_,18 @@ val services = objects.newInstance() tasks.withType { @@ -40,6 +40,30 @@ options.use() options.isDocFilesSubDirs = true options.links( + "https://guava.dev/releases/33.3.1-jre/api/docs/", +- "https://javadoc.io/doc/org.yaml/snakeyaml/2.2/", +- "https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", +- "https://javadoc.io/doc/org.joml/joml/1.10.8/", +- "https://www.javadoc.io/doc/com.google.code.gson/gson/2.11.0", ++ // "https://javadoc.io/doc/org.yaml/snakeyaml/2.2/", ++ // "https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", ++ // "https://javadoc.io/doc/org.joml/joml/1.10.8/", ++ // "https://www.javadoc.io/doc/com.google.code.gson/gson/2.11.0", + "https://jspecify.dev/docs/api/", + "https://jd.advntr.dev/api/$adventureVersion/", + "https://jd.advntr.dev/key/$adventureVersion/", +@@ -183,9 +_,9 @@ + "https://jd.advntr.dev/text-serializer-legacy/$adventureVersion/", + "https://jd.advntr.dev/text-serializer-plain/$adventureVersion/", + "https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/", +- "https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/", ++ // "https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/", + "https://logging.apache.org/log4j/2.x/javadoc/log4j-api/", +- "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3", ++ // "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3", + ) + options.tags("apiNote:a:API Note:") + @@ -199,11 +_,11 @@ } From 7c6502dc1372c8522ea62ec2e2bd8f9e12a26d67 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 8 Jun 2025 12:54:36 -0700 Subject: [PATCH 131/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@94f29035 Do not blow up accessing unregistered memories from API (Fixes #12618) (#12639) PaperMC/Paper@03efecf0 Do not fire PlayerDropItemEvent for /give command PaperMC/Paper@3527ccdf feat: expose updateDemand and restock on Villager (#12608) PaperMC/Paper@320f25cb fix sponge-absorb deleting chest content (#12647) --- gradle.properties | 2 +- purpur-api/build.gradle.kts.patch | 26 ++++++++++++++++++- .../org/bukkit/entity/Villager.java.patch | 6 ++--- .../server/commands/GiveCommand.java.patch | 2 +- .../world/entity/npc/Villager.java.patch | 2 +- .../world/level/block/SpongeBlock.java.patch | 2 +- ...005-API-for-any-mob-to-burn-daylight.patch | 4 +-- .../entity/CraftLivingEntity.java.patch | 2 +- .../entity/CraftVillager.java.patch | 7 +++-- 9 files changed, 38 insertions(+), 15 deletions(-) diff --git a/gradle.properties b/gradle.properties index c1e78b05f..055aa3e06 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = e87320d5f2c5ef7b784b2680835e0e9c101b9e30 +paperCommit = 320f25cb04f183c18c16595100897622c88ce073 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/build.gradle.kts.patch b/purpur-api/build.gradle.kts.patch index 755a5bb4e..7dc5f4924 100644 --- a/purpur-api/build.gradle.kts.patch +++ b/purpur-api/build.gradle.kts.patch @@ -28,7 +28,7 @@ } } } -@@ -165,8 +_,10 @@ +@@ -165,16 +_,18 @@ val services = objects.newInstance() tasks.withType { @@ -40,6 +40,30 @@ options.use() options.isDocFilesSubDirs = true options.links( + "https://guava.dev/releases/33.3.1-jre/api/docs/", +- "https://javadoc.io/doc/org.yaml/snakeyaml/2.2/", +- "https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", +- "https://javadoc.io/doc/org.joml/joml/1.10.8/", +- "https://www.javadoc.io/doc/com.google.code.gson/gson/2.11.0", ++ // "https://javadoc.io/doc/org.yaml/snakeyaml/2.2/", ++ // "https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", ++ // "https://javadoc.io/doc/org.joml/joml/1.10.8/", ++ // "https://www.javadoc.io/doc/com.google.code.gson/gson/2.11.0", + "https://jspecify.dev/docs/api/", + "https://jd.advntr.dev/api/$adventureVersion/", + "https://jd.advntr.dev/key/$adventureVersion/", +@@ -183,9 +_,9 @@ + "https://jd.advntr.dev/text-serializer-legacy/$adventureVersion/", + "https://jd.advntr.dev/text-serializer-plain/$adventureVersion/", + "https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/", +- "https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/", ++ // "https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/", + "https://logging.apache.org/log4j/2.x/javadoc/log4j-api/", +- "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3", ++ // "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3", + ) + options.tags("apiNote:a:API Note:") + @@ -199,11 +_,11 @@ } diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch index 083a0d057..55d5c2802 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch @@ -1,9 +1,9 @@ --- a/src/main/java/org/bukkit/entity/Villager.java +++ b/src/main/java/org/bukkit/entity/Villager.java -@@ -391,4 +_,13 @@ - * reputation regardless of its impact and the player associated. +@@ -408,4 +_,13 @@ + * Demand is still updated even if all events are canceled. */ - public void clearReputations(); + public void restock(); + + // Purpur start + /** diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch index 557923162..f48a78f28 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch @@ -6,5 +6,5 @@ boolean flag = serverPlayer.getInventory().add(itemStack1); + if (org.purpurmc.purpur.PurpurConfig.disableGiveCommandDrops) continue; // Purpur - add config option for toggling give command dropping if (flag && itemStack1.isEmpty()) { - ItemEntity itemEntity = serverPlayer.drop(itemStack, false); + ItemEntity itemEntity = serverPlayer.drop(itemStack, false, false, false, null); // Paper - do not fire PlayerDropItemEvent for /give command if (itemEntity != null) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch index 71cb36d56..d87abdef5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch @@ -104,7 +104,7 @@ @@ -504,7 +_,7 @@ - private void updateDemand() { + public void updateDemand() { for (MerchantOffer merchantOffer : this.getOffers()) { - merchantOffer.updateDemand(); + merchantOffer.updateDemand(this.level().purpurConfig.villagerMinimumDemand); // Purpur - Configurable minimum demand for trades diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch index ab343ffb3..92a63d004 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch @@ -19,7 +19,7 @@ + if (!fluidState.is(FluidTags.WATER) && (!level.purpurConfig.spongeAbsorbsLava || !fluidState.is(FluidTags.LAVA)) && (!level.purpurConfig.spongeAbsorbsWaterFromMud || !blockState.is(Blocks.MUD))) { // Purpur - Option for sponges to work on lava and mud return BlockPos.TraversalNodeStatus.SKIP; } else if (blockState.getBlock() instanceof BucketPickup bucketPickup - && !bucketPickup.pickupBlock(null, blockList, blockPos, blockState).isEmpty()) { // CraftBukkit + && !bucketPickup.pickupBlock(null, level, blockPos, blockState).isEmpty()) { @@ -76,6 +_,10 @@ } else { if (blockState.getBlock() instanceof LiquidBlock) { diff --git a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch index 2d98f9323..07071c224 100644 --- a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch @@ -24,10 +24,10 @@ index 2c87953a3b99c5e776fe06271d5cba5cc355bf53..395951c968e95adffa97e1851d104faf 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 78846e0abe010997b6a5da04f2be4b5ffba5dd0a..5f30621d717bd0728ddc074072ab7a02c487b253 100644 +index 69d92e708bac7925ff30e403e94200236536b670..fc4fa99a993a017676da2be3cb254399d421bce1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1165,4 +1165,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1167,4 +1167,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public CombatTracker getCombatTracker() { return this.getHandle().getCombatTracker().paperCombatTracker; } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch index a73b21afb..fa1f1bdc9 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -513,7 +_,7 @@ +@@ -514,7 +_,7 @@ net.minecraft.server.level.ServerPlayer nmsKiller = killer == null ? null : ((CraftPlayer) killer).getHandle(); this.getHandle().setLastHurtByMob(nmsKiller); if (nmsKiller != null) { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch index 266f13c33..e5121d85f 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch @@ -1,10 +1,9 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -@@ -380,4 +_,12 @@ - public void clearReputations() { - getHandle().getGossips().gossips.clear(); +@@ -390,4 +_,11 @@ + public void restock() { + getHandle().restock(); } -+ // Paper end + + // Purpur start - Lobotomize stuck villagers + @Override From da6087c5d29fcabd2902a139f52ac168488d2fe0 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 9 Jun 2025 15:47:22 -0700 Subject: [PATCH 132/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@d4a7bbde fix Phantom#setAnchorLocation(null) PaperMC/Paper@c63166f3 remove support of inlined painting variant in registry PaperMC/Paper@6101c8af Fix infinite loop in RegionFile IO --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 564b95259..317e9428b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6-pre3 -paperCommit = c5fc0dc84b2e9f875b7dc03ed75cf6744abc4902 +paperCommit = 6101c8af5bac6ba2b8ed6c50cf4d219ce3d07352 org.gradle.configuration-cache = true org.gradle.caching = true From aa289e2c6ff801551fb2f585269ccffed3a154fa Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 9 Jun 2025 15:55:26 -0700 Subject: [PATCH 133/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@95565e0f Add missing attribute serialization updater PaperMC/Paper@519e4224 Fix infinite loop in RegionFile IO --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 055aa3e06..9be207ddf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = 320f25cb04f183c18c16595100897622c88ce073 +paperCommit = 519e4224b1ba73a99c58c8fc53aab003eb6af37a org.gradle.configuration-cache = true org.gradle.caching = true From 5cd1961a659aa8a514f4b410f5db222c5ef07790 Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 10 Jun 2025 17:11:18 -0700 Subject: [PATCH 134/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@7e68259c attribute modifier display PaperMC/Paper@8d5be7ed port some generator fixes PaperMC/Paper@569c3231 update to pre4 --- gradle.properties | 4 ++-- .../files/src/main/java/org/bukkit/World.java.patch | 2 +- .../src/main/java/org/bukkit/craftbukkit/Main.java.patch | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index 317e9428b..047dbe81a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT -mcVersion = 1.21.6-pre3 -paperCommit = 6101c8af5bac6ba2b8ed6c50cf4d219ce3d07352 +mcVersion = 1.21.6-pre4 +paperCommit = 569c3231fb742fdd79af1d115398c1efae48bd90 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch index 64546e194..3854c7295 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4290,6 +_,86 @@ +@@ -4308,6 +_,86 @@ @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch index ed8da8e31..d720f9fa7 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -165,6 +_,14 @@ +@@ -164,6 +_,14 @@ .defaultsTo(new File[] {}) .describedAs("Jar file"); @@ -15,7 +15,7 @@ acceptsAll(asList("server-name"), "Name of the server") .withRequiredArg() .ofType(String.class) -@@ -224,7 +_,7 @@ +@@ -223,7 +_,7 @@ System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper } From b1d412fb40e88c4e9b24750efcfb4fd6c6f7d492 Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 10 Jun 2025 17:39:23 -0700 Subject: [PATCH 135/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@ba7fb23d Finish moving over to Holderable (#12646) --- gradle.properties | 2 +- .../org/bukkit/craftbukkit/entity/CraftVillager.java.patch | 2 +- .../java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index 9be207ddf..54db9641c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = 519e4224b1ba73a99c58c8fc53aab003eb6af37a +paperCommit = ba7fb23ddd2376079951d1e22f9204d1ed691585 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch index e5121d85f..88d5d7054 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -@@ -390,4 +_,11 @@ +@@ -258,4 +_,11 @@ public void restock() { getHandle().restock(); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch index 4d83946e7..0144ea2a4 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch @@ -1,9 +1,10 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -@@ -228,4 +_,15 @@ - return this.getKey().hashCode(); +@@ -135,4 +_,16 @@ + super(holder); } } ++ + // Purpur start - Configurable chance for wolves to spawn rabid + @Override + public boolean isRabid() { From 25d39e94edc23f338ee659655ab532ffb0d7e276 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 12 Jun 2025 16:34:46 -0700 Subject: [PATCH 136/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@8c313fb3 properly override removePassenger for happy ghast PaperMC/Paper@87d0fdd8 happy ghast is a vehicle PaperMC/Paper@a38aeef6 fix indices for horse inventories getItem PaperMC/Paper@96d739c1 rename RegistryFreezeEvent to RegistryComposeEvent PaperMC/Paper@1102e7b8 fix Equippable#shearSound PaperMC/Paper@f961ed57 update to rc1 PaperMC/Paper@c3467554 bump built-in datapack version --- gradle.properties | 4 ++-- .../src/main/java/org/bukkit/craftbukkit/Main.java.patch | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index 047dbe81a..b1ddbf99e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT -mcVersion = 1.21.6-pre4 -paperCommit = 569c3231fb742fdd79af1d115398c1efae48bd90 +mcVersion = 1.21.6-rc1 +paperCommit = c34675541790bbd245f0cee60793c006bdf773bc org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch index d720f9fa7..5de962abf 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/Main.java.patch @@ -5,14 +5,14 @@ .describedAs("Jar file"); + // Purpur start - Purpur config files -+ acceptsAll(asList("purpur", "purpur-settings"), "File for purpur settings") ++ this.acceptsAll(asList("purpur", "purpur-settings"), "File for purpur settings") + .withRequiredArg() + .ofType(File.class) + .defaultsTo(new File("purpur.yml")) + .describedAs("Yml file"); + // Purpur end - Purpur config files + - acceptsAll(asList("server-name"), "Name of the server") + this.accepts("server-name", "Name of the server") .withRequiredArg() .ofType(String.class) @@ -223,7 +_,7 @@ From 293e28a048aff420792c0d0aee709b039ca27d44 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 13 Jun 2025 19:21:39 -0700 Subject: [PATCH 137/289] use empty registryaccess where context is not needed, closes #1676 --- .../java/org/purpurmc/purpur/entity/PurpurStoredBee.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java b/purpur-server/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java index 1cd79edbe..800cc8b22 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/entity/PurpurStoredBee.java @@ -2,6 +2,7 @@ package org.purpurmc.purpur.entity; import io.papermc.paper.adventure.PaperAdventure; import net.kyori.adventure.text.Component; +import net.minecraft.core.RegistryAccess; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.block.entity.BeehiveBlockEntity; import net.minecraft.world.level.block.entity.BlockEntity; @@ -31,7 +32,7 @@ public class PurpurStoredBee implements StoredEntity { this.blockStorage = blockStorage; CompoundTag customData = handle.occupant.entityData().copyTag(); - net.minecraft.network.chat.Component customNameMinecraft = BlockEntity.parseCustomNameSafe(customData.get("CustomName"), ((CraftWorld) blockStorage.getWorld()).getHandle().registryAccess()); + net.minecraft.network.chat.Component customNameMinecraft = BlockEntity.parseCustomNameSafe(customData.get("CustomName"), RegistryAccess.EMPTY); this.customName = customNameMinecraft == null ? null : PaperAdventure.asAdventure(customNameMinecraft); if (customData.get("BukkitValues") instanceof CompoundTag compoundTag) { @@ -98,7 +99,7 @@ public class PurpurStoredBee implements StoredEntity { if(customName == null) { handle.occupant.entityData().copyTag().remove("CustomName"); } else { - handle.occupant.entityData().copyTag().putString("CustomName", net.minecraft.network.chat.Component.Serializer.toJson(PaperAdventure.asVanilla(customName), ((CraftWorld) blockStorage.getWorld()).getHandle().registryAccess())); + handle.occupant.entityData().copyTag().putString("CustomName", net.minecraft.network.chat.Component.Serializer.toJson(PaperAdventure.asVanilla(customName), RegistryAccess.EMPTY)); } } } From 452bb319db2549a3c2584606943c105b278aa9ba Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 13 Jun 2025 21:53:25 -0700 Subject: [PATCH 138/289] port PaperMC/Paper#12654, closes #1665 --- .../world/inventory/AbstractContainerMenu.java.patch | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch index bca7321cd..f1681845d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch @@ -8,3 +8,12 @@ // CraftBukkit start public boolean checkReachable = true; public abstract org.bukkit.inventory.InventoryView getBukkitView(); +@@ -552,7 +_,7 @@ + + slot.setChanged(); + // CraftBukkit start - Make sure the client has the right slot contents +- if (player instanceof ServerPlayer serverPlayer && slot.getMaxStackSize() != 64) { ++ if (player instanceof ServerPlayer serverPlayer && slot.getMaxStackSize() != net.minecraft.world.Container.MAX_STACK) { // Purpur - PaperPR#12654 + serverPlayer.connection.send(new net.minecraft.network.protocol.game.ClientboundContainerSetSlotPacket(this.containerId, this.incrementStateId(), slot.index, slot.getItem())); + // Updating a crafting inventory makes the client reset the result slot, have to send it again + if (this.getBukkitView().getType() == org.bukkit.event.inventory.InventoryType.WORKBENCH || this.getBukkitView().getType() == org.bukkit.event.inventory.InventoryType.CRAFTING) { From 849bc79cac217c4ee043f1d9104511354b49a9e0 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 13 Jun 2025 22:06:35 -0700 Subject: [PATCH 139/289] register test subcommands used for debugging, closes #1675 --- .../gametest/framework/TestCommand.java.patch | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/TestCommand.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/TestCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/TestCommand.java.patch new file mode 100644 index 000000000..f0d6efc60 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/TestCommand.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/gametest/framework/TestCommand.java ++++ b/net/minecraft/gametest/framework/TestCommand.java +@@ -455,7 +_,7 @@ + ) + ) + ); +- if (SharedConstants.IS_RUNNING_IN_IDE) { ++ if (org.purpurmc.purpur.PurpurConfig.registerMinecraftDebugCommands || SharedConstants.IS_RUNNING_IN_IDE) { // Purpur - register minecraft debug commands + literalArgumentBuilder = literalArgumentBuilder.then( + Commands.literal("export") + .then( From f85a67ed08b2884429f393b6842eb82a1cd15452 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 13 Jun 2025 22:32:12 -0700 Subject: [PATCH 140/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@b9a4ec08 tweak BlockStateListPopulator PaperMC/Paper@6fbb3846 tweak BlockStateListPopulator pt 2 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index b1ddbf99e..9af7d5647 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6-rc1 -paperCommit = c34675541790bbd245f0cee60793c006bdf773bc +paperCommit = 6fbb3846d72213e62e8cb241b4becafbed1b7e70 org.gradle.configuration-cache = true org.gradle.caching = true From 86c25932aba9be4708516a7b045ce31033f89f24 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 14 Jun 2025 15:51:01 +0000 Subject: [PATCH 141/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@dac59aca fix EntityPortalExitEvent handling PaperMC/Paper@084abd45 do not call BlockGrowEvent on each age grow for cactus PaperMC/Paper@d1f89b9c pass correct context to CraftChatMessage#toJSON --- gradle.properties | 2 +- .../minecraft-patches/features/0001-Ridables.patch | 8 ++++---- .../sources/net/minecraft/world/entity/Entity.java.patch | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gradle.properties b/gradle.properties index 9af7d5647..acd0abd97 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6-rc1 -paperCommit = 6fbb3846d72213e62e8cb241b4becafbed1b7e70 +paperCommit = d1f89b9c706621111039172d193c50875164041a org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index e4be598d8..8b96e8e27 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -75,7 +75,7 @@ index 014557e343d3ede351b3a2b950bb803d7e771490..628b1a5ac93d7cd1be8175aab88d2f5e if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 4857161d69150e4c63ca54728ea12c0a59927acb..afc3d54982818a7ae5d9f3c6bae9c84f2ca8b7f6 100644 +index 68ce2b0b2d193c712ec237ed2bccfa4561e2b489..e09bc76039127b518dcfa076d8b683134b781a1b 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -3303,6 +3303,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -107,7 +107,7 @@ index 4857161d69150e4c63ca54728ea12c0a59927acb..afc3d54982818a7ae5d9f3c6bae9c84f if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5389,4 +5404,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5398,4 +5413,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -1077,7 +1077,7 @@ index 354c7a41407fc6518965d09bfe3089676b6da794..a81ada76bfd6c4b49d1552f48e2009bc } } diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index 6e294ce65c8977db01ff1b9c8281c1c59ba156c0..d72af85b4605549aa73c7ef5956db30075325a16 100644 +index 24fdfda487bf5348c32707022719ec9907debc80..80517d5c7f074b62555d0991b0ad0678f585834f 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java @@ -120,6 +120,13 @@ public class HappyGhast extends Animal { @@ -4402,7 +4402,7 @@ index 4b9e60d930bc3a4bfe9aad2e81391e57cfc45d40..ddd3a0d629f720b7acacf01bf2a7db53 if (isFood && !this.isSilent()) { this.level() diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index b6f570c0140200ddaf29fe8334d6c1e729acf8a0..970eab5794263e40243f0527ab8be98252841fb0 100644 +index a621e08fe4f88fcfa8da83bc44b23fc2ffaa5918..543913b7e9e92ac43c2e557213a487140326a69e 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -60,6 +60,50 @@ public class Vex extends Monster implements TraceableEntity { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 9a2d5079a..ede1f4577 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -136,7 +136,7 @@ } public int getAirSupply() { -@@ -4147,7 +_,7 @@ +@@ -4156,7 +_,7 @@ // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -145,7 +145,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4672,6 +_,12 @@ +@@ -4681,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -158,7 +158,7 @@ // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { -@@ -5103,7 +_,7 @@ +@@ -5112,7 +_,7 @@ } public float maxUpStep() { From db7b854fabb1551776758158528f7b2b97c3ed17 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 15 Jun 2025 00:19:25 -0700 Subject: [PATCH 142/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@2f1c6f35 do not teleport player twice on first spawn PaperMC/Paper@889d78a3 Add registry builders for SoundEvent and JukeboxSong (#11805) PaperMC/Paper@6fddc93a keep original generics on now-deprecated freeze PaperMC/Paper@a5f209c6 Disable oldPaper base --- gradle.properties | 2 +- purpur-server/build.gradle.kts.patch | 25 ++++++++----------- .../0003-Barrels-and-enderchests-6-rows.patch | 4 +-- .../server/players/PlayerList.java.patch | 10 ++++---- 4 files changed, 18 insertions(+), 23 deletions(-) diff --git a/gradle.properties b/gradle.properties index acd0abd97..876d741fa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6-rc1 -paperCommit = d1f89b9c706621111039172d193c50875164041a +paperCommit = a5f209c60ebc70189918deda6b00ad152b11b3a0 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index 7e4ff9fe1..fd982018e 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -8,16 +8,10 @@ plugins { `java-library` -@@ -24,9 +_,21 @@ +@@ -24,6 +_,18 @@ minecraftVersion = providers.gradleProperty("mcVersion") gitFilePatches = false -- updatingMinecraft { -- oldPaperCommit = "a033e3b9ef78cfe85be807ac3fd1dd956274d4db" -+ //updatingMinecraft { -+ // oldPaperCommit = "a033e3b9ef78cfe85be807ac3fd1dd956274d4db" -+ //} -+ + // Purpur start - Rebrand + val purpur = forks.register("purpur") { + upstream.patchDir("paperServer") { @@ -26,13 +20,14 @@ + patchesDir = rootDirectory.dir("purpur-server/paper-patches") + outputDir = rootDirectory.dir("paper-server") + } - } ++ } + activeFork = purpur + // Purpur end - Rebrand - ++ spigot { enabled = false -@@ -109,7 +_,21 @@ + buildDataRef = "702e1a0a5072b2c4082371d5228cb30525687efc" +@@ -105,7 +_,21 @@ } } @@ -55,7 +50,7 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { extendsFrom(configurations.compileClasspath.get()) } -@@ -131,7 +_,7 @@ +@@ -127,7 +_,7 @@ } dependencies { @@ -64,7 +59,7 @@ implementation("ca.spottedleaf:concurrentutil:0.0.3") implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+ implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21 -@@ -159,6 +_,10 @@ +@@ -155,6 +_,10 @@ implementation("org.spongepowered:configurate-yaml:4.2.0-20250225.064233-199") implementation("org.spongepowered:configurate-core:4.2.0-20250225.064233-204") // Pinned dependency of above pinned yaml snapshot. @@ -75,7 +70,7 @@ // Deps that were previously in the API but have now been moved here for backwards compat, eventually to be removed runtimeOnly("commons-lang:commons-lang:2.6") runtimeOnly("org.xerial:sqlite-jdbc:3.49.1.0") -@@ -207,14 +_,14 @@ +@@ -203,14 +_,14 @@ val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim() attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", @@ -95,7 +90,7 @@ "Build-Number" to (build ?: ""), "Build-Time" to buildTime.toString(), "Git-Branch" to gitBranch, -@@ -273,7 +_,7 @@ +@@ -269,7 +_,7 @@ jvmArgumentProviders.add(provider) } @@ -104,7 +99,7 @@ idea { module { generatedSourceDirs.add(generatedDir.toFile()) -@@ -376,3 +_,43 @@ +@@ -372,3 +_,43 @@ classpath(tasks.createReobfPaperclipJar.flatMap { it.outputZip }) mainClass.set(null as String?) } diff --git a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch index be7a4921b..dcc55445d 100644 --- a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch +++ b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 5e8db3d74d4e2bd6e28042de67dde38b26768fc4..9e76257c195e46ef60a742144109a3947229cb6e 100644 +index 803d022cb325c850f830e2b52cd1917d230807de..5a31e11e72e80e5a5aef211a45370fb293dfd144 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -1041,6 +1041,27 @@ public abstract class PlayerList { +@@ -1036,6 +1036,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch index 9cc0386e8..bbd6ded29 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -406,7 +_,7 @@ +@@ -401,7 +_,7 @@ scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam); } // Paper end - Configurable player collision @@ -9,7 +9,7 @@ // Paper start - Send empty chunk, so players aren't stuck in the world loading screen with our chunk system not sending chunks when dead if (player.isDeadOrDying()) { net.minecraft.core.Holder plains = serverLevel.registryAccess().lookupOrThrow(net.minecraft.core.registries.Registries.BIOME) -@@ -513,6 +_,7 @@ +@@ -508,6 +_,7 @@ } public @Nullable net.kyori.adventure.text.Component remove(ServerPlayer player, net.kyori.adventure.text.Component leaveMessage) { // Paper end - Fix kick event leave message not being sent @@ -17,7 +17,7 @@ ServerLevel serverLevel = player.level(); player.awardStat(Stats.LEAVE_GAME); // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it -@@ -671,7 +_,7 @@ +@@ -666,7 +_,7 @@ // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameProfile) // ? Component.translatable("multiplayer.disconnect.server_full") // : null; @@ -26,7 +26,7 @@ event.disallow(org.bukkit.event.player.PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure } } -@@ -933,6 +_,20 @@ +@@ -928,6 +_,20 @@ } } @@ -47,7 +47,7 @@ public void broadcastAll(Packet packet, ResourceKey dimension) { for (ServerPlayer serverPlayer : this.players) { if (serverPlayer.level().dimension() == dimension) { -@@ -1017,6 +_,7 @@ +@@ -1012,6 +_,7 @@ } else { b = (byte)(24 + permLevel); } From a3c11d6845ae4a8b1cee0ee0d800e26adf5bfbff Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 15 Jun 2025 19:15:22 +0000 Subject: [PATCH 143/289] fix whitespace --- .../net/minecraft/server/players/PlayerList.java.patch | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch index bbd6ded29..4a7027564 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch @@ -1,14 +1,13 @@ --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -401,7 +_,7 @@ +@@ -401,6 +_,7 @@ scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam); } // Paper end - Configurable player collision -- PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), loggableAddress, player.getId(), serverLevel.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); -+ org.purpurmc.purpur.task.BossBarTask.addToAll(player); // Purpur - Implement TPSBarPlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), loggableAddress, player.getId(), serverLevel.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); ++ org.purpurmc.purpur.task.BossBarTask.addToAll(player); // Purpur - Implement TPSBar + PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), loggableAddress, player.getId(), serverLevel.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); // Paper start - Send empty chunk, so players aren't stuck in the world loading screen with our chunk system not sending chunks when dead if (player.isDeadOrDying()) { - net.minecraft.core.Holder plains = serverLevel.registryAccess().lookupOrThrow(net.minecraft.core.registries.Registries.BIOME) @@ -508,6 +_,7 @@ } public @Nullable net.kyori.adventure.text.Component remove(ServerPlayer player, net.kyori.adventure.text.Component leaveMessage) { From b228e3160de4fc8e4aaa78181ebb25aa44dd2c19 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 16 Jun 2025 20:32:44 -0700 Subject: [PATCH 144/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@47650100 Improve error messages when PluginRemapper fails to initialize (#12598) PaperMC/Paper@6f315356 Add MCUtil#toLocation from Folia PaperMC/Paper@2ba1675c Replace deprecated Thread#getId usage with Thread#threadId PaperMC/Paper@4eda045b Backport fix for MC-296337 (Fixes #12617) (#12619) PaperMC/Paper@7ebc94c2 Add Registry#getTagValues (#12603) PaperMC/Paper@e87320d5 Fix UOE when using generateTree with pale oak (#12616) PaperMC/Paper@94f29035 Do not blow up accessing unregistered memories from API (Fixes #12618) (#12639) PaperMC/Paper@03efecf0 Do not fire PlayerDropItemEvent for /give command PaperMC/Paper@3527ccdf feat: expose updateDemand and restock on Villager (#12608) PaperMC/Paper@320f25cb fix sponge-absorb deleting chest content (#12647) PaperMC/Paper@95565e0f Add missing attribute serialization updater PaperMC/Paper@519e4224 Fix infinite loop in RegionFile IO PaperMC/Paper@ba7fb23d Finish moving over to Holderable (#12646) PaperMC/Paper@39203a65 [ci/skip] Publish PR API and dev bundles (#12672) PaperMC/Paper@6f139cef 1.21.6 dev PaperMC/Paper@a0ef7661 tweak mob goal keys, generate missing api PaperMC/Paper@77834d34 Revert "fix sponge-absorb deleting chest content (#12647)" PaperMC/Paper@153080f9 Allow cache writes on main and dev branches PaperMC/Paper@9dcbf0a6 Throw exception for CraftMagicNumbers#getMappingsVersion (#12676) PaperMC/Paper@16fd59e0 [ci/skip] Fix test results event file --- gradle.properties | 2 +- purpur-api/build.gradle.kts.patch | 26 +------------------ .../org/bukkit/entity/Villager.java.patch | 6 ++--- .../0003-Barrels-and-enderchests-6-rows.patch | 4 +-- .../world/entity/npc/Villager.java.patch | 2 +- ...005-API-for-any-mob-to-burn-daylight.patch | 6 ++--- .../paper/entity/ai/MobGoalHelper.java.patch | 21 ++++++++------- .../entity/CraftLivingEntity.java.patch | 2 +- .../entity/CraftVillager.java.patch | 6 ++--- .../craftbukkit/entity/CraftWolf.java.patch | 4 +-- .../util/CraftMagicNumbers.java.patch | 2 +- 11 files changed, 29 insertions(+), 52 deletions(-) diff --git a/gradle.properties b/gradle.properties index 876d741fa..723fede32 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6-rc1 -paperCommit = a5f209c60ebc70189918deda6b00ad152b11b3a0 +paperCommit = 16fd59e06d232a648dd11e01635e320936eca300 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/build.gradle.kts.patch b/purpur-api/build.gradle.kts.patch index 7dc5f4924..755a5bb4e 100644 --- a/purpur-api/build.gradle.kts.patch +++ b/purpur-api/build.gradle.kts.patch @@ -28,7 +28,7 @@ } } } -@@ -165,16 +_,18 @@ +@@ -165,8 +_,10 @@ val services = objects.newInstance() tasks.withType { @@ -40,30 +40,6 @@ options.use() options.isDocFilesSubDirs = true options.links( - "https://guava.dev/releases/33.3.1-jre/api/docs/", -- "https://javadoc.io/doc/org.yaml/snakeyaml/2.2/", -- "https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", -- "https://javadoc.io/doc/org.joml/joml/1.10.8/", -- "https://www.javadoc.io/doc/com.google.code.gson/gson/2.11.0", -+ // "https://javadoc.io/doc/org.yaml/snakeyaml/2.2/", -+ // "https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", -+ // "https://javadoc.io/doc/org.joml/joml/1.10.8/", -+ // "https://www.javadoc.io/doc/com.google.code.gson/gson/2.11.0", - "https://jspecify.dev/docs/api/", - "https://jd.advntr.dev/api/$adventureVersion/", - "https://jd.advntr.dev/key/$adventureVersion/", -@@ -183,9 +_,9 @@ - "https://jd.advntr.dev/text-serializer-legacy/$adventureVersion/", - "https://jd.advntr.dev/text-serializer-plain/$adventureVersion/", - "https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/", -- "https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/", -+ // "https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/", - "https://logging.apache.org/log4j/2.x/javadoc/log4j-api/", -- "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3", -+ // "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3", - ) - options.tags("apiNote:a:API Note:") - @@ -199,11 +_,11 @@ } diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch index 083a0d057..55d5c2802 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Villager.java.patch @@ -1,9 +1,9 @@ --- a/src/main/java/org/bukkit/entity/Villager.java +++ b/src/main/java/org/bukkit/entity/Villager.java -@@ -391,4 +_,13 @@ - * reputation regardless of its impact and the player associated. +@@ -408,4 +_,13 @@ + * Demand is still updated even if all events are canceled. */ - public void clearReputations(); + public void restock(); + + // Purpur start + /** diff --git a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch index dcc55445d..d83757e95 100644 --- a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch +++ b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 803d022cb325c850f830e2b52cd1917d230807de..5a31e11e72e80e5a5aef211a45370fb293dfd144 100644 +index cc26f97e1e72eb077dc60691dadbcd5a52235c0d..1f03fb4c45f0cc97492d3821245cc4c758d258e1 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -1036,6 +1036,27 @@ public abstract class PlayerList { +@@ -1037,6 +1037,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch index 29dada8c0..be471e893 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch @@ -104,7 +104,7 @@ @@ -505,7 +_,7 @@ - private void updateDemand() { + public void updateDemand() { for (MerchantOffer merchantOffer : this.getOffers()) { - merchantOffer.updateDemand(); + merchantOffer.updateDemand(this.level().purpurConfig.villagerMinimumDemand); // Purpur - Configurable minimum demand for trades diff --git a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch index f9b172eb8..17ca1fc7f 100644 --- a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0005-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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index df23fbae231eca494131bf7ec78924669cd5e03d..834389b78d9342e96b3473c9cb6e40ca6cd4e46f 100644 +index d00238a0f39c5b19575cd0463b0b5da1f1db1a2e..55ae7d0a5b36ff10880d4e5fb1bb7f7724a743fd 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -120,6 +120,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -24,10 +24,10 @@ index df23fbae231eca494131bf7ec78924669cd5e03d..834389b78d9342e96b3473c9cb6e40ca 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 78846e0abe010997b6a5da04f2be4b5ffba5dd0a..5f30621d717bd0728ddc074072ab7a02c487b253 100644 +index 69d92e708bac7925ff30e403e94200236536b670..fc4fa99a993a017676da2be3cb254399d421bce1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1165,4 +1165,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1167,4 +1167,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public CombatTracker getCombatTracker() { return this.getHandle().getCombatTracker().paperCombatTracker; } diff --git a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch index 68250b56b..6bcd01ff5 100644 --- a/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java.patch @@ -1,13 +1,14 @@ --- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -@@ -27,6 +_,10 @@ - static { - // TODO these kinda should be checked on each release, in case obfuscation changes - deobfuscationMap.put("abstract_skeleton_1", "abstract_skeleton_melee"); -+ // Purpur start - Add option to disable zombie aggressiveness towards villagers -+ deobfuscationMap.put("zombie_1", "zombie_attack_villager"); -+ deobfuscationMap.put("drowned_1", "drowned_attack_villager"); -+ // Purpur end - Add option to disable zombie aggressiveness towards villagers +@@ -143,6 +_,11 @@ + private static final Map NESTED_CLASS_NAMES = Util.make(new HashMap<>(), map -> { + map.put("AbstractSkeleton$1", "AbstractSkeletonMelee"); - ignored.add("goal_selector_1"); - ignored.add("goal_selector_2"); ++ // Purpur start - Add option to disable zombie aggressiveness towards villagers ++ map.put("Zombie$1", "ZombieAttackVillager"); ++ map.put("Drowned$1", "DrownedAttackVillager"); ++ // Purpur end - Add option to disable zombie aggressiveness towards villagers ++ + // remove duplicate + map.put("TraderLlama$TraderLlamaDefendWanderingTraderGoal", "TraderLlamaDefendWanderingTraderGoal"); + map.put("AbstractIllager$RaiderOpenDoorGoal", "RaiderOpenDoorGoal"); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch index a73b21afb..fa1f1bdc9 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -513,7 +_,7 @@ +@@ -514,7 +_,7 @@ net.minecraft.server.level.ServerPlayer nmsKiller = killer == null ? null : ((CraftPlayer) killer).getHandle(); this.getHandle().setLastHurtByMob(nmsKiller); if (nmsKiller != null) { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch index d7511caa8..88d5d7054 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch @@ -1,8 +1,8 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -@@ -380,4 +_,11 @@ - public void clearReputations() { - getHandle().getGossips().gossips.clear(); +@@ -258,4 +_,11 @@ + public void restock() { + getHandle().restock(); } + + // Purpur start - Lobotomize stuck villagers diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch index 23e754ef4..c9d036471 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -@@ -91,6 +_,18 @@ +@@ -90,6 +_,18 @@ this.getHandle().setSoundVariant(CraftSoundVariant.bukkitToMinecraftHolder(soundVariant)); } @@ -16,6 +16,6 @@ + } + // Purpur end - Configurable chance for wolves to spawn rabid + - public static class CraftVariant implements Variant, Handleable { + public static class CraftVariant extends HolderableBase implements Variant { public static Variant minecraftToBukkit(WolfVariant minecraft) { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch index 32ef5cc86..2caad1ea9 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -491,7 +_,7 @@ +@@ -481,7 +_,7 @@ @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { From d6562a57ab06bd0d71c71ae6a2ee9f38e67415d5 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 16 Jun 2025 21:21:34 -0700 Subject: [PATCH 145/289] make happy ghast takes-damage-from-water and always-drop-exp options work --- ...oggle-for-water-sensitive-mob-damage.patch | 22 +++++++++++++++++-- .../0020-Mobs-always-drop-experience.patch | 22 +++++++++++++++++-- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch b/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch index 043ba8941..397650ace 100644 --- a/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch +++ b/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch @@ -175,6 +175,24 @@ index 07767c9d649e7ef2b8fd8e3ac62d99ce13271fe4..23e119ce82c3a0541b40249b20f133e3 @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); +diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java +index 136b918f053cacbc4fa60b0ed434619c5e07adf5..60073e503d6e52160e6d4e037b128bdeb6d56073 100644 +--- a/net/minecraft/world/entity/animal/HappyGhast.java ++++ b/net/minecraft/world/entity/animal/HappyGhast.java +@@ -147,6 +147,13 @@ public class HappyGhast extends Animal { + } + // Purpur end - Make entity breeding times configurable + ++ // Purpur start - Toggle for water sensitive mob damage ++ @Override ++ public boolean isSensitiveToWater() { ++ return this.level().purpurConfig.happyGhastTakeDamageFromWater; ++ } ++ // Purpur end - Toggle for water sensitive mob damage ++ + @Override + protected void ageBoundaryReached() { + if (this.isBaby()) { diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java index 1cb7e0985a59e83f118d4656e94a79f4d81836ff..006df1758bdaeb55a7db938afd9e00c575a62e60 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java @@ -1101,7 +1119,7 @@ index 4e300141b0c7fa967e3d0b9ef952097efeb2bef6..533801988cb4f8a916ef002a179990ca @Override diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index b5e0f1a2c3ca138cfa1cc4138cf1c5e76dcb9436..193994476a78d68d2ef45f7a354648ce347b0f55 100644 +index 48e193182861d5e5b5364b226493c665957bcc2f..30bd8a1b75376e6c74847ec338cc7f8988d6ca8a 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -112,6 +112,13 @@ public class Vex extends Monster implements TraceableEntity { @@ -1299,7 +1317,7 @@ index f52aba35ee7e202074cda8fb4dfd6a7d9ded1f09..f4893cc54d7f144025da0057beedb3a9 return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 3b78e25de462a6fc393175f7992b9a1d4d08c64b..6490b3791648f0680d44d6ca1e0d3b67df180997 100644 +index f46a105ac032d3c5a749e92cf004f6d74d0fb957..b71954a47e930bfc0c501c325697cd88166a190c 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -282,6 +282,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch index 732676310..6125c94ff 100644 --- a/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch +++ b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch @@ -166,6 +166,24 @@ index 23e119ce82c3a0541b40249b20f133e39fac6858..8964bb5098c0dc36741af3656af6bc0b @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); +diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java +index 60073e503d6e52160e6d4e037b128bdeb6d56073..b187c9db564e8fabc34aa1bfe428a00fafb27fec 100644 +--- a/net/minecraft/world/entity/animal/HappyGhast.java ++++ b/net/minecraft/world/entity/animal/HappyGhast.java +@@ -154,6 +154,13 @@ public class HappyGhast extends Animal { + } + // Purpur end - Toggle for water sensitive mob damage + ++ // Purpur start - Mobs always drop experience ++ @Override ++ protected boolean isAlwaysExperienceDropper() { ++ return this.level().purpurConfig.happyGhastAlwaysDropExp; ++ } ++ // Purpur end - Mobs always drop experience ++ + @Override + protected void ageBoundaryReached() { + if (this.isBaby()) { diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java index 006df1758bdaeb55a7db938afd9e00c575a62e60..8885ab56eb72c0106ef57359ca11f70c012fc348 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java @@ -1067,7 +1085,7 @@ index 533801988cb4f8a916ef002a179990ca913b2f32..fe31c4a45afd61be8b74efe9d0858ccd EntityType entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index 193994476a78d68d2ef45f7a354648ce347b0f55..7502f447610cd43dde465d3dc94d3a9682133a14 100644 +index 30bd8a1b75376e6c74847ec338cc7f8988d6ca8a..ab320cf5a8c68fd239e81172a2f3909a67931105 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -119,6 +119,13 @@ public class Vex extends Monster implements TraceableEntity { @@ -1265,7 +1283,7 @@ index f4893cc54d7f144025da0057beedb3a974c80dc1..70ee15527fa6f30783d6a58bb767b181 return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 6490b3791648f0680d44d6ca1e0d3b67df180997..baf72d0e5701cd234752988284e7fefba4c56380 100644 +index b71954a47e930bfc0c501c325697cd88166a190c..630ef56b5543b1d7a3d0526c132c19b93b217b16 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -289,6 +289,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler From 08d989b63af4caff82254c9bc2ec84e3c79fc192 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 16 Jun 2025 21:45:13 -0700 Subject: [PATCH 146/289] inline import --- .../minecraft/world/entity/monster/Shulker.java.patch | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch index d7b870f37..a64e3c08d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch @@ -1,13 +1,5 @@ --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -52,6 +_,7 @@ - import net.minecraft.world.level.ServerLevelAccessor; - import net.minecraft.world.level.block.Blocks; - import net.minecraft.world.level.block.state.BlockState; -+import net.minecraft.world.level.entity.EntityTypeTest; - import net.minecraft.world.level.gameevent.GameEvent; - import net.minecraft.world.level.storage.ValueInput; - import net.minecraft.world.level.storage.ValueOutput; @@ -94,6 +_,21 @@ this.lookControl = new Shulker.ShulkerLookControl(this); } @@ -42,7 +34,7 @@ + if ((!this.level().purpurConfig.shulkerSpawnFromBulletRequireOpenLid || !this.isClosed()) && this.teleportSomewhere()) { + float chance = this.level().purpurConfig.shulkerSpawnFromBulletBaseChance; + if (!this.level().purpurConfig.shulkerSpawnFromBulletNearbyEquation.isBlank()) { -+ int nearby = this.level().getEntities((EntityTypeTest) EntityType.SHULKER, boundingBox.inflate(this.level().purpurConfig.shulkerSpawnFromBulletNearbyRange), Entity::isAlive).size(); ++ int nearby = this.level().getEntities((net.minecraft.world.level.entity.EntityTypeTest) EntityType.SHULKER, boundingBox.inflate(this.level().purpurConfig.shulkerSpawnFromBulletNearbyRange), Entity::isAlive).size(); + try { + chance -= ((Number) scriptEngine.eval("let nearby = " + nearby + "; " + this.level().purpurConfig.shulkerSpawnFromBulletNearbyEquation)).floatValue(); + } catch (javax.script.ScriptException e) { From 61d7f5590e79909caba55e9f00cefdd51006d015 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 16 Jun 2025 22:05:39 -0700 Subject: [PATCH 147/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@39203a65 [ci/skip] Publish PR API and dev bundles (#12672) --- gradle.properties | 2 +- purpur-api/build.gradle.kts.patch | 26 +------------------------- 2 files changed, 2 insertions(+), 26 deletions(-) diff --git a/gradle.properties b/gradle.properties index 54db9641c..75b9e08cd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.5-R0.1-SNAPSHOT mcVersion = 1.21.5 -paperCommit = ba7fb23ddd2376079951d1e22f9204d1ed691585 +paperCommit = 39203a65e017bf83d83924d8e79c0af4a69232d5 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/build.gradle.kts.patch b/purpur-api/build.gradle.kts.patch index 7dc5f4924..755a5bb4e 100644 --- a/purpur-api/build.gradle.kts.patch +++ b/purpur-api/build.gradle.kts.patch @@ -28,7 +28,7 @@ } } } -@@ -165,16 +_,18 @@ +@@ -165,8 +_,10 @@ val services = objects.newInstance() tasks.withType { @@ -40,30 +40,6 @@ options.use() options.isDocFilesSubDirs = true options.links( - "https://guava.dev/releases/33.3.1-jre/api/docs/", -- "https://javadoc.io/doc/org.yaml/snakeyaml/2.2/", -- "https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", -- "https://javadoc.io/doc/org.joml/joml/1.10.8/", -- "https://www.javadoc.io/doc/com.google.code.gson/gson/2.11.0", -+ // "https://javadoc.io/doc/org.yaml/snakeyaml/2.2/", -+ // "https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", -+ // "https://javadoc.io/doc/org.joml/joml/1.10.8/", -+ // "https://www.javadoc.io/doc/com.google.code.gson/gson/2.11.0", - "https://jspecify.dev/docs/api/", - "https://jd.advntr.dev/api/$adventureVersion/", - "https://jd.advntr.dev/key/$adventureVersion/", -@@ -183,9 +_,9 @@ - "https://jd.advntr.dev/text-serializer-legacy/$adventureVersion/", - "https://jd.advntr.dev/text-serializer-plain/$adventureVersion/", - "https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/", -- "https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/", -+ // "https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/", - "https://logging.apache.org/log4j/2.x/javadoc/log4j-api/", -- "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3", -+ // "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3", - ) - options.tags("apiNote:a:API Note:") - @@ -199,11 +_,11 @@ } From baa196f5387c8d4d283cc43f8d8e12e85d706bc1 Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 17 Jun 2025 12:49:23 -0700 Subject: [PATCH 148/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@a24f9b20 1.21.6 dev PaperMC/Paper@457a0a69 Bump version string and protocol version to 1.21.6 release PaperMC/Paper@245b5473 Update base to 1.21.6 PaperMC/Paper@b28d77b3 Update Moonrise to 1.21.6 PaperMC/Paper@8318dcb7 Update DataConverter to 1.21.6-rc1 --- gradle.properties | 4 ++-- .../minecraft-patches/features/0001-Ridables.patch | 8 ++++---- .../0002-Configurable-entity-base-attributes.patch | 12 ++++++------ .../0017-Toggle-for-water-sensitive-mob-damage.patch | 4 ++-- .../features/0020-Mobs-always-drop-experience.patch | 4 ++-- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/gradle.properties b/gradle.properties index 723fede32..33d892331 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT -mcVersion = 1.21.6-rc1 -paperCommit = 16fd59e06d232a648dd11e01635e320936eca300 +mcVersion = 1.21.6 +paperCommit = 8318dcb74b18243caadc1b2824fdef2a2dba7a96 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 8b96e8e27..1cc9660c9 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -4055,10 +4055,10 @@ index 2b9a72b8742bf13c69df5ce0c905d47a92b9d8bc..b67ac487ce4a7fd8b2f62452ab0b87f4 this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.0); } else { diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index b45145051f936bb08941be1b3cd2790f73102352..7b04bf19ee575b9199cb65f0eb3f412a05acac08 100644 +index ff16e0dd78687f4c9a0bce5ede4eda30e2a06263..f37ba04ae0277152d93e3e585973d46c25e52395 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -110,12 +110,31 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -109,12 +109,31 @@ public class Shulker extends AbstractGolem implements Enemy { } // Purpur end - Shulker change color with dye @@ -4090,7 +4090,7 @@ index b45145051f936bb08941be1b3cd2790f73102352..7b04bf19ee575b9199cb65f0eb3f412a this.targetSelector.addGoal(1, new HurtByTargetGoal(this, this.getClass()).setAlertOthers()); this.targetSelector.addGoal(2, new Shulker.ShulkerNearestAttackGoal(this)); this.targetSelector.addGoal(3, new Shulker.ShulkerDefenseAttackGoal(this)); -@@ -719,7 +738,7 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -718,7 +737,7 @@ public class Shulker extends AbstractGolem implements Enemy { } } @@ -4969,7 +4969,7 @@ index 4a4cc7f9c95d4f4b6ad4948e3ed3504efbbcef15..f8a6aba7d6f0f357c72602f4ac6c2537 && this.level() == entity.level() && EntitySelector.NO_CREATIVE_OR_SPECTATOR.test(entity) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index bcd191dc713d426b0af739ad67953fa130d0898c..dc5622cbb9d6a3ba92db634d5572d3c1c16d2bf6 100644 +index ff4b73b83e96e0ac0b63922e6f72445cd96d2305..098dfbcf406040939e53ec212d3b433ab3b41291 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -250,6 +250,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch index 39587a943..e4676be04 100644 --- a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch +++ b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch @@ -202,7 +202,7 @@ index a81ada76bfd6c4b49d1552f48e2009bc7d8c71d2..869a0154c81593db8933f9daa6a7d3a9 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index 3154ba3c1786a607a9f6511288051889632764bf..801fc7e1a6ec56a6cde5b787daebe3c8c008cc93 100644 +index 80517d5c7f074b62555d0991b0ad0678f585834f..6c80c12313147fb022d1bb0c8694fcf85174ae7c 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java @@ -127,6 +127,19 @@ public class HappyGhast extends Animal { @@ -1354,10 +1354,10 @@ index b67ac487ce4a7fd8b2f62452ab0b87f4a55006f2..9e7b07f353fb8f0650b8805014c37136 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index 7b04bf19ee575b9199cb65f0eb3f412a05acac08..66f26ecce4f9d74c1b008b09c0eaf4b6ef4a177a 100644 +index f37ba04ae0277152d93e3e585973d46c25e52395..1782b1c8e03447d3d4e542f7066cb1af8acd8246 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -127,6 +127,14 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -126,6 +126,14 @@ public class Shulker extends AbstractGolem implements Enemy { } // Purpur end - Ridables @@ -1372,7 +1372,7 @@ index 7b04bf19ee575b9199cb65f0eb3f412a05acac08..66f26ecce4f9d74c1b008b09c0eaf4b6 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables -@@ -610,7 +618,7 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -609,7 +617,7 @@ public class Shulker extends AbstractGolem implements Enemy { @Override protected float sanitizeScale(float scale) { @@ -1533,7 +1533,7 @@ index ddd3a0d629f720b7acacf01bf2a7db53ee28724e..a68e9f3f96f37b6dd685fd02072f38b9 EntityType entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index 970eab5794263e40243f0527ab8be98252841fb0..b5e0f1a2c3ca138cfa1cc4138cf1c5e76dcb9436 100644 +index 543913b7e9e92ac43c2e557213a487140326a69e..48e193182861d5e5b5364b226493c665957bcc2f 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -104,6 +104,14 @@ public class Vex extends Monster implements TraceableEntity { @@ -1783,7 +1783,7 @@ index 4c8e49ba064241ec7ac505fa6f5df6d7f9c009b6..f52aba35ee7e202074cda8fb4dfd6a7d return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index dc5622cbb9d6a3ba92db634d5572d3c1c16d2bf6..b91c7bdfa4df80bf52ed714efc877a30cdcb3f36 100644 +index 098dfbcf406040939e53ec212d3b433ab3b41291..76f9abb9dbb11e1b5d404cd7a398c0e8ee103150 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -272,6 +272,14 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch b/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch index 397650ace..00d5670f6 100644 --- a/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch +++ b/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch @@ -989,10 +989,10 @@ index 23b6d3c9746e1ee641d8b19ec50805cb271a9cc9..d75df6de50f9830efeea826d0ebdac17 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index 66f26ecce4f9d74c1b008b09c0eaf4b6ef4a177a..decadd1844e197400e4130c2d4f8ef8622cfd7f6 100644 +index 1782b1c8e03447d3d4e542f7066cb1af8acd8246..9f6b05671c973e1262cbd6673aac7f1d3a74e2e3 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -135,6 +135,13 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -134,6 +134,13 @@ public class Shulker extends AbstractGolem implements Enemy { } // Purpur end - Configurable entity base attributes diff --git a/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch index 6125c94ff..cb13ab943 100644 --- a/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch +++ b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch @@ -959,10 +959,10 @@ index d75df6de50f9830efeea826d0ebdac17f56d4c4b..2b85cedf235e673d6030c2a649abf60b protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index decadd1844e197400e4130c2d4f8ef8622cfd7f6..2ace8aebd050e43582524c4a659132fef0e05be4 100644 +index 9f6b05671c973e1262cbd6673aac7f1d3a74e2e3..a46ca09f661a4f8f3ede6550d613e0c704a9389b 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -142,6 +142,13 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -141,6 +141,13 @@ public class Shulker extends AbstractGolem implements Enemy { } // Purpur end - Toggle for water sensitive mob damage From fdd1e9800db559f4f9480b7ccda313e92decc26f Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 17 Jun 2025 13:28:32 -0700 Subject: [PATCH 149/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@d2b1158e Set correct world access on BSL snapshots --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 33d892331..aa65ad2a0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6 -paperCommit = 8318dcb74b18243caadc1b2824fdef2a2dba7a96 +paperCommit = d2b1158e6c3563960f22579a0189a257711971e3 org.gradle.configuration-cache = true org.gradle.caching = true From 439f15db39cfc166859f198ba5b85169c6fc12d6 Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 17 Jun 2025 21:34:00 -0700 Subject: [PATCH 150/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@023e6c29 Ensure waypoints are per world PaperMC/Paper@40d5d31c Fix recursively converting JSON Text Components PaperMC/Paper@1fcc4162 Implement FeatureHooks#isChunkSent for Moonrise chunk system PaperMC/Paper@e4d7178a Implement WaypointTransmitter#isChunkVisible PaperMC/Paper@8980ead7 Directly walk text component after converting from JSON --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index aa65ad2a0..b6fff73b5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6 -paperCommit = d2b1158e6c3563960f22579a0189a257711971e3 +paperCommit = 8980ead7ea8dddf4a1a37de7fc5d0d6fe7f86a37 org.gradle.configuration-cache = true org.gradle.caching = true From 46a28b93bdb4a99d5f3eed7401d99665dfcf256d Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 17 Jun 2025 21:41:03 -0700 Subject: [PATCH 151/289] [ci skip] update version in README --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9da8b8a56..dfac71812 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.21.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.21.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.21.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.21.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.21.5-R0.1-SNAPSHOT + 1.21.6-R0.1-SNAPSHOT provided ``` @@ -80,7 +80,7 @@ repositories { ``` ```kotlin dependencies { - compileOnly("org.purpurmc.purpur:purpur-api:1.21.5-R0.1-SNAPSHOT") + compileOnly("org.purpurmc.purpur:purpur-api:1.21.6-R0.1-SNAPSHOT") } ``` From 162bd2883b33f39b55bed76247be38d133ee2396 Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 18 Jun 2025 18:20:38 -0700 Subject: [PATCH 152/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@5613ed6d Provide env environment variable and copy spigots sys prop for overriding default repository PaperMC/Paper@62b7f86d Avoid and discourage use of Maven Central as a CDN (#12689) PaperMC/Paper@f5534cb7 [ci/skip] Run generators (#12691) --- gradle.properties | 2 +- .../java/org/bukkit/plugin/java/LibraryLoader.java.patch | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index b6fff73b5..24aa49159 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6 -paperCommit = 8980ead7ea8dddf4a1a37de7fc5d0d6fe7f86a37 +paperCommit = f5534cb7c72733f193b535c9ff5eeacfae44992b org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch index f9c0e19bb..b25b382f7 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/plugin/java/LibraryLoader.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/plugin/java/LibraryLoader.java +++ b/src/main/java/org/bukkit/plugin/java/LibraryLoader.java -@@ -63,6 +_,7 @@ +@@ -66,6 +_,7 @@ session.setTransferListener(new AbstractTransferListener() { @Override public void transferStarted(@NotNull TransferEvent event) { @@ -8,7 +8,7 @@ logger.log(Level.INFO, "Downloading {0}", event.getResource().getRepositoryUrl() + event.getResource().getResourceName()); } }); -@@ -88,6 +_,7 @@ +@@ -91,6 +_,7 @@ // Paper end - plugin loader api return null; } @@ -16,7 +16,7 @@ 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 -@@ -140,6 +_,7 @@ +@@ -143,6 +_,7 @@ } jarFiles.add(url); From afcdf9bb72f88eb18266f5efd8c135904d82fd3d Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 21 Jun 2025 16:15:25 -0700 Subject: [PATCH 153/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@4781d28b Re-add Log4j Javadocs (#12693) PaperMC/Paper@74fbcce5 Check type of Material in get/set stats (#12607) PaperMC/Paper@4b3f967e Improve Fix MC-44654 (#12703) PaperMC/Paper@a7dd2635 Enable spigot obfuscation support (#12695) PaperMC/Paper@6a51c44e Cleanup Primed TNT Fix (#12704) PaperMC/Paper@839c6a18 Fix #11169 (#12706) PaperMC/Paper@c77d5f99 Fix MC-297591 PaperMC/Paper@219f86ee Implement chunk unload delay config option PaperMC/Paper@e4eb69b8 Do not allow ticket level decreases to be processed asynchronously PaperMC/Paper@71b0c768 Adds support for vanilla negative explosions (#12705) PaperMC/Paper@3750927a [ci/skip] Fix PermissionManager#clearPermissions() docs bad wording (#12657) PaperMC/Paper@d61a51e8 Add ItemType#getBurnDuration() (#12604) PaperMC/Paper@29fc8532 Allow empty paths in namespaced keys (#12687) PaperMC/Paper@4419afb9 fix: Safely handle nanosecond overflow in ClickCallback (#12686) PaperMC/Paper@56528821 Add `isProxyEnabled` method to ServerConfiguration (#12664) PaperMC/Paper@c0dda0ea Add `isForceDefaultGameMode` method (#12673) PaperMC/Paper@e714de63 Fix excess slot updates PaperMC/Paper@6d0821d2 [ci/skip] Fix docs for Spawner class and cleanup (#12710) PaperMC/Paper@cceffe3d Release ItemType and BlockType (#12708) PaperMC/Paper@186e9e33 Relocate CommandMap#registerServerAliases() call to after lifecycle events have been run (#12601) --- gradle.properties | 2 +- .../features/0002-Purpur-config-files.patch | 4 ++-- .../main/java/org/bukkit/Bukkit.java.patch | 2 +- .../main/java/org/bukkit/Server.java.patch | 2 +- purpur-server/build.gradle.kts.patch | 4 ++-- .../features/0001-Ridables.patch | 8 ++++---- ...fing-override-to-everything-affected.patch | 8 ++++---- .../server/MinecraftServer.java.patch | 16 +++++++-------- .../minecraft/world/entity/Entity.java.patch | 2 +- .../world/entity/item/PrimedTnt.java.patch | 2 +- .../AbstractContainerMenu.java.patch | 9 --------- .../world/level/ServerExplosion.java.patch | 20 +------------------ .../bukkit/craftbukkit/CraftServer.java.patch | 14 ++++++------- .../purpurmc/purpur/PurpurWorldConfig.java | 5 ----- 14 files changed, 33 insertions(+), 65 deletions(-) diff --git a/gradle.properties b/gradle.properties index 24aa49159..38d0548e4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6 -paperCommit = f5534cb7c72733f193b535c9ff5eeacfae44992b +paperCommit = 186e9e331b51ce359411a0a48f326d99af3348c2 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch b/purpur-api/paper-patches/features/0002-Purpur-config-files.patch index 0bf335843..9b6e4a61f 100644 --- a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch +++ b/purpur-api/paper-patches/features/0002-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 9da87512bad52379b374cb3634bc1878a28f3594..ff3c20a1b3a3179cc6dfe991653a4020fd505490 100644 +index a717d8db04ab278d653a5526166b9cc274c5870e..69c0ca1b0c0cdbc911ba3f053fafc5624539917d 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2380,6 +2380,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2387,6 +2387,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch index 2da19878c..4ffdeba93 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -3007,4 +_,133 @@ +@@ -3016,4 +_,133 @@ public static void restart() { server.restart(); } diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch index e3f800d27..ee82377e6 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2716,4 +_,111 @@ +@@ -2723,4 +_,111 @@ */ void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value); // Paper end - API to check if the server is sleeping diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index fd982018e..1276dc33c 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -25,8 +25,8 @@ + // Purpur end - Rebrand + spigot { - enabled = false - buildDataRef = "702e1a0a5072b2c4082371d5228cb30525687efc" + enabled = true + buildDataRef = "281ac0de7a76d808753ede97d11b034bc801b63d" @@ -105,7 +_,21 @@ } } diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 1cc9660c9..575ef64d1 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -18,10 +18,10 @@ index 61ab8b508d2b614d0f05ae4cc23dc214f8e95a1d..d6e8bd3b302f821b286b15db3d66c8b2 public boolean isClientAuthoritative() { return false; diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 67f988ab10e060e5b6f558d30f43ddf7dc332699..c6e5eb1bac6164a1323cf39fa215096d58fe2f1f 100644 +index 3a07d62d6f00bc261b0ac9edd039cdd4c6e20556..81c5d821ea566b738904ee8005d39f524ff92587 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1745,6 +1745,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent serverLevel.updateLagCompensationTick(); // Paper - lag compensation net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers @@ -75,7 +75,7 @@ index 014557e343d3ede351b3a2b950bb803d7e771490..628b1a5ac93d7cd1be8175aab88d2f5e if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 68ce2b0b2d193c712ec237ed2bccfa4561e2b489..e09bc76039127b518dcfa076d8b683134b781a1b 100644 +index 0e1c463d53c02454f0770f7ad547768f5ba0ca02..a2a7b927cb36ef8b1f98f452ea4169b8e2d540e9 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -3303,6 +3303,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -107,7 +107,7 @@ index 68ce2b0b2d193c712ec237ed2bccfa4561e2b489..e09bc76039127b518dcfa076d8b68313 if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5398,4 +5413,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5403,4 +5418,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter diff --git a/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch index c80a58dc6..d484b34f9 100644 --- a/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch +++ b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing override to everything affected diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 4f149e5e17d2d2f2964e2f6626e20f52121e72d9..a70fddd19b24bb25edde63e4fda4685ee6997eba 100644 +index c7071efb54381976890b28d99b15391130217f31..70808e9f092953a3edf7001b318c91228844f73c 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -1936,7 +1936,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -294,15 +294,15 @@ index 8c84cea43fc0e42a576004663670977eac99f1a6..6a0ec832226894687b28f35e1a8a190b // CraftBukkit end } diff --git a/net/minecraft/world/entity/raid/Raider.java b/net/minecraft/world/entity/raid/Raider.java -index df0753c89b7c613f2abac9c50ce7f897ba280803..3baba21d106ab09ae476238f2636169c371f43cf 100644 +index a495789b2d21fa9a24d5dca4ecfa196ddce49466..2254493c889b8967011c09dc448ba375d82e2035 100644 --- a/net/minecraft/world/entity/raid/Raider.java +++ b/net/minecraft/world/entity/raid/Raider.java @@ -401,7 +401,7 @@ public abstract class Raider extends PatrollingMonster { } private boolean cannotPickUpBanner() { -- if (!getServerLevel(this.mob).getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items -+ if (!getServerLevel(this.mob).getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING, this.mob.level().purpurConfig.pillagerMobGriefingOverride) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items // Purpur - Add mobGriefing override to everything affected +- if (!getServerLevel(this.mob).getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING)) return true; // Paper - respect game and entity rules for picking up items ++ if (!getServerLevel(this.mob).getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING, this.mob.level().purpurConfig.pillagerMobGriefingOverride)) return true; // Paper - respect game and entity rules for picking up items // Purpur - Add mobGriefing override to everything affected if (!this.mob.hasActiveRaid()) { return true; } else if (this.mob.getCurrentRaid().isOver()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch index c6efe0f37..934c7f900 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch @@ -26,7 +26,7 @@ public static S spin(Function threadFunction) { ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system -@@ -995,6 +_,15 @@ +@@ -996,6 +_,15 @@ LOGGER.info("Stopping server"); Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing @@ -42,7 +42,7 @@ // CraftBukkit start if (this.server != null) { this.server.spark.disable(); // Paper - spark -@@ -1093,6 +_,8 @@ +@@ -1094,6 +_,8 @@ this.safeShutdown(waitForServer, false); } public void safeShutdown(boolean waitForServer, boolean isRestarting) { @@ -51,7 +51,7 @@ this.isRestarting = isRestarting; this.hasLoggedStop = true; // Paper - Debugging if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging -@@ -1112,6 +_,7 @@ +@@ -1113,6 +_,7 @@ private static final long MAX_CATCHUP_BUFFER = TICK_TIME * TPS * 60L; private long lastTick = 0; private long catchupTime = 0; @@ -59,7 +59,7 @@ public final RollingAverage tps1 = new RollingAverage(60); public final RollingAverage tps5 = new RollingAverage(60 * 5); public final RollingAverage tps15 = new RollingAverage(60 * 15); -@@ -1197,6 +_,16 @@ +@@ -1198,6 +_,16 @@ } // Paper end - Add onboarding message for initial server start @@ -76,7 +76,7 @@ while (this.running) { long l; if (!this.isPaused() && this.tickRateManager.isSprinting() && this.tickRateManager.checkShouldSprintThisTick()) { -@@ -1221,14 +_,19 @@ +@@ -1222,14 +_,19 @@ if (++MinecraftServer.currentTick % MinecraftServer.SAMPLE_INTERVAL == 0) { final long diff = currentTime - tickSection; final java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP); @@ -99,7 +99,7 @@ tickSection = currentTime; } // Paper end - further improve server tick loop -@@ -1260,6 +_,12 @@ +@@ -1261,6 +_,12 @@ profilerFiller.popPush("nextTickWait"); this.mayHaveDelayedTasks = true; this.delayedTasksMaxNextTickTimeNanos = Math.max(Util.getNanos() + l, this.nextTickTimeNanos); @@ -112,7 +112,7 @@ this.startMeasuringTaskExecutionTime(); this.waitUntilNextTick(); this.finishMeasuringTaskExecutionTime(); -@@ -1690,7 +_,7 @@ +@@ -1691,7 +_,7 @@ long worldTime = level.getGameTime(); final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight); for (Player entityhuman : level.players()) { @@ -121,7 +121,7 @@ continue; } ServerPlayer entityplayer = (ServerPlayer) entityhuman; -@@ -1855,7 +_,7 @@ +@@ -1856,7 +_,7 @@ @DontObfuscate public String getServerModName() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index ede1f4577..a65e04502 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -158,7 +158,7 @@ // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { -@@ -5112,7 +_,7 @@ +@@ -5117,7 +_,7 @@ } public float maxUpStep() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch index 052ef78b6..39c0e7d9d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/item/PrimedTnt.java +++ b/net/minecraft/world/entity/item/PrimedTnt.java -@@ -253,4 +_,32 @@ +@@ -238,4 +_,32 @@ return !this.level().paperConfig().fixes.preventTntFromMovingInWater && super.isPushedByFluid(); } // Paper end - Option to prevent TNT from moving in water diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch index f1681845d..bca7321cd 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch @@ -8,12 +8,3 @@ // CraftBukkit start public boolean checkReachable = true; public abstract org.bukkit.inventory.InventoryView getBukkitView(); -@@ -552,7 +_,7 @@ - - slot.setChanged(); - // CraftBukkit start - Make sure the client has the right slot contents -- if (player instanceof ServerPlayer serverPlayer && slot.getMaxStackSize() != 64) { -+ if (player instanceof ServerPlayer serverPlayer && slot.getMaxStackSize() != net.minecraft.world.Container.MAX_STACK) { // Purpur - PaperPR#12654 - serverPlayer.connection.send(new net.minecraft.network.protocol.game.ClientboundContainerSetSlotPacket(this.containerId, this.incrementStateId(), slot.index, slot.getItem())); - // Updating a crafting inventory makes the client reset the result slot, have to send it again - if (this.getBukkitView().getType() == org.bukkit.event.inventory.InventoryType.WORKBENCH || this.getBukkitView().getType() == org.bukkit.event.inventory.InventoryType.CRAFTING) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch index a112829db..5fb2b122d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch @@ -1,24 +1,6 @@ --- a/net/minecraft/world/level/ServerExplosion.java +++ b/net/minecraft/world/level/ServerExplosion.java -@@ -316,7 +_,7 @@ - ) { - this.level = level; - this.source = source; -- this.radius = (float) Math.max(radius, 0.0); // CraftBukkit - clamp bad values -+ this.radius = (float) (level == null || level.purpurConfig.explosionClampRadius ? Math.max(radius, 0.0) : radius); // CraftBukkit - clamp bad values // Purpur - Config to remove explosion radius clamp - this.center = center; - this.fire = fire; - this.blockInteraction = blockInteraction; -@@ -638,7 +_,7 @@ - - public void explode() { - // CraftBukkit start -- if (this.radius < 0.1F) { -+ if ((this.level == null || this.level.purpurConfig.explosionClampRadius) && this.radius < 0.1F) { // Purpur - Config to remove explosion radius clamp - return; - } - // CraftBukkit end -@@ -650,6 +_,23 @@ +@@ -648,6 +_,23 @@ this.directMappedBlockCache = new ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache[BLOCK_EXPLOSION_CACHE_WIDTH * BLOCK_EXPLOSION_CACHE_WIDTH * BLOCK_EXPLOSION_CACHE_WIDTH]; this.mutablePos = new BlockPos.MutableBlockPos(); // Paper end - collision optimisations diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index 1995521bb..66191a05b 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -21,7 +21,7 @@ CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1073,6 +_,7 @@ +@@ -1072,6 +_,7 @@ org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -29,7 +29,7 @@ for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1088,6 +_,7 @@ +@@ -1087,6 +_,7 @@ } } world.spigotConfig.init(); // Spigot @@ -37,7 +37,7 @@ } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1105,6 +_,7 @@ +@@ -1104,6 +_,7 @@ org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -45,7 +45,7 @@ this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1604,6 +_,60 @@ +@@ -1603,6 +_,60 @@ return true; } @@ -106,7 +106,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -2967,6 +_,18 @@ +@@ -2971,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +125,7 @@ @Override public void restart() { CraftServer.this.restart(); -@@ -2999,6 +_,7 @@ +@@ -3003,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -133,7 +133,7 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3206,4 +_,18 @@ +@@ -3210,4 +_,18 @@ public void allowPausing(final Plugin plugin, final boolean value) { this.console.addPluginAllowingSleep(plugin.getName(), value); } diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 611847bd7..a03e166b4 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -257,11 +257,6 @@ public class PurpurWorldConfig { infinityWorksWithoutArrows = getBoolean("gameplay-mechanics.infinity-bow.works-without-arrows", infinityWorksWithoutArrows); } - public boolean explosionClampRadius = true; - private void explosionSettings() { - explosionClampRadius = getBoolean("gameplay-mechanics.clamp-explosion-radius", explosionClampRadius); - } - public List itemImmuneToCactus = new ArrayList<>(); public List itemImmuneToExplosion = new ArrayList<>(); public List itemImmuneToFire = new ArrayList<>(); From 4a5974cf3361bed81a341dd812081e0fae6e73d6 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 23 Jun 2025 20:42:22 -0700 Subject: [PATCH 154/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@5edcf6dd Cleanup/command dispatching (#12713) PaperMC/Paper@803baf0b Support hidden entities in Waypoints (#12715) PaperMC/Paper@1814d8b4 build: publish to fill (#12717) PaperMC/Paper@e454fef4 Add support for private constructors in plugin main classes (#12652) --- gradle.properties | 2 +- .../net/minecraft/commands/Commands.java.patch | 8 ++++---- .../bukkit/craftbukkit/CraftServer.java.patch | 16 ++++++++-------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/gradle.properties b/gradle.properties index 38d0548e4..e55b90010 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6 -paperCommit = 186e9e331b51ce359411a0a48f326d99af3348c2 +paperCommit = e454fef40e1e1e7a889327d3371fc7b5ff2b68df org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch index 3e54cc7b4..d1e4a9e22 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java -@@ -251,7 +_,7 @@ +@@ -252,7 +_,7 @@ JfrCommand.register(this.dispatcher); } @@ -9,7 +9,7 @@ RaidCommand.register(this.dispatcher, context); DebugPathCommand.register(this.dispatcher); DebugMobSpawningCommand.register(this.dispatcher); -@@ -279,6 +_,14 @@ +@@ -280,6 +_,14 @@ StopCommand.register(this.dispatcher); TransferCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); @@ -24,7 +24,7 @@ } if (selection.includeIntegrated) { -@@ -537,6 +_,7 @@ +@@ -502,6 +_,7 @@ private void runSync(ServerPlayer player, java.util.Collection bukkit, RootCommandNode rootCommandNode) { // Paper end - Perf: Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootCommandNode, true).callEvent(); // Paper - Brigadier API @@ -32,7 +32,7 @@ org.bukkit.event.player.PlayerCommandSendEvent event = new org.bukkit.event.player.PlayerCommandSendEvent(player.getBukkitEntity(), new java.util.LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -547,6 +_,8 @@ +@@ -512,6 +_,8 @@ } } // CraftBukkit end diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index 66191a05b..cc2432197 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -429,6 +_,20 @@ +@@ -428,6 +_,20 @@ this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager); this.pluginManager.paperPluginManager = this.paperPluginManager; // Paper end @@ -21,7 +21,7 @@ CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1072,6 +_,7 @@ +@@ -1045,6 +_,7 @@ org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -29,7 +29,7 @@ for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1087,6 +_,7 @@ +@@ -1060,6 +_,7 @@ } } world.spigotConfig.init(); // Spigot @@ -37,7 +37,7 @@ } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1104,6 +_,7 @@ +@@ -1077,6 +_,7 @@ org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -45,7 +45,7 @@ this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1603,6 +_,60 @@ +@@ -1576,6 +_,60 @@ return true; } @@ -106,7 +106,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -2971,6 +_,18 @@ +@@ -2944,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +125,7 @@ @Override public void restart() { CraftServer.this.restart(); -@@ -3003,6 +_,7 @@ +@@ -2976,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -133,7 +133,7 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3210,4 +_,18 @@ +@@ -3183,4 +_,18 @@ public void allowPausing(final Plugin plugin, final boolean value) { this.console.addPluginAllowingSleep(plugin.getName(), value); } From 3893bba083d4d2e2cc7e475e9239258e714f02be Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 23 Jun 2025 20:53:00 -0700 Subject: [PATCH 155/289] this is important... --- purpur-server/build.gradle.kts.patch | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index 1276dc33c..e714e5418 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -1,6 +1,6 @@ --- a/paper-server/build.gradle.kts +++ b/paper-server/build.gradle.kts -@@ -4,6 +_,7 @@ +@@ -5,6 +_,7 @@ import paper.libs.com.google.gson.annotations.SerializedName import java.time.Instant import kotlin.io.path.readText @@ -8,7 +8,7 @@ plugins { `java-library` -@@ -24,6 +_,18 @@ +@@ -26,6 +_,18 @@ minecraftVersion = providers.gradleProperty("mcVersion") gitFilePatches = false @@ -27,7 +27,7 @@ spigot { enabled = true buildDataRef = "281ac0de7a76d808753ede97d11b034bc801b63d" -@@ -105,7 +_,21 @@ +@@ -107,7 +_,21 @@ } } @@ -50,7 +50,7 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { extendsFrom(configurations.compileClasspath.get()) } -@@ -127,7 +_,7 @@ +@@ -129,7 +_,7 @@ } dependencies { @@ -59,7 +59,7 @@ implementation("ca.spottedleaf:concurrentutil:0.0.3") implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+ implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21 -@@ -155,6 +_,10 @@ +@@ -157,6 +_,10 @@ implementation("org.spongepowered:configurate-yaml:4.2.0-20250225.064233-199") implementation("org.spongepowered:configurate-core:4.2.0-20250225.064233-204") // Pinned dependency of above pinned yaml snapshot. @@ -70,7 +70,7 @@ // Deps that were previously in the API but have now been moved here for backwards compat, eventually to be removed runtimeOnly("commons-lang:commons-lang:2.6") runtimeOnly("org.xerial:sqlite-jdbc:3.49.1.0") -@@ -203,14 +_,14 @@ +@@ -205,14 +_,14 @@ val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim() attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", @@ -90,7 +90,7 @@ "Build-Number" to (build ?: ""), "Build-Time" to buildTime.toString(), "Git-Branch" to gitBranch, -@@ -269,7 +_,7 @@ +@@ -271,7 +_,7 @@ jvmArgumentProviders.add(provider) } @@ -99,7 +99,7 @@ idea { module { generatedSourceDirs.add(generatedDir.toFile()) -@@ -372,3 +_,43 @@ +@@ -374,6 +_,46 @@ classpath(tasks.createReobfPaperclipJar.flatMap { it.outputZip }) mainClass.set(null as String?) } @@ -143,3 +143,6 @@ +// +// return files.size +// } + + fill { + project("paper") From 47e758fb34a5dc8e7c81a99af74df6c0bf78ae42 Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 25 Jun 2025 17:14:55 -0700 Subject: [PATCH 156/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@d0e808f4 Move player to correct position in vehicle move packet handler PaperMC/Paper@46b4b0b8 Improve keepalive ping system PaperMC/Paper@38c1ddb5 Add and use FeatureHooks.getAllEntities PaperMC/Paper@2f083acb Ensure player entity schedulers are ticked when they are dead PaperMC/Paper@7c90c7c4 Optimise EntityScheduler ticking PaperMC/Paper@aa6ee44a Re-add global region scheduler tick erroneously removed in last commit PaperMC/Paper@d7510efc Fix #12722 (#12726) PaperMC/Paper@0caf75f8 Fix #12721 (#12725) PaperMC/Paper@bee28792 Adventure 4.23.0 (#12690) PaperMC/Paper@692e93a9 Fix MC-299110 PaperMC/Paper@ea10fa4a Don't mutate the position of Items for MC-4 Fix (#12702) PaperMC/Paper@aa6cd74c Remove unnecesary item check for ServerboundPlayerActionPacket RELEASE_USE_ITEM (#12668) PaperMC/Paper@c9e89f49 Expose arrow velocity in EntityShootBowEvent for mobs (#12688) PaperMC/Paper@7ec3174a Jump out of experimental phase PaperMC/Paper@4e1a2555 Update try catch for command handling --- gradle.properties | 2 +- .../features/0001-Ridables.patch | 18 ++--- ...-Minecart-settings-and-WASD-controls.patch | 4 +- ...018-API-for-any-mob-to-burn-daylight.patch | 6 +- .../minecraft/commands/Commands.java.patch | 4 +- .../server/MinecraftServer.java.patch | 4 +- .../server/level/ServerPlayer.java.patch | 24 +++---- .../ServerCommonPacketListenerImpl.java.patch | 66 +++++++++++-------- .../minecraft/world/entity/Entity.java.patch | 2 +- .../world/entity/item/ItemEntity.java.patch | 4 +- .../monster/AbstractSkeleton.java.patch | 12 ++-- .../features/0002-Ridables.patch | 6 +- ...0004-Add-EntityTeleportHinderedEvent.patch | 10 +-- ...005-API-for-any-mob-to-burn-daylight.patch | 4 +- .../bukkit/craftbukkit/CraftWorld.java.patch | 2 +- .../craftbukkit/entity/CraftEntity.java.patch | 2 +- .../craftbukkit/entity/CraftPlayer.java.patch | 6 +- 17 files changed, 92 insertions(+), 84 deletions(-) diff --git a/gradle.properties b/gradle.properties index e55b90010..c173a518c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6 -paperCommit = e454fef40e1e1e7a889327d3371fc7b5ff2b68df +paperCommit = 4e1a2555be7ff1e6960714ee7fbabc13fa25d4c2 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 575ef64d1..c0b8f4757 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -18,10 +18,10 @@ index 61ab8b508d2b614d0f05ae4cc23dc214f8e95a1d..d6e8bd3b302f821b286b15db3d66c8b2 public boolean isClientAuthoritative() { return false; diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 3a07d62d6f00bc261b0ac9edd039cdd4c6e20556..81c5d821ea566b738904ee8005d39f524ff92587 100644 +index ef5c6a760eb6e72beab186a315bd02e804c9ae53..306230339574bc35a309877033fa6012e4596f08 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1746,6 +1746,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent serverLevel.updateLagCompensationTick(); // Paper - lag compensation net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers @@ -42,10 +42,10 @@ index 83eff33884bffddfafc85eeb4a2900104a396e2e..3c7159d0981c948e71a5612ba4083acc @Override public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index cb8b23e04d9315c733856a2e2956cfbf5860d516..1ac6488820c569e84c5666ce58223b321dab7a39 100644 +index 63ef4690ff76df961fcc51dabd0f4f3d7de09fe9..7adb3d1f75896f1e31747e3356b124948a1c77c0 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -797,6 +797,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -861,6 +861,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.trackEnteredOrExitedLavaOnVehicle(); this.updatePlayerAttributes(); this.advancements.flushDirty(this, true); @@ -62,7 +62,7 @@ index cb8b23e04d9315c733856a2e2956cfbf5860d516..1ac6488820c569e84c5666ce58223b32 private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 014557e343d3ede351b3a2b950bb803d7e771490..628b1a5ac93d7cd1be8175aab88d2f5e29b60257 100644 +index 8a04052908fa53028b7d5a4619908d12b1e10766..79c3baf041cb7f10753d8a01ec03e95d5564f21b 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2844,6 +2844,8 @@ public class ServerGamePacketListenerImpl @@ -75,7 +75,7 @@ index 014557e343d3ede351b3a2b950bb803d7e771490..628b1a5ac93d7cd1be8175aab88d2f5e if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 0e1c463d53c02454f0770f7ad547768f5ba0ca02..a2a7b927cb36ef8b1f98f452ea4169b8e2d540e9 100644 +index 1d8ba25d542c49a687414a8b6d1d2fa16ca695d5..34e0fbef06b0c7aededf27fe9dc64f3f6f33e3ae 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -3303,6 +3303,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -107,7 +107,7 @@ index 0e1c463d53c02454f0770f7ad547768f5ba0ca02..a2a7b927cb36ef8b1f98f452ea4169b8 if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5403,4 +5418,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5398,4 +5413,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -3009,7 +3009,7 @@ index c4a2fb6f08e5d6d69571f448c6ac9defaac3fcd3..2c6158de44a8ba95d3c5124ed2827a0a public boolean isPowered() { diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java -index fa124fc779aaf7c1747a2007a2d5826cd4fde13a..caa018d1dd0b6e97ec9d3fa70bbffe9eb3b1edec 100644 +index 4e14f1a9ee22d08065a3e971c2aecc9363ebff13..352d0655374e05da787225c3fce8803fa547c99d 100644 --- a/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -73,12 +73,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -3731,7 +3731,7 @@ index 8d6def85583a111841b28f20f58ddb8b8cbd7bc1..0335e85f196363c06597812149e9a93c EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index ec090d191969983c31950b8376bbb36ee8fce922..304a1ce41071e5597859b1235fa014f966ff5cfb 100644 +index 7441b019f669653e3e738f27c866270c30acffd4..bb2649001f0b31676a51378745818d5c5b15c443 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -57,10 +57,28 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { diff --git a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch index b98b25d8b..e75ec1e8a 100644 --- a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch +++ b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 1ac6488820c569e84c5666ce58223b321dab7a39..853d54a28a348492372eb38b50b155a6644129e4 100644 +index 7adb3d1f75896f1e31747e3356b124948a1c77c0..a8d3db032f9a808419b4c3a3790c65a63a31ab9d 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -1206,6 +1206,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1270,6 +1270,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc } else { // Purpur start - Add boat fall damage config if (damageSource.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) { diff --git a/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch index 85ed6f5d2..82914d436 100644 --- a/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0018-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/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index d4f9a29cfbb59d557eef790ca07575187c99854b..068ce6f155abf3bda758f2bcdb4377836c610945 100644 +index 34e0fbef06b0c7aededf27fe9dc64f3f6f33e3ae..ce3e5ec505ac37c820436bcf7c7d6452ff015f70 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -542,6 +542,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -122,7 +122,7 @@ index e05cf29c630d43c66614012c50b9dd4ece4c44f6..b0a5f79eb2c3ea84fd37eaa653a4f2c8 @Override diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java -index caa018d1dd0b6e97ec9d3fa70bbffe9eb3b1edec..d69d5b575e93b4ae9a0e2b311352fd3790d464c6 100644 +index 352d0655374e05da787225c3fce8803fa547c99d..53ab51ffa5dd7d30a25f17dea0d9106bf30b49ba 100644 --- a/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -64,11 +64,12 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -168,7 +168,7 @@ index caa018d1dd0b6e97ec9d3fa70bbffe9eb3b1edec..d69d5b575e93b4ae9a0e2b311352fd37 super.aiStep(); } -@@ -242,14 +223,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -245,14 +226,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo protected void readAdditionalSaveData(ValueInput input) { super.readAdditionalSaveData(input); this.reassessWeaponGoal(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch index d1e4a9e22..8824ef4bc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch @@ -24,7 +24,7 @@ } if (selection.includeIntegrated) { -@@ -502,6 +_,7 @@ +@@ -504,6 +_,7 @@ private void runSync(ServerPlayer player, java.util.Collection bukkit, RootCommandNode rootCommandNode) { // Paper end - Perf: Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootCommandNode, true).callEvent(); // Paper - Brigadier API @@ -32,7 +32,7 @@ org.bukkit.event.player.PlayerCommandSendEvent event = new org.bukkit.event.player.PlayerCommandSendEvent(player.getBukkitEntity(), new java.util.LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -512,6 +_,8 @@ +@@ -514,6 +_,8 @@ } } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch index 934c7f900..6cfd1baa6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch @@ -112,7 +112,7 @@ this.startMeasuringTaskExecutionTime(); this.waitUntilNextTick(); this.finishMeasuringTaskExecutionTime(); -@@ -1691,7 +_,7 @@ +@@ -1689,7 +_,7 @@ long worldTime = level.getGameTime(); final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight); for (Player entityhuman : level.players()) { @@ -121,7 +121,7 @@ continue; } ServerPlayer entityplayer = (ServerPlayer) entityhuman; -@@ -1856,7 +_,7 @@ +@@ -1854,7 +_,7 @@ @DontObfuscate public String getServerModName() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index a03daa6d8..14617339c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -11,7 +11,7 @@ // Paper start - rewrite chunk system private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; -@@ -564,6 +_,10 @@ +@@ -628,6 +_,10 @@ this.respawnConfig = input.read("respawn", ServerPlayer.RespawnConfig.CODEC).orElse(null); this.spawnExtraParticlesOnFall = input.getBooleanOr("spawn_extra_particles_on_fall", false); this.raidOmenPosition = input.read("raid_omen_position", BlockPos.CODEC).orElse(null); @@ -22,7 +22,7 @@ } @Override -@@ -581,6 +_,9 @@ +@@ -645,6 +_,9 @@ output.storeNullable("raid_omen_position", BlockPos.CODEC, this.raidOmenPosition); this.saveEnderPearls(output); this.getBukkitEntity().setExtraData(output); // CraftBukkit @@ -32,7 +32,7 @@ } private void saveParentVehicle(ValueOutput output) { -@@ -1077,6 +_,7 @@ +@@ -1141,6 +_,7 @@ // Paper - moved up to sendClientboundPlayerCombatKillPacket() sendClientboundPlayerCombatKillPacket(event.getShowDeathMessages(), deathScreenMessage); // Paper - Expand PlayerDeathEvent Team team = this.getTeam(); @@ -40,7 +40,7 @@ if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) { this.server.getPlayerList().broadcastSystemMessage(deathMessage, false); } else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { -@@ -1183,6 +_,13 @@ +@@ -1247,6 +_,13 @@ if (this.isInvulnerableTo(level, damageSource)) { return false; } else { @@ -54,7 +54,7 @@ Entity entity = damageSource.getEntity(); if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. !(entity instanceof Player player && !this.canHarmPlayer(player)) -@@ -1427,6 +_,7 @@ +@@ -1491,6 +_,7 @@ serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -62,7 +62,7 @@ this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1543,7 +_,7 @@ +@@ -1607,7 +_,7 @@ new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), monster -> monster.isPreventingPlayerRest(this.level(), this) ); @@ -71,7 +71,7 @@ return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1580,7 +_,19 @@ +@@ -1644,7 +_,19 @@ CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); if (!this.level().canSleepThroughNights()) { @@ -92,7 +92,7 @@ } this.level().updateSleepingPlayerList(); -@@ -1672,6 +_,7 @@ +@@ -1736,6 +_,7 @@ @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -100,7 +100,7 @@ this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -1981,6 +_,26 @@ +@@ -2045,6 +_,26 @@ this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -127,7 +127,7 @@ @Override public void displayClientMessage(Component chatComponent, boolean actionBar) { this.sendSystemMessage(chatComponent, actionBar); -@@ -2199,6 +_,20 @@ +@@ -2263,6 +_,20 @@ ); } @@ -148,7 +148,7 @@ public void sendSystemMessage(Component mesage) { this.sendSystemMessage(mesage, false); } -@@ -2337,7 +_,67 @@ +@@ -2401,7 +_,67 @@ public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -217,7 +217,7 @@ public ServerStatsCounter getStats() { return this.stats; -@@ -2965,4 +_,56 @@ +@@ -3029,4 +_,56 @@ return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch index 9bc36e40b..18b73dfdc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch @@ -1,11 +1,16 @@ --- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -43,6 +_,7 @@ - private long keepAliveChallenge; +@@ -39,10 +_,11 @@ + public final Connection connection; // Paper + private final boolean transferred; + //private long keepAliveTime; // Paper - improve keepalives +- //private boolean keepAlivePending; // Paper - improve keepalives ++ private boolean keepAlivePending; // Paper - improve keepalives // Purpur - Alternative Keepalive Handling + //private long keepAliveChallenge; // Paper - improve keepalives private long closedListenerTime; private boolean closed = false; + private it.unimi.dsi.fastutil.longs.LongList keepAlives = new it.unimi.dsi.fastutil.longs.LongArrayList(); // Purpur - Alternative Keepalive Handling - private int latency; + private volatile int latency; // Paper - improve keepalives - make volatile private volatile boolean suspendFlushingOnServerThread = false; // CraftBukkit start @@ -53,6 +_,7 @@ @@ -16,24 +21,26 @@ public ServerCommonPacketListenerImpl(MinecraftServer server, Connection connection, CommonListenerCookie cookie, net.minecraft.server.level.ServerPlayer player) { // CraftBukkit this.server = server; -@@ -120,6 +_,16 @@ - - @Override - public void handleKeepAlive(ServerboundKeepAlivePacket packet) { +@@ -123,6 +_,18 @@ + // Paper start - improve keepalives + long now = System.nanoTime(); + net.minecraft.server.level.ServerPlayer.PendingKeepAlive pending = this.player.pendingKeepAlives.peek(); + // Purpur start - Alternative Keepalive Handling + if (org.purpurmc.purpur.PurpurConfig.useAlternateKeepAlive) { + if (this.keepAlivePending && !keepAlives.isEmpty() && keepAlives.contains(packet.getId())) { + int ping = (int) (Util.getMillis() - packet.getId()); -+ this.latency = (this.latency * 3 + ping) / 4; ++ int updatedLatency = (this.latency * 3 + ping) / 4; ++ this.latency = updatedLatency; + this.keepAlivePending = false; + keepAlives.clear(); // we got a valid response, lets roll with it and forget the rest + } ++ return; + } else + // Purpur end - Alternative Keepalive Handling - if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) { - int i = (int)(Util.getMillis() - this.keepAliveTime); - this.latency = (this.latency * 3 + i) / 4; -@@ -171,6 +_,12 @@ + if (pending != null && pending.challengeId() == packet.getId()) { + this.player.pendingKeepAlives.remove(pending); + +@@ -199,6 +_,12 @@ return; } @@ -46,26 +53,27 @@ if (identifier.equals(MINECRAFT_BRAND)) { this.player.clientBrandName = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256); } -@@ -250,6 +_,22 @@ - // 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 - final long elapsedTime = millis - this.keepAliveTime; -+ +@@ -276,6 +_,23 @@ + Profiler.get().push("keepAlive"); + long millis = Util.getMillis(); + // Paper start - improve keepalives + // Purpur start - Alternative Keepalive Handling + if (org.purpurmc.purpur.PurpurConfig.useAlternateKeepAlive) { -+ if (elapsedTime >= 1000L) { // 1 second -+ if (this.keepAlivePending && !this.processedDisconnect && keepAlives.size() * 1000L >= KEEPALIVE_LIMIT) { -+ this.disconnect(ServerCommonPacketListenerImpl.TIMEOUT_DISCONNECTION_MESSAGE, org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT); -+ } else if (this.checkIfClosed(millis)) { -+ this.keepAlivePending = true; -+ this.keepAliveTime = millis; // hijack this field for 1 second intervals -+ this.keepAlives.add(millis); // currentTime is ID -+ this.send(new ClientboundKeepAlivePacket(millis)); ++ if (this.checkIfClosed(millis) && !this.processedDisconnect) { ++ long currTime = System.nanoTime(); ++ if ((currTime - this.player.lastKeepAliveTx) >= java.util.concurrent.TimeUnit.SECONDS.toNanos(1L)) { // 1 second ++ this.player.lastKeepAliveTx = currTime; ++ if (this.keepAlivePending && !this.processedDisconnect && keepAlives.size() * 1000L >= KEEPALIVE_LIMIT) { ++ this.disconnect(ServerCommonPacketListenerImpl.TIMEOUT_DISCONNECTION_MESSAGE, org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT); ++ } else if (this.checkIfClosed(millis)) { ++ this.keepAlivePending = true; ++ this.keepAlives.add(millis); // currentTime is ID ++ this.send(new ClientboundKeepAlivePacket(millis)); ++ } + } + } + } else + // Purpur end - Alternative Keepalive Handling -+ - if (!this.isSingleplayerOwner() && elapsedTime >= 15000L) { // use vanilla's 15000L between keep alive packets - if (this.keepAlivePending) { - if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected + if (this.checkIfClosed(millis) && !this.processedDisconnect) { + long currTime = System.nanoTime(); + diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index a65e04502..ef0282cc6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -158,7 +158,7 @@ // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { -@@ -5117,7 +_,7 @@ +@@ -5107,7 +_,7 @@ } public float maxUpStep() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch index 64ea33eb8..4ed5565e9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch @@ -13,7 +13,7 @@ public ItemEntity(EntityType entityType, Level level) { super(entityType, level); -@@ -334,7 +_,16 @@ +@@ -342,7 +_,16 @@ @Override public final boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) { @@ -31,7 +31,7 @@ return false; } else if (!level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && damageSource.getEntity() instanceof Mob) { return false; -@@ -513,6 +_,12 @@ +@@ -521,6 +_,12 @@ public void setItem(ItemStack stack) { this.getEntityData().set(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/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch index af806331a..10ddc966a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch @@ -12,12 +12,12 @@ this.setItemSlot(EquipmentSlot.HEAD, new ItemStack(random.nextFloat() < 0.1F ? Blocks.JACK_O_LANTERN : Blocks.CARVED_PUMPKIN)); this.setDropChance(EquipmentSlot.HEAD, 0.0F); } -@@ -217,7 +_,7 @@ - if (event.getProjectile() == arrow.getBukkitEntity()) { - // CraftBukkit end - Projectile.spawnProjectileUsingShoot( +@@ -209,7 +_,7 @@ + double squareRoot = Math.sqrt(d * d + d2 * d2); + if (this.level() instanceof ServerLevel serverLevel) { + Projectile.Delayed delayedEntity = Projectile.spawnProjectileUsingShootDelayed( // Paper - delayed - arrow, serverLevel, projectile, d, d1 + squareRoot * 0.2F, d2, 1.6F, 14 - serverLevel.getDifficulty().getId() * 4 + arrow, serverLevel, projectile, d, d1 + squareRoot * 0.2F, d2, 1.6F, serverLevel.purpurConfig.skeletonBowAccuracyMap.getOrDefault(serverLevel.getDifficulty().getId(), (float) (14 - serverLevel.getDifficulty().getId() * 4)) // Purpur - skeleton bow accuracy option ); - } // CraftBukkit - } + + // Paper start - call EntityShootBowEvent diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index 5022ad19b..6473152ff 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 5fcfbb42c4491ee0878c87bd1724b9bfab57c128..7aaeafd5ee030d032d6e0574fc991942fac5eaa7 100644 +index af6420cdf988badaf70e8c075d2ab9b6a4935e88..edc1758f12b36555edb7eaba2ea3bd78118dda93 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1348,4 +1348,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1345,4 +1345,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.entity.get(io.papermc.paper.datacomponent.PaperDataComponentType.bukkitToMinecraft(type)) != null; } @@ -36,7 +36,7 @@ index 5fcfbb42c4491ee0878c87bd1724b9bfab57c128..7aaeafd5ee030d032d6e0574fc991942 + // Purpur end - Ridables } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 5ceb08265f883e6634f3f4189c74aa8395addd12..5d64ce696db99f4cefe2c74357b400e00a4ccf60 100644 +index c5daefa56597bd13fe227fa014ca5225c00a2a2d..98b766d115856dbf3ea11a983c1304591032f1b0 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -515,6 +515,15 @@ public class CraftEventFactory { diff --git a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch index 01db886a8..804dbf710 100644 --- a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0004-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/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 7aaeafd5ee030d032d6e0574fc991942fac5eaa7..df23fbae231eca494131bf7ec78924669cd5e03d 100644 +index edc1758f12b36555edb7eaba2ea3bd78118dda93..7a9e20699a8a5e95910ed15eb6cd1192b2df89cc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -309,6 +309,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -314,6 +314,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { boolean retainPassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS); // Don't allow teleporting between worlds while keeping passengers if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -29,10 +29,10 @@ index 7aaeafd5ee030d032d6e0574fc991942fac5eaa7..df23fbae231eca494131bf7ec7892466 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 91f56fffbced0599d77d39c6d1d8de78b960e58c..213afcae6bb02e4e340d5fa477bdddbb9434fc70 100644 +index 5fa91d288bd5bc3990f4416f9d30202d7379ccdd..7f17c5025f25e44a917f5d6a65b8d958a982b301 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1439,6 +1439,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1447,6 +1447,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper start - Teleport passenger API // Don't allow teleporting between worlds while keeping passengers if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -40,7 +40,7 @@ index 91f56fffbced0599d77d39c6d1d8de78b960e58c..213afcae6bb02e4e340d5fa477bdddbb return false; } -@@ -1460,6 +1461,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1468,6 +1469,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch index 17ca1fc7f..566477fb8 100644 --- a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0005-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/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index d00238a0f39c5b19575cd0463b0b5da1f1db1a2e..55ae7d0a5b36ff10880d4e5fb1bb7f7724a743fd 100644 +index 7a9e20699a8a5e95910ed15eb6cd1192b2df89cc..476eefebace887064b728f08af40c746b6f70787 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -120,6 +120,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -125,6 +125,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } // Purpur end - Fire Immunity API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch index eb9822cce..d71d7b310 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2370,6 +_,50 @@ +@@ -2374,6 +_,50 @@ return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch index ad9c0dbd1..b515f8d97 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -108,6 +_,18 @@ +@@ -113,6 +_,18 @@ this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index f35cdb6ea..9a51d99bc 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -617,10 +_,15 @@ +@@ -625,10 +_,15 @@ @Override public void setPlayerListName(String name) { @@ -17,7 +17,7 @@ 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)) { -@@ -2718,6 +_,28 @@ +@@ -2726,6 +_,28 @@ return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -46,7 +46,7 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3571,4 +_,76 @@ +@@ -3569,4 +_,76 @@ public void setDeathScreenScore(final int score) { getHandle().setScore(score); } From a4776d7bcd8c6a907674876756ba48d05261a360 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 26 Jun 2025 15:41:15 -0700 Subject: [PATCH 157/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@e382e687 Fix 0 yield on explosion events PaperMC/Paper@35b2c6ec Use dropped item for stats info (#12747) PaperMC/Paper@bd79e20c [ci/skip] PluginManager#getPlugin and PluginManager#isPluginEnabled are case-insensitive (#12723) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c173a518c..17b7957db 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6 -paperCommit = 4e1a2555be7ff1e6960714ee7fbabc13fa25d4c2 +paperCommit = bd79e20c6627faadad184bd2e6dbea31b35d32d0 org.gradle.configuration-cache = true org.gradle.caching = true From dfd8a7ad14f436ea9c4704a758305e7145923c2d Mon Sep 17 00:00:00 2001 From: MXU Date: Sun, 29 Jun 2025 16:00:59 +0100 Subject: [PATCH 158/289] Fix phantom going at high speed when ridden (#1680) --- .../minecraft-patches/features/0001-Ridables.patch | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index c0b8f4757..6184b7034 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -42,7 +42,7 @@ index 83eff33884bffddfafc85eeb4a2900104a396e2e..3c7159d0981c948e71a5612ba4083acc @Override public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 63ef4690ff76df961fcc51dabd0f4f3d7de09fe9..7adb3d1f75896f1e31747e3356b124948a1c77c0 100644 +index f292626a6ab2ae3f71f76aebdd2b4cf576183331..cb83141c70f28569d91df6553ae368bfacb9a0e2 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -861,6 +861,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -3813,7 +3813,7 @@ index 889c31cc9257fbbd5df8325ccee9ce39b026ec4b..4a1299d6cee2807522de0c2d0d4745c5 @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 2abb55d84507fd29817760cb0068dd083f7f1c37..855ec37a7e4110e37823ecf62f67f5cb3714f4bf 100644 +index 2abb55d84507fd29817760cb0068dd083f7f1c37..3b343c29b86292f5965a84bd180a7866e76bcac1 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -62,6 +62,52 @@ public class Phantom extends Mob implements Enemy { @@ -3907,7 +3907,7 @@ index 2abb55d84507fd29817760cb0068dd083f7f1c37..855ec37a7e4110e37823ecf62f67f5cb + this.setSpeed(speed); + Vec3 mot = this.getDeltaMovement(); + this.move(net.minecraft.world.entity.MoverType.SELF, mot.multiply(speed, speed, speed)); -+ this.setDeltaMovement(mot.scale(0.9D)); ++ this.setDeltaMovement(net.minecraft.world.phys.Vec3.ZERO); + } + // Purpur end - Ridables } From b1a30b1848102322efd0db2081748e8d44dc96f8 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 26 Jun 2025 15:56:02 -0700 Subject: [PATCH 159/289] prepare for update --- gradle.properties | 6 +-- .../framework/GameTestHelper.java.patch | 11 ----- .../ai/attributes/RangedAttribute.java.patch | 10 ---- .../AbstractContainerMenu.java.patch | 10 ---- .../inventory/ItemCombinerMenu.java.patch | 12 ----- .../item/ProjectileWeaponItem.java.patch | 11 ----- .../block/BaseCoralPlantTypeBlock.java.patch | 10 ---- .../level/block/BigDripleafBlock.java.patch | 11 ----- .../level/block/DragonEggBlock.java.patch | 10 ---- .../world/level/block/HayBlock.java.patch | 10 ---- .../world/level/block/KelpBlock.java.patch | 14 ------ .../0001-Ridables.patch | 0 ...-Configurable-entity-base-attributes.patch | 0 .../0003-Barrels-and-enderchests-6-rows.patch | 0 .../0004-Giants-AI-settings.patch | 0 .../0005-Chickens-can-retaliate.patch | 0 ...-Minecart-settings-and-WASD-controls.patch | 0 ...0007-Villagers-follow-emerald-blocks.patch | 0 .../0008-Implement-elytra-settings.patch | 0 .../0009-Configurable-jockey-options.patch | 0 ...ed-to-crystals-and-crystals-shoot-ph.patch | 0 .../0011-Phantoms-burn-in-light.patch | 0 ...e-entity-breeding-times-configurable.patch | 0 ...mes-from-item-forms-of-entities-to-e.patch | 0 ...Villager-Clerics-to-farm-Nether-Wart.patch | 0 ...fing-override-to-everything-affected.patch | 0 ...0016-Add-EntityTeleportHinderedEvent.patch | 0 ...oggle-for-water-sensitive-mob-damage.patch | 0 ...018-API-for-any-mob-to-burn-daylight.patch | 0 ...turally-aggressive-to-players-chance.patch | 0 .../0020-Mobs-always-drop-experience.patch | 0 .../activation/ActivationRange.java.patch | 12 ++++- .../net/minecraft/CrashReport.java.patch | 14 ++++-- .../commands/CommandSourceStack.java.patch | 18 +++++-- .../minecraft/commands/Commands.java.patch | 16 +++++-- .../selector/EntitySelector.java.patch | 12 ++++- .../net/minecraft/core/BlockPos.java.patch | 10 +++- .../dispenser/DispenseItemBehavior.java.patch | 10 +++- .../EquipmentDispenseItemBehavior.java.patch | 10 +++- .../framework/GameTestHelper.java.patch | 19 ++++++++ .../gametest/framework/TestCommand.java.patch | 10 +++- .../minecraft/network/Connection.java.patch | 10 +++- .../chat/SignedMessageChain.java.patch | 10 +++- .../net/minecraft/server/Main.java.patch | 10 +++- .../server/MinecraftServer.java.patch | 30 +++++++----- .../server/PlayerAdvancements.java.patch | 12 ++++- .../server/commands/EnchantCommand.java.patch | 12 ++++- .../commands/GameModeCommand.java.patch | 10 +++- .../server/commands/GiveCommand.java.patch | 10 +++- .../dedicated/DedicatedServer.java.patch | 16 +++++-- .../DedicatedServerProperties.java.patch | 10 +++- .../server/gui/MinecraftServerGui.java.patch | 31 +++++++----- .../server/gui/StatsComponent.java.patch | 10 +++- .../server/level/ServerLevel.java.patch | 37 +++++++++------ .../server/level/ServerPlayer.java.patch | 42 ++++++++++------- .../level/ServerPlayerGameMode.java.patch | 16 +++++-- .../server/level/WorldGenRegion.java.patch | 10 +++- .../ServerCommonPacketListenerImpl.java.patch | 18 +++++-- .../ServerGamePacketListenerImpl.java.patch | 38 +++++++++------ .../ServerLoginPacketListenerImpl.java.patch | 10 +++- .../ServerStatusPacketListenerImpl.java.patch | 10 +++- .../server/players/PlayerList.java.patch | 18 +++++-- .../server/players/SleepStatus.java.patch | 12 ++++- .../stats/ServerRecipeBook.java.patch | 10 +++- .../net/minecraft/util/StringUtil.java.patch | 10 +++- .../world/damagesource/CombatRules.java.patch | 12 ++++- .../damagesource/CombatTracker.java.patch | 12 ++++- .../damagesource/DamageSource.java.patch | 21 ++++++--- .../damagesource/DamageSources.java.patch | 20 +++++--- .../world/effect/HungerMobEffect.java.patch | 10 +++- .../world/effect/PoisonMobEffect.java.patch | 10 +++- .../effect/RegenerationMobEffect.java.patch | 10 +++- .../effect/SaturationMobEffect.java.patch | 10 +++- .../world/effect/WitherMobEffect.java.patch | 10 +++- .../minecraft/world/entity/Entity.java.patch | 38 +++++++++------ .../world/entity/EntitySelector.java.patch | 10 +++- .../world/entity/EntityType.java.patch | 14 ++++-- .../world/entity/ExperienceOrb.java.patch | 12 ++++- .../world/entity/GlowSquid.java.patch | 10 +++- .../world/entity/LivingEntity.java.patch | 47 +++++++++++-------- .../net/minecraft/world/entity/Mob.java.patch | 30 +++++++----- .../ai/attributes/RangedAttribute.java.patch | 18 +++++++ .../entity/ai/behavior/AcquirePoi.java.patch | 10 +++- .../ai/behavior/InteractWithDoor.java.patch | 14 ++++-- .../ai/behavior/ShowTradesToPlayer.java.patch | 10 +++- .../ai/goal/LlamaFollowCaravanGoal.java.patch | 12 ++++- .../ai/goal/RangedBowAttackGoal.java.patch | 10 +++- .../ai/goal/RunAroundLikeCrazyGoal.java.patch | 10 +++- .../world/entity/ai/goal/SwellGoal.java.patch | 10 +++- .../ai/sensing/NearestBedSensor.java.patch | 10 +++- .../targeting/TargetingConditions.java.patch | 10 +++- .../world/entity/ambient/Bat.java.patch | 12 ++++- .../entity/animal/AbstractCow.java.patch | 14 ++++-- .../world/entity/animal/Animal.java.patch | 12 ++++- .../world/entity/animal/Bee.java.patch | 22 ++++++--- .../world/entity/animal/Cat.java.patch | 12 ++++- .../world/entity/animal/Dolphin.java.patch | 16 +++++-- .../world/entity/animal/Fox.java.patch | 20 +++++--- .../world/entity/animal/IronGolem.java.patch | 16 +++++-- .../entity/animal/MushroomCow.java.patch | 10 +++- .../world/entity/animal/Ocelot.java.patch | 10 +++- .../world/entity/animal/Parrot.java.patch | 18 +++++-- .../world/entity/animal/Pig.java.patch | 10 +++- .../world/entity/animal/PolarBear.java.patch | 14 ++++-- .../world/entity/animal/Rabbit.java.patch | 10 +++- .../world/entity/animal/SnowGolem.java.patch | 14 ++++-- .../world/entity/animal/Squid.java.patch | 14 ++++-- .../entity/animal/WaterAnimal.java.patch | 10 +++- .../world/entity/animal/goat/Goat.java.patch | 10 +++- .../entity/animal/horse/Llama.java.patch | 18 +++++-- .../world/entity/animal/wolf/Wolf.java.patch | 24 ++++++---- .../boss/enderdragon/EndCrystal.java.patch | 14 ++++-- .../boss/enderdragon/EnderDragon.java.patch | 12 ++++- .../entity/boss/wither/WitherBoss.java.patch | 22 ++++++--- .../entity/decoration/ArmorStand.java.patch | 14 ++++-- .../world/entity/item/ItemEntity.java.patch | 14 ++++-- .../world/entity/item/PrimedTnt.java.patch | 10 +++- .../monster/AbstractSkeleton.java.patch | 12 ++++- .../world/entity/monster/Creeper.java.patch | 16 +++++-- .../world/entity/monster/Drowned.java.patch | 10 +++- .../world/entity/monster/EnderMan.java.patch | 22 ++++++--- .../world/entity/monster/Endermite.java.patch | 12 ++++- .../world/entity/monster/Monster.java.patch | 10 +++- .../world/entity/monster/Phantom.java.patch | 10 +++- .../world/entity/monster/Ravager.java.patch | 12 ++++- .../world/entity/monster/Shulker.java.patch | 14 ++++-- .../world/entity/monster/Skeleton.java.patch | 10 +++- .../world/entity/monster/Strider.java.patch | 10 +++- .../entity/monster/Vindicator.java.patch | 10 +++- .../world/entity/monster/Zombie.java.patch | 12 ++++- .../entity/monster/ZombieVillager.java.patch | 10 +++- .../entity/monster/ZombifiedPiglin.java.patch | 18 +++++-- .../entity/monster/piglin/PiglinAi.java.patch | 17 +++++-- .../world/entity/npc/CatSpawner.java.patch | 14 ++++-- .../world/entity/npc/Villager.java.patch | 24 ++++++---- .../entity/npc/WanderingTrader.java.patch | 14 ++++-- .../npc/WanderingTraderSpawner.java.patch | 10 +++- .../world/entity/player/Player.java.patch | 28 +++++++---- .../projectile/AbstractArrow.java.patch | 20 +++++--- .../entity/projectile/Snowball.java.patch | 15 ++++-- .../projectile/ThrownEnderpearl.java.patch | 12 ++++- .../projectile/ThrownTrident.java.patch | 10 +++- .../entity/projectile/WitherSkull.java.patch | 18 +++++-- .../world/entity/raid/Raids.java.patch | 14 ++++-- .../entity/vehicle/AbstractBoat.java.patch | 10 +++- .../vehicle/NewMinecartBehavior.java.patch | 10 +++- .../vehicle/OldMinecartBehavior.java.patch | 10 +++- .../minecraft/world/food/FoodData.java.patch | 12 ++++- .../world/food/FoodProperties.java.patch | 10 +++- .../AbstractContainerMenu.java.patch | 18 +++++++ .../inventory/AbstractFurnaceMenu.java.patch | 10 +++- .../world/inventory/AnvilMenu.java.patch | 26 ++++++---- .../world/inventory/ArmorSlot.java.patch | 10 +++- .../inventory/EnchantmentMenu.java.patch | 14 ++++-- .../world/inventory/GrindstoneMenu.java.patch | 18 +++++-- .../inventory/ItemCombinerMenu.java.patch | 20 ++++++++ .../minecraft/world/item/AxeItem.java.patch | 14 ++++-- .../minecraft/world/item/BlockItem.java.patch | 14 ++++-- .../minecraft/world/item/BowItem.java.patch | 14 ++++-- .../world/item/BucketItem.java.patch | 12 ++++- .../world/item/CrossbowItem.java.patch | 10 +++- .../minecraft/world/item/DyeColor.java.patch | 10 +++- .../minecraft/world/item/EggItem.java.patch | 10 +++- .../world/item/EndCrystalItem.java.patch | 10 +++- .../world/item/EnderpearlItem.java.patch | 12 ++++- .../minecraft/world/item/HoeItem.java.patch | 10 +++- .../minecraft/world/item/ItemStack.java.patch | 22 ++++++--- .../net/minecraft/world/item/Items.java.patch | 12 ++++- .../minecraft/world/item/MapItem.java.patch | 10 +++- .../world/item/NameTagItem.java.patch | 10 +++- .../item/ProjectileWeaponItem.java.patch | 19 ++++++++ .../world/item/ShovelItem.java.patch | 10 +++- .../world/item/SnowballItem.java.patch | 10 +++- .../world/item/SpawnEggItem.java.patch | 10 +++- .../world/item/ThrowablePotionItem.java.patch | 10 +++- .../world/item/TridentItem.java.patch | 12 ++++- ...arAllStatusEffectsConsumeEffect.java.patch | 10 +++- .../world/item/crafting/Ingredient.java.patch | 12 ++++- .../enchantment/EnchantmentHelper.java.patch | 10 +++- .../enchantment/ItemEnchantments.java.patch | 14 ++++-- .../item/trading/MerchantOffer.java.patch | 10 +++- .../world/level/BaseSpawner.java.patch | 10 +++- .../world/level/EntityGetter.java.patch | 10 +++- .../minecraft/world/level/Level.java.patch | 14 ++++-- .../world/level/NaturalSpawner.java.patch | 10 +++- .../world/level/ServerExplosion.java.patch | 10 +++- .../world/level/block/AnvilBlock.java.patch | 10 +++- .../world/level/block/AzaleaBlock.java.patch | 10 +++- .../block/BaseCoralPlantTypeBlock.java.patch | 18 +++++++ .../world/level/block/BedBlock.java.patch | 14 ++++-- .../level/block/BigDripleafBlock.java.patch | 19 ++++++++ .../world/level/block/Block.java.patch | 23 +++++---- .../world/level/block/Blocks.java.patch | 12 ++++- .../level/block/BubbleColumnBlock.java.patch | 10 +++- .../world/level/block/CactusBlock.java.patch | 14 ++++-- .../world/level/block/CakeBlock.java.patch | 10 +++- .../level/block/CampfireBlock.java.patch | 10 +++- .../level/block/CarvedPumpkinBlock.java.patch | 12 ++++- .../level/block/CauldronBlock.java.patch | 10 +++- .../level/block/CaveVinesBlock.java.patch | 10 +++- .../block/ChangeOverTimeBlock.java.patch | 10 +++- .../world/level/block/ChestBlock.java.patch | 10 +++- .../level/block/ComposterBlock.java.patch | 20 +++++--- .../world/level/block/CoralBlock.java.patch | 10 +++- .../world/level/block/CropBlock.java.patch | 12 ++++- .../world/level/block/DoorBlock.java.patch | 12 ++++- .../level/block/DragonEggBlock.java.patch | 18 +++++++ .../block/EnchantingTableBlock.java.patch | 10 +++- .../world/level/block/FarmBlock.java.patch | 14 ++++-- .../block/GrowingPlantHeadBlock.java.patch | 18 +++++-- .../world/level/block/HayBlock.java.patch | 18 +++++++ .../world/level/block/IceBlock.java.patch | 12 ++++- .../world/level/block/KelpBlock.java.patch | 22 +++++++++ .../world/level/block/LiquidBlock.java.patch | 14 ++++-- .../world/level/block/MagmaBlock.java.patch | 10 +++- .../level/block/NetherPortalBlock.java.patch | 12 ++++- .../level/block/NetherWartBlock.java.patch | 12 ++++- .../world/level/block/NoteBlock.java.patch | 10 +++- .../level/block/ObserverBlock.java.patch | 10 +++- .../block/PointedDripstoneBlock.java.patch | 10 +++- .../level/block/PoweredRailBlock.java.patch | 10 +++- .../level/block/RespawnAnchorBlock.java.patch | 10 +++- .../level/block/SculkShriekerBlock.java.patch | 10 +++- .../world/level/block/SlabBlock.java.patch | 10 +++- .../level/block/SnowLayerBlock.java.patch | 10 +++- .../world/level/block/SpawnerBlock.java.patch | 14 ++++-- .../world/level/block/SpongeBlock.java.patch | 14 ++++-- .../level/block/StonecutterBlock.java.patch | 10 +++- .../level/block/SugarCaneBlock.java.patch | 12 ++++- .../level/block/TurtleEggBlock.java.patch | 12 ++++- .../level/block/TwistingVinesBlock.java.patch | 10 +++- .../level/block/VegetationBlock.java.patch | 10 +++- .../level/block/WeepingVinesBlock.java.patch | 10 +++- .../level/block/WitherSkullBlock.java.patch | 10 +++- .../AbstractFurnaceBlockEntity.java.patch | 12 ++++- .../block/entity/BeaconBlockEntity.java.patch | 16 +++++-- .../entity/BeehiveBlockEntity.java.patch | 14 ++++-- .../level/block/entity/BlockEntity.java.patch | 14 ++++-- .../entity/ConduitBlockEntity.java.patch | 16 +++++-- .../EnchantingTableBlockEntity.java.patch | 14 ++++-- .../block/entity/SignBlockEntity.java.patch | 18 +++++-- .../piston/PistonStructureResolver.java.patch | 14 ++++-- .../chunk/storage/EntityStorage.java.patch | 10 +++- .../storage/RegionFileStorage.java.patch | 10 +++- .../levelgen/DensityFunctions.java.patch | 10 +++- .../level/levelgen/PhantomSpawner.java.patch | 12 ++++- .../level/material/FlowingFluid.java.patch | 18 +++++-- .../world/level/material/LavaFluid.java.patch | 18 +++++-- .../level/material/WaterFluid.java.patch | 10 +++- .../pathfinder/WalkNodeEvaluator.java.patch | 12 ++++- .../world/level/portal/PortalShape.java.patch | 10 +++- .../maps/MapItemSavedData.java.patch | 10 +++- .../EnchantedCountIncreaseFunction.java.patch | 10 +++- .../net/minecraft/world/phys/AABB.java.patch | 10 +++- 254 files changed, 2477 insertions(+), 692 deletions(-) delete mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch delete mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch delete mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch delete mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch delete mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch delete mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch delete mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch delete mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch delete mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch delete mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch rename purpur-server/minecraft-patches/{features => unapplied-features}/0001-Ridables.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0002-Configurable-entity-base-attributes.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0003-Barrels-and-enderchests-6-rows.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0004-Giants-AI-settings.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0005-Chickens-can-retaliate.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0006-Minecart-settings-and-WASD-controls.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0007-Villagers-follow-emerald-blocks.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0008-Implement-elytra-settings.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0009-Configurable-jockey-options.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0011-Phantoms-burn-in-light.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0012-Make-entity-breeding-times-configurable.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0015-Add-mobGriefing-override-to-everything-affected.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0016-Add-EntityTeleportHinderedEvent.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0017-Toggle-for-water-sensitive-mob-damage.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0018-API-for-any-mob-to-burn-daylight.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0019-Cows-naturally-aggressive-to-players-chance.patch (100%) rename purpur-server/minecraft-patches/{features => unapplied-features}/0020-Mobs-always-drop-experience.patch (100%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/io/papermc/paper/entity/activation/ActivationRange.java.patch (67%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/CrashReport.java.patch (67%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/commands/CommandSourceStack.java.patch (74%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/commands/Commands.java.patch (83%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/commands/arguments/selector/EntitySelector.java.patch (85%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/core/BlockPos.java.patch (53%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch (77%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch (62%) create mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/GameTestHelper.java.patch rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/gametest/framework/TestCommand.java.patch (54%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/network/Connection.java.patch (71%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/network/chat/SignedMessageChain.java.patch (68%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/Main.java.patch (72%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/MinecraftServer.java.patch (83%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/PlayerAdvancements.java.patch (73%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/commands/EnchantCommand.java.patch (75%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/commands/GameModeCommand.java.patch (69%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/commands/GiveCommand.java.patch (59%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/dedicated/DedicatedServer.java.patch (81%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch (56%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/gui/MinecraftServerGui.java.patch (84%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/gui/StatsComponent.java.patch (63%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/level/ServerLevel.java.patch (88%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/level/ServerPlayer.java.patch (88%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/level/ServerPlayerGameMode.java.patch (83%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/level/WorldGenRegion.java.patch (50%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch (83%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch (91%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch (70%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch (59%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/players/PlayerList.java.patch (83%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/server/players/SleepStatus.java.patch (73%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/stats/ServerRecipeBook.java.patch (60%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/util/StringUtil.java.patch (52%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/damagesource/CombatRules.java.patch (69%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/damagesource/CombatTracker.java.patch (79%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/damagesource/DamageSource.java.patch (85%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/damagesource/DamageSources.java.patch (73%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/effect/HungerMobEffect.java.patch (62%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/effect/PoisonMobEffect.java.patch (63%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/effect/RegenerationMobEffect.java.patch (57%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/effect/SaturationMobEffect.java.patch (67%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/effect/WitherMobEffect.java.patch (51%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/Entity.java.patch (82%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/EntitySelector.java.patch (62%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/EntityType.java.patch (72%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ExperienceOrb.java.patch (77%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/GlowSquid.java.patch (50%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/LivingEntity.java.patch (85%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/Mob.java.patch (71%) create mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch (73%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch (80%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch (52%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch (63%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch (53%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch (71%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch (66%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch (68%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch (59%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/ambient/Bat.java.patch (67%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/AbstractCow.java.patch (89%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Animal.java.patch (82%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Bee.java.patch (79%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Cat.java.patch (70%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Dolphin.java.patch (81%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Fox.java.patch (75%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/IronGolem.java.patch (75%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/MushroomCow.java.patch (67%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Ocelot.java.patch (56%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Parrot.java.patch (74%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Pig.java.patch (69%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/PolarBear.java.patch (78%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Rabbit.java.patch (73%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/SnowGolem.java.patch (81%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/Squid.java.patch (80%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/WaterAnimal.java.patch (64%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/goat/Goat.java.patch (57%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/horse/Llama.java.patch (67%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/animal/wolf/Wolf.java.patch (89%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch (84%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch (58%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch (76%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/decoration/ArmorStand.java.patch (76%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/item/ItemEntity.java.patch (81%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/item/PrimedTnt.java.patch (78%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch (75%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Creeper.java.patch (86%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Drowned.java.patch (83%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/EnderMan.java.patch (81%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Endermite.java.patch (74%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Monster.java.patch (68%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Phantom.java.patch (62%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Ravager.java.patch (73%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Shulker.java.patch (83%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Skeleton.java.patch (87%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Strider.java.patch (68%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Vindicator.java.patch (58%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/Zombie.java.patch (82%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/ZombieVillager.java.patch (68%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch (66%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch (72%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/npc/CatSpawner.java.patch (77%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/npc/Villager.java.patch (85%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/npc/WanderingTrader.java.patch (69%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch (72%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/player/Player.java.patch (85%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/projectile/AbstractArrow.java.patch (69%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/projectile/Snowball.java.patch (85%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch (76%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/projectile/ThrownTrident.java.patch (63%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/projectile/WitherSkull.java.patch (64%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/raid/Raids.java.patch (80%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch (51%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch (62%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch (65%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/food/FoodData.java.patch (75%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/food/FoodProperties.java.patch (66%) create mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch (64%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/inventory/AnvilMenu.java.patch (92%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/inventory/ArmorSlot.java.patch (62%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/inventory/EnchantmentMenu.java.patch (79%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/inventory/GrindstoneMenu.java.patch (89%) create mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/AxeItem.java.patch (90%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/BlockItem.java.patch (79%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/BowItem.java.patch (78%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/BucketItem.java.patch (69%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/CrossbowItem.java.patch (63%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/DyeColor.java.patch (55%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/EggItem.java.patch (72%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/EndCrystalItem.java.patch (60%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/EnderpearlItem.java.patch (78%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/HoeItem.java.patch (82%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/ItemStack.java.patch (78%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/Items.java.patch (78%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/MapItem.java.patch (54%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/NameTagItem.java.patch (64%) create mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/ShovelItem.java.patch (74%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/SnowballItem.java.patch (72%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/SpawnEggItem.java.patch (84%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/ThrowablePotionItem.java.patch (71%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/TridentItem.java.patch (75%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch (62%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/crafting/Ingredient.java.patch (60%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch (84%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch (78%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/item/trading/MerchantOffer.java.patch (59%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/BaseSpawner.java.patch (53%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/EntityGetter.java.patch (58%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/Level.java.patch (85%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/NaturalSpawner.java.patch (65%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/ServerExplosion.java.patch (80%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/AnvilBlock.java.patch (89%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/AzaleaBlock.java.patch (70%) create mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/BedBlock.java.patch (73%) create mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/Block.java.patch (85%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/Blocks.java.patch (59%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/BubbleColumnBlock.java.patch (67%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/CactusBlock.java.patch (80%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/CakeBlock.java.patch (59%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/CampfireBlock.java.patch (52%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch (78%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/CauldronBlock.java.patch (60%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/CaveVinesBlock.java.patch (52%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch (52%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/ChestBlock.java.patch (50%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/ComposterBlock.java.patch (81%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/CoralBlock.java.patch (54%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/CropBlock.java.patch (78%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/DoorBlock.java.patch (74%) create mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DragonEggBlock.java.patch rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/EnchantingTableBlock.java.patch (68%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/FarmBlock.java.patch (83%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch (77%) create mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/HayBlock.java.patch rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/IceBlock.java.patch (65%) create mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/KelpBlock.java.patch rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/LiquidBlock.java.patch (71%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/MagmaBlock.java.patch (57%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/NetherPortalBlock.java.patch (66%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/NetherWartBlock.java.patch (81%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/NoteBlock.java.patch (59%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/ObserverBlock.java.patch (54%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch (73%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/PoweredRailBlock.java.patch (51%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch (62%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/SculkShriekerBlock.java.patch (57%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/SlabBlock.java.patch (73%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/SnowLayerBlock.java.patch (56%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/SpawnerBlock.java.patch (90%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/SpongeBlock.java.patch (80%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/StonecutterBlock.java.patch (63%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/SugarCaneBlock.java.patch (78%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/TurtleEggBlock.java.patch (82%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/TwistingVinesBlock.java.patch (50%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/VegetationBlock.java.patch (78%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/WeepingVinesBlock.java.patch (50%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/WitherSkullBlock.java.patch (59%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch (71%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch (73%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch (76%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/entity/BlockEntity.java.patch (74%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch (85%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch (67%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch (88%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch (65%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch (56%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch (68%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/levelgen/DensityFunctions.java.patch (63%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch (85%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/material/FlowingFluid.java.patch (62%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/material/LavaFluid.java.patch (57%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/material/WaterFluid.java.patch (56%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch (70%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/portal/PortalShape.java.patch (64%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch (50%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch (64%) rename purpur-server/minecraft-patches/{sources => unapplied-sources}/net/minecraft/world/phys/AABB.java.patch (54%) diff --git a/gradle.properties b/gradle.properties index 17b7957db..ea05e73dd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = org.purpurmc.purpur -version = 1.21.6-R0.1-SNAPSHOT +version = 1.21.7-R0.1-SNAPSHOT -mcVersion = 1.21.6 -paperCommit = bd79e20c6627faadad184bd2e6dbea31b35d32d0 +mcVersion = 1.21.7-rc2 +paperCommit = ef647a83012adc91d30af24334e716ccc5b1b26c org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch deleted file mode 100644 index 870429942..000000000 --- a/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/net/minecraft/gametest/framework/GameTestHelper.java -+++ b/net/minecraft/gametest/framework/GameTestHelper.java -@@ -292,6 +_,8 @@ - return gameType; - } - -+ public void setAfk(final boolean afk) {} // Purpur - AFK API -+ - @Override - public boolean isClientAuthoritative() { - return false; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch deleted file mode 100644 index 4cd99d012..000000000 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/net/minecraft/world/entity/ai/attributes/RangedAttribute.java -+++ b/net/minecraft/world/entity/ai/attributes/RangedAttribute.java -@@ -29,6 +_,7 @@ - - @Override - public double sanitizeValue(double value) { -+ if (!org.purpurmc.purpur.PurpurConfig.clampAttributes) return Double.isNaN(value) ? this.minValue : value; // Purpur - Add attribute clamping and armor limit config - return Double.isNaN(value) ? this.minValue : Mth.clamp(value, this.minValue, this.maxValue); - } - } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch deleted file mode 100644 index bca7321cd..000000000 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/net/minecraft/world/inventory/AbstractContainerMenu.java -+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java -@@ -65,6 +_,7 @@ - @Nullable - private ContainerSynchronizer synchronizer; - private boolean suppressRemoteUpdates; -+ @Nullable protected ItemStack activeQuickItem = null; // Purpur - Anvil API - // CraftBukkit start - public boolean checkReachable = true; - public abstract org.bukkit.inventory.InventoryView getBukkitView(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch deleted file mode 100644 index 9899e30a5..000000000 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- a/net/minecraft/world/inventory/ItemCombinerMenu.java -+++ b/net/minecraft/world/inventory/ItemCombinerMenu.java -@@ -156,7 +_,9 @@ - return ItemStack.EMPTY; - } - -+ this.activeQuickItem = itemStack; // Purpur - Anvil API - slot.onTake(player, item); -+ this.activeQuickItem = null; // Purpur - Anvil API - } - - return itemStack; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch deleted file mode 100644 index 76145281c..000000000 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/net/minecraft/world/item/ProjectileWeaponItem.java -+++ b/net/minecraft/world/item/ProjectileWeaponItem.java -@@ -109,6 +_,8 @@ - abstractArrow.setCritArrow(true); - } - -+ abstractArrow.setActualEnchantments(weapon.getEnchantments()); // Purpur - Add an option to fix MC-3304 projectile looting -+ - return abstractArrow; - } - diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch deleted file mode 100644 index fd6497469..000000000 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java -+++ b/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java -@@ -39,6 +_,7 @@ - } - - protected static boolean scanForWater(BlockState state, BlockGetter level, BlockPos pos) { -+ if (!((net.minecraft.world.level.LevelAccessor) level).getMinecraftWorld().purpurConfig.coralDieOutsideWater) return true; // Purpur - Config to not let coral die - if (state.getValue(WATERLOGGED)) { - return true; - } else { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch deleted file mode 100644 index 20fb7e9e1..000000000 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/net/minecraft/world/level/block/BigDripleafBlock.java -+++ b/net/minecraft/world/level/block/BigDripleafBlock.java -@@ -254,7 +_,7 @@ - playTiltSound(level, pos, sound); - } - -- int _int = DELAY_UNTIL_NEXT_TILT_STATE.getInt(tilt); -+ int _int = level.purpurConfig.bigDripleafTiltDelay.getOrDefault(tilt, -1); // Purpur - Big dripleaf tilt delay - if (_int != -1) { - level.scheduleTick(pos, this, _int); - } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch deleted file mode 100644 index d08f61da6..000000000 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/net/minecraft/world/level/block/DragonEggBlock.java -+++ b/net/minecraft/world/level/block/DragonEggBlock.java -@@ -46,6 +_,7 @@ - } - - private void teleport(BlockState state, Level level, BlockPos pos) { -+ if (!level.purpurConfig.dragonEggTeleport) return; // Purpur - Option to disable dragon egg teleporting - WorldBorder worldBorder = level.getWorldBorder(); - - for (int i = 0; i < 1000; i++) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch deleted file mode 100644 index 1b21c6e0a..000000000 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/net/minecraft/world/level/block/HayBlock.java -+++ b/net/minecraft/world/level/block/HayBlock.java -@@ -23,6 +_,6 @@ - - @Override - public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { -- entity.causeFallDamage(fallDistance, 0.2F, level.damageSources().fall()); -+ super.fallOn(level, state, pos, entity, fallDistance); // Purpur - Configurable block fall damage modifiers - } - } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch deleted file mode 100644 index b0ce9ac1a..000000000 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- a/net/minecraft/world/level/block/KelpBlock.java -+++ b/net/minecraft/world/level/block/KelpBlock.java -@@ -72,4 +_,11 @@ - protected FluidState getFluidState(BlockState state) { - return Fluids.WATER.getSource(false); - } -+ -+ // Purpur start - kelp vines configurable max growth age -+ @Override -+ public int getMaxGrowthAge() { -+ return org.purpurmc.purpur.PurpurConfig.kelpMaxGrowthAge; -+ } -+ // Purpur end - kelp vines configurable max growth age - } diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/unapplied-features/0001-Ridables.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0001-Ridables.patch rename to purpur-server/minecraft-patches/unapplied-features/0001-Ridables.patch diff --git a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch b/purpur-server/minecraft-patches/unapplied-features/0002-Configurable-entity-base-attributes.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch rename to purpur-server/minecraft-patches/unapplied-features/0002-Configurable-entity-base-attributes.patch diff --git a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/minecraft-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch rename to purpur-server/minecraft-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch diff --git a/purpur-server/minecraft-patches/features/0004-Giants-AI-settings.patch b/purpur-server/minecraft-patches/unapplied-features/0004-Giants-AI-settings.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0004-Giants-AI-settings.patch rename to purpur-server/minecraft-patches/unapplied-features/0004-Giants-AI-settings.patch diff --git a/purpur-server/minecraft-patches/features/0005-Chickens-can-retaliate.patch b/purpur-server/minecraft-patches/unapplied-features/0005-Chickens-can-retaliate.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0005-Chickens-can-retaliate.patch rename to purpur-server/minecraft-patches/unapplied-features/0005-Chickens-can-retaliate.patch diff --git a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch b/purpur-server/minecraft-patches/unapplied-features/0006-Minecart-settings-and-WASD-controls.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch rename to purpur-server/minecraft-patches/unapplied-features/0006-Minecart-settings-and-WASD-controls.patch diff --git a/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch b/purpur-server/minecraft-patches/unapplied-features/0007-Villagers-follow-emerald-blocks.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch rename to purpur-server/minecraft-patches/unapplied-features/0007-Villagers-follow-emerald-blocks.patch diff --git a/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch b/purpur-server/minecraft-patches/unapplied-features/0008-Implement-elytra-settings.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch rename to purpur-server/minecraft-patches/unapplied-features/0008-Implement-elytra-settings.patch diff --git a/purpur-server/minecraft-patches/features/0009-Configurable-jockey-options.patch b/purpur-server/minecraft-patches/unapplied-features/0009-Configurable-jockey-options.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0009-Configurable-jockey-options.patch rename to purpur-server/minecraft-patches/unapplied-features/0009-Configurable-jockey-options.patch diff --git a/purpur-server/minecraft-patches/features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/purpur-server/minecraft-patches/unapplied-features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to purpur-server/minecraft-patches/unapplied-features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch diff --git a/purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch b/purpur-server/minecraft-patches/unapplied-features/0011-Phantoms-burn-in-light.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch rename to purpur-server/minecraft-patches/unapplied-features/0011-Phantoms-burn-in-light.patch diff --git a/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch b/purpur-server/minecraft-patches/unapplied-features/0012-Make-entity-breeding-times-configurable.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch rename to purpur-server/minecraft-patches/unapplied-features/0012-Make-entity-breeding-times-configurable.patch diff --git a/purpur-server/minecraft-patches/features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch b/purpur-server/minecraft-patches/unapplied-features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to purpur-server/minecraft-patches/unapplied-features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch diff --git a/purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/purpur-server/minecraft-patches/unapplied-features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to purpur-server/minecraft-patches/unapplied-features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch diff --git a/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch b/purpur-server/minecraft-patches/unapplied-features/0015-Add-mobGriefing-override-to-everything-affected.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch rename to purpur-server/minecraft-patches/unapplied-features/0015-Add-mobGriefing-override-to-everything-affected.patch diff --git a/purpur-server/minecraft-patches/features/0016-Add-EntityTeleportHinderedEvent.patch b/purpur-server/minecraft-patches/unapplied-features/0016-Add-EntityTeleportHinderedEvent.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0016-Add-EntityTeleportHinderedEvent.patch rename to purpur-server/minecraft-patches/unapplied-features/0016-Add-EntityTeleportHinderedEvent.patch diff --git a/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch b/purpur-server/minecraft-patches/unapplied-features/0017-Toggle-for-water-sensitive-mob-damage.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch rename to purpur-server/minecraft-patches/unapplied-features/0017-Toggle-for-water-sensitive-mob-damage.patch diff --git a/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/unapplied-features/0018-API-for-any-mob-to-burn-daylight.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch rename to purpur-server/minecraft-patches/unapplied-features/0018-API-for-any-mob-to-burn-daylight.patch diff --git a/purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch b/purpur-server/minecraft-patches/unapplied-features/0019-Cows-naturally-aggressive-to-players-chance.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch rename to purpur-server/minecraft-patches/unapplied-features/0019-Cows-naturally-aggressive-to-players-chance.patch diff --git a/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/unapplied-features/0020-Mobs-always-drop-experience.patch similarity index 100% rename from purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch rename to purpur-server/minecraft-patches/unapplied-features/0020-Mobs-always-drop-experience.patch diff --git a/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch b/purpur-server/minecraft-patches/unapplied-sources/io/papermc/paper/entity/activation/ActivationRange.java.patch similarity index 67% rename from purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/io/papermc/paper/entity/activation/ActivationRange.java.patch index e0eadeef9..b54f0f43d 100644 --- a/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/io/papermc/paper/entity/activation/ActivationRange.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/io/papermc/paper/entity/activation/ActivationRange.java b/io/papermc/paper/entity/activation/ActivationRange.java +index ae2bb9a73106febfe5f0d090abd4252bbb5fd27e..ca21597263cb430e2a5ae07e8cecfb0d53a270d2 100644 --- a/io/papermc/paper/entity/activation/ActivationRange.java +++ b/io/papermc/paper/entity/activation/ActivationRange.java -@@ -147,6 +_,8 @@ +@@ -147,6 +147,8 @@ public final class ActivationRange { continue; } @@ -9,7 +17,7 @@ final int worldHeight = world.getHeight(); ActivationRange.maxBB = player.getBoundingBox().inflate(maxRange, worldHeight, maxRange); ActivationType.MISC.boundingBox = player.getBoundingBox().inflate(miscActivationRange, worldHeight, miscActivationRange); -@@ -288,6 +_,7 @@ +@@ -288,6 +290,7 @@ public final class ActivationRange { * @return */ public static boolean checkIfActive(final Entity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/CrashReport.java.patch similarity index 67% rename from purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/CrashReport.java.patch index 52cafd0d1..4304eaae7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/CrashReport.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/CrashReport.java b/net/minecraft/CrashReport.java +index 3e0e88afcf010d9a3d46e48bca5cbdf98fe97544..394443d00e661715439be1e56dddc129947699a4 100644 --- a/net/minecraft/CrashReport.java +++ b/net/minecraft/CrashReport.java -@@ -30,6 +_,7 @@ +@@ -30,6 +30,7 @@ public class CrashReport { private boolean trackingStackTrace = true; private StackTraceElement[] uncategorizedStackTrace = new StackTraceElement[0]; private final SystemReport systemReport = new SystemReport(); @@ -8,7 +16,7 @@ public CrashReport(String title, Throwable exception) { io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(exception); // Paper -@@ -130,7 +_,7 @@ +@@ -130,7 +131,7 @@ public class CrashReport { } public String getFriendlyReport(ReportType type) { @@ -17,7 +25,7 @@ } @Nullable -@@ -161,7 +_,7 @@ +@@ -161,7 +162,7 @@ public class CrashReport { } public boolean saveToFile(Path path, ReportType type) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/CommandSourceStack.java.patch similarity index 74% rename from purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/CommandSourceStack.java.patch index 007fa82c9..545ded085 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/CommandSourceStack.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/commands/CommandSourceStack.java b/net/minecraft/commands/CommandSourceStack.java +index 3acfb2a78845dd8081dc3c01d653034232c76e60..51caf352e77df49fc04bf84f1fab29b6f4f4fc14 100644 --- a/net/minecraft/commands/CommandSourceStack.java +++ b/net/minecraft/commands/CommandSourceStack.java -@@ -447,6 +_,19 @@ +@@ -447,6 +447,19 @@ public class CommandSourceStack implements ExecutionCommandSource io.papermc.paper.adventure.PaperAdventure.asVanilla(message), broadcastToOps); + } + // Purpur end - Purpur config files - ++ public void sendSuccess(Supplier messageSupplier, boolean allowLogging) { boolean flag = this.source.acceptsSuccess() && !this.silent; + boolean flag1 = allowLogging && this.source.shouldInformAdmins() && !this.silent; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/Commands.java.patch similarity index 83% rename from purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/Commands.java.patch index 8824ef4bc..8734631f9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/Commands.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java +index ec1cced129ef42be65d7b2b622638bfae8bd895e..c638d30ba12bde2ae9d55b1c579129d40bcc8b1e 100644 --- a/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java -@@ -252,7 +_,7 @@ +@@ -252,7 +252,7 @@ public class Commands { JfrCommand.register(this.dispatcher); } @@ -9,7 +17,7 @@ RaidCommand.register(this.dispatcher, context); DebugPathCommand.register(this.dispatcher); DebugMobSpawningCommand.register(this.dispatcher); -@@ -280,6 +_,14 @@ +@@ -280,6 +280,14 @@ public class Commands { StopCommand.register(this.dispatcher); TransferCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); @@ -24,7 +32,7 @@ } if (selection.includeIntegrated) { -@@ -504,6 +_,7 @@ +@@ -504,6 +512,7 @@ public class Commands { private void runSync(ServerPlayer player, java.util.Collection bukkit, RootCommandNode rootCommandNode) { // Paper end - Perf: Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootCommandNode, true).callEvent(); // Paper - Brigadier API @@ -32,7 +40,7 @@ org.bukkit.event.player.PlayerCommandSendEvent event = new org.bukkit.event.player.PlayerCommandSendEvent(player.getBukkitEntity(), new java.util.LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -514,6 +_,8 @@ +@@ -514,6 +523,8 @@ public class Commands { } } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch similarity index 85% rename from purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch index c89e997d6..37f7c2689 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/commands/arguments/selector/EntitySelector.java b/net/minecraft/commands/arguments/selector/EntitySelector.java +index 514f8fbdeb776087608665c35de95294aadf5cf0..b305ba9bab617bf4e52d0e6ddf160bacc5751a94 100644 --- a/net/minecraft/commands/arguments/selector/EntitySelector.java +++ b/net/minecraft/commands/arguments/selector/EntitySelector.java -@@ -192,26 +_,27 @@ +@@ -192,26 +192,27 @@ public class EntitySelector { this.checkPermissions(source); if (this.playerName != null) { ServerPlayer playerByName = source.getServer().getPlayerList().getPlayerByName(this.playerName); @@ -32,7 +40,7 @@ players.add(serverPlayer1); if (players.size() >= resultLimit) { return players; -@@ -270,4 +_,10 @@ +@@ -270,4 +271,10 @@ public class EntitySelector { public static Component joinNames(List names) { return ComponentUtils.formatList(names, Entity::getDisplayName); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/BlockPos.java.patch similarity index 53% rename from purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/BlockPos.java.patch index 8b669b1d6..69749240b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/BlockPos.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/core/BlockPos.java b/net/minecraft/core/BlockPos.java +index a81694a22e94cca6f7110f7d5b205d1303f4e071..6518d3fff6daf331b24a7bf5b39fa1920b73711d 100644 --- a/net/minecraft/core/BlockPos.java +++ b/net/minecraft/core/BlockPos.java -@@ -63,6 +_,12 @@ +@@ -63,6 +63,12 @@ public class BlockPos extends Vec3i { public static final int MAX_HORIZONTAL_COORDINATE = 33554431; // Paper end - Optimize Bit Operations by inlining diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch similarity index 77% rename from purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch index 15ad30cf2..f90655297 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/core/dispenser/DispenseItemBehavior.java b/net/minecraft/core/dispenser/DispenseItemBehavior.java +index ca02c4c71a0a5a1a0ae8bbb40f0b1b7eac64e6fd..582e012222123e5001c34153f2ee1ab1d08935fd 100644 --- a/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/net/minecraft/core/dispenser/DispenseItemBehavior.java -@@ -735,5 +_,22 @@ +@@ -735,5 +735,22 @@ public interface DispenseItemBehavior { DispenserBlock.registerBehavior(Items.TNT_MINECART, new MinecartDispenseItemBehavior(EntityType.TNT_MINECART)); DispenserBlock.registerBehavior(Items.HOPPER_MINECART, new MinecartDispenseItemBehavior(EntityType.HOPPER_MINECART)); DispenserBlock.registerBehavior(Items.COMMAND_BLOCK_MINECART, new MinecartDispenseItemBehavior(EntityType.COMMAND_BLOCK_MINECART)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch similarity index 62% rename from purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch index 9a2c1e083..8eda4ddcf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java b/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java +index e2d169b45f1dba6559ca337b07a110f79d3db504..727d04a442053f6d0c4df3e744554e2866fa38cd 100644 --- a/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java +++ b/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java -@@ -32,7 +_,7 @@ +@@ -32,7 +32,7 @@ public class EquipmentDispenseItemBehavior extends DefaultDispenseItemBehavior { return false; } else { LivingEntity livingEntity = entitiesOfClass.getFirst(); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/GameTestHelper.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/GameTestHelper.java.patch new file mode 100644 index 000000000..3a79ccb9b --- /dev/null +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/GameTestHelper.java.patch @@ -0,0 +1,19 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/gametest/framework/GameTestHelper.java b/net/minecraft/gametest/framework/GameTestHelper.java +index 9fb53bc1330bf5370769200599b022a985f88db2..61ab8b508d2b614d0f05ae4cc23dc214f8e95a1d 100644 +--- a/net/minecraft/gametest/framework/GameTestHelper.java ++++ b/net/minecraft/gametest/framework/GameTestHelper.java +@@ -292,6 +292,8 @@ public class GameTestHelper { + return gameType; + } + ++ public void setAfk(final boolean afk) {} // Purpur - AFK API ++ + @Override + public boolean isClientAuthoritative() { + return false; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/TestCommand.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/TestCommand.java.patch similarity index 54% rename from purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/TestCommand.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/TestCommand.java.patch index 8002c2998..90b63f842 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/TestCommand.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/TestCommand.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/gametest/framework/TestCommand.java b/net/minecraft/gametest/framework/TestCommand.java +index 17f33a309ead525975a3090514a6367260f0af09..f4360d9472ba344f2e7afd6d798d313d5423fcb5 100644 --- a/net/minecraft/gametest/framework/TestCommand.java +++ b/net/minecraft/gametest/framework/TestCommand.java -@@ -449,7 +_,7 @@ +@@ -449,7 +449,7 @@ public class TestCommand { ) ) ); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/Connection.java.patch similarity index 71% rename from purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/Connection.java.patch index a205f1711..2d523d91e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/Connection.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/network/Connection.java b/net/minecraft/network/Connection.java +index 34524dc5a503bebcec99ada0d9560d6f4df48cdf..1014ab2aeb5e496124c99c938538e88d75561cd5 100644 --- a/net/minecraft/network/Connection.java +++ b/net/minecraft/network/Connection.java -@@ -578,11 +_,20 @@ +@@ -578,11 +578,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/purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/chat/SignedMessageChain.java.patch similarity index 68% rename from purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/chat/SignedMessageChain.java.patch index 60c29bda0..3bffec3df 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/chat/SignedMessageChain.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/network/chat/SignedMessageChain.java b/net/minecraft/network/chat/SignedMessageChain.java +index f6eed34b2fd72ab74cc9dc4b99ca184d512c0a66..a3e211edd348c0936757de33a74b9456248b3bd2 100644 --- a/net/minecraft/network/chat/SignedMessageChain.java +++ b/net/minecraft/network/chat/SignedMessageChain.java -@@ -45,7 +_,7 @@ +@@ -45,7 +45,7 @@ public class SignedMessageChain { SignedMessageLink signedMessageLink = SignedMessageChain.this.nextLink; if (signedMessageLink == null) { throw new SignedMessageChain.DecodeException(SignedMessageChain.DecodeException.CHAIN_BROKEN); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/Main.java.patch similarity index 72% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/Main.java.patch index 0153677cf..a043f3d4f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/Main.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/Main.java b/net/minecraft/server/Main.java +index fd3553bdc1c3cdbf6aa3dc00e0a4987f8eaa4fb8..bc3209d3cbe971af74b7856caa6300b59b0bb6bc 100644 --- a/net/minecraft/server/Main.java +++ b/net/minecraft/server/Main.java -@@ -109,6 +_,12 @@ +@@ -109,6 +109,12 @@ public class Main { JvmProfiler.INSTANCE.start(Environment.SERVER); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/MinecraftServer.java.patch similarity index 83% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/MinecraftServer.java.patch index 6cfd1baa6..87f8fcc7c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/MinecraftServer.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java +index 52fa5112cd90ba766c94512a02401dd3aee82cc9..ef5c6a760eb6e72beab186a315bd02e804c9ae53 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -284,6 +_,7 @@ +@@ -284,6 +284,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop processQueue = new java.util.concurrent.ConcurrentLinkedQueue(); public int autosavePeriod; // Paper - don't store the vanilla dispatcher -@@ -294,7 +_,7 @@ +@@ -294,7 +295,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop pluginsBlockingSleep = new java.util.HashSet<>(); // Paper - API to allow/disallow tick sleeping public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation @@ -26,7 +34,7 @@ public static S spin(Function threadFunction) { ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system -@@ -996,6 +_,15 @@ +@@ -996,6 +999,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/PlayerAdvancements.java b/net/minecraft/server/PlayerAdvancements.java +index fdeca41d40705f28864ce4443d01cd872c9d51b0..10e5469df1800bcdfb3f8cb4045ee25a4bafc58c 100644 --- a/net/minecraft/server/PlayerAdvancements.java +++ b/net/minecraft/server/PlayerAdvancements.java -@@ -147,6 +_,7 @@ +@@ -147,6 +147,7 @@ public class PlayerAdvancements { AdvancementHolder advancementHolder = advancementManager.get(path); if (advancementHolder == null) { if (!path.getNamespace().equals(ResourceLocation.DEFAULT_NAMESPACE)) return; // CraftBukkit @@ -8,7 +16,7 @@ LOGGER.warn("Ignored advancement '{}' in progress file {} - it doesn't exist anymore?", path, this.playerSavePath); } else { this.startProgress(advancementHolder, progress); -@@ -194,6 +_,7 @@ +@@ -194,6 +195,7 @@ public class PlayerAdvancements { advancement.value().display().ifPresent(displayInfo -> { // Paper start - Add Adventure message to PlayerAdvancementDoneEvent if (event.message() != null && this.player.level().getGameRules().getBoolean(GameRules.RULE_ANNOUNCE_ADVANCEMENTS)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/EnchantCommand.java.patch similarity index 75% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/EnchantCommand.java.patch index 6379c1d94..1c9b808ed 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/EnchantCommand.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/commands/EnchantCommand.java b/net/minecraft/server/commands/EnchantCommand.java +index 6f4fcee9fdba2248227708fcced1ce0f40aff6af..13f1dbd0d09428e9e0a42f99d0553283e0065f6f 100644 --- a/net/minecraft/server/commands/EnchantCommand.java +++ b/net/minecraft/server/commands/EnchantCommand.java -@@ -70,7 +_,7 @@ +@@ -70,7 +70,7 @@ public class EnchantCommand { private static int enchant(CommandSourceStack source, Collection targets, Holder enchantment, int level) throws CommandSyntaxException { Enchantment enchantment1 = enchantment.value(); @@ -9,7 +17,7 @@ throw ERROR_LEVEL_TOO_HIGH.create(level, enchantment1.getMaxLevel()); } else { int i = 0; -@@ -80,7 +_,7 @@ +@@ -80,7 +80,7 @@ public class EnchantCommand { ItemStack mainHandItem = livingEntity.getMainHandItem(); if (!mainHandItem.isEmpty()) { if (enchantment1.canEnchant(mainHandItem) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GameModeCommand.java.patch similarity index 69% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GameModeCommand.java.patch index 135ee41ef..92cfc3069 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GameModeCommand.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/commands/GameModeCommand.java b/net/minecraft/server/commands/GameModeCommand.java +index 9da9ab3b835a8dcc7e1da286be1de88a3f0240fa..4b8c9aaf1d143bc38f52f646e4e73b56013eda8c 100644 --- a/net/minecraft/server/commands/GameModeCommand.java +++ b/net/minecraft/server/commands/GameModeCommand.java -@@ -53,6 +_,18 @@ +@@ -53,6 +53,18 @@ public class GameModeCommand { } private static int setMode(CommandContext source, Collection players, GameType gameType) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GiveCommand.java.patch similarity index 59% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GiveCommand.java.patch index 983f2b9cd..afdfd8dc3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GiveCommand.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/commands/GiveCommand.java b/net/minecraft/server/commands/GiveCommand.java +index ea9db57a1fe2f11739ceb062ea7cce15776f959a..a919d91eeaaeef0f79190cc5e78e4f8b2fb468dd 100644 --- a/net/minecraft/server/commands/GiveCommand.java +++ b/net/minecraft/server/commands/GiveCommand.java -@@ -69,6 +_,7 @@ +@@ -69,6 +69,7 @@ public class GiveCommand { i1 -= min; ItemStack itemStack1 = item.createItemStack(min, false); boolean flag = serverPlayer.getInventory().add(itemStack1); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServer.java.patch similarity index 81% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServer.java.patch index e8a2669b4..813cd7556 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServer.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java +index 98927d4a5fba2a0dcdb147ac10b82c3286ccdc6b..670553243d26e2faab8a21f099a846d4d1df7927 100644 --- a/net/minecraft/server/dedicated/DedicatedServer.java +++ b/net/minecraft/server/dedicated/DedicatedServer.java -@@ -105,6 +_,7 @@ +@@ -105,6 +105,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface public void run() { if (!org.bukkit.craftbukkit.Main.useConsole) return; // CraftBukkit // Paper start - Use TerminalConsoleAppender @@ -8,7 +16,7 @@ new com.destroystokyo.paper.console.PaperConsole(DedicatedServer.this).start(); /* BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); -@@ -183,6 +_,15 @@ +@@ -183,6 +184,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics @@ -24,7 +32,7 @@ com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now this.setPvpAllowed(properties.pvp); -@@ -230,6 +_,30 @@ +@@ -230,6 +240,30 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface if (true) throw new IllegalStateException("Failed to bind to port", var10); // Paper - Propagate failed to bind to port error return false; } @@ -55,7 +63,7 @@ // CraftBukkit start this.server.loadPlugins(); -@@ -308,6 +_,8 @@ +@@ -308,6 +342,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface LOGGER.info("JMX monitoring enabled"); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch similarity index 56% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch index 74d774008..83b65bdad 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/dedicated/DedicatedServerProperties.java b/net/minecraft/server/dedicated/DedicatedServerProperties.java +index 4a01088da91fc6d620cb804a9ab6d6eb1630b473..b286dc17cda16fca3af9374d2a4a8bd137c24450 100644 --- a/net/minecraft/server/dedicated/DedicatedServerProperties.java +++ b/net/minecraft/server/dedicated/DedicatedServerProperties.java -@@ -51,6 +_,7 @@ +@@ -51,6 +51,7 @@ public class DedicatedServerProperties extends Settings +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/gui/MinecraftServerGui.java b/net/minecraft/server/gui/MinecraftServerGui.java +index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b3788623900db41 100644 --- a/net/minecraft/server/gui/MinecraftServerGui.java +++ b/net/minecraft/server/gui/MinecraftServerGui.java -@@ -39,6 +_,11 @@ +@@ -39,6 +39,11 @@ public class MinecraftServerGui extends JComponent { private Thread logAppenderThread; private final Collection finalizers = Lists.newArrayList(); final AtomicBoolean isClosing = new AtomicBoolean(); @@ -12,7 +20,7 @@ public static MinecraftServerGui showFrameFor(final DedicatedServer server) { try { -@@ -46,7 +_,7 @@ +@@ -46,7 +51,7 @@ public class MinecraftServerGui extends JComponent { } catch (Exception var3) { } @@ -21,7 +29,7 @@ final MinecraftServerGui minecraftServerGui = new MinecraftServerGui(server); jFrame.setDefaultCloseOperation(2); jFrame.add(minecraftServerGui); -@@ -54,7 +_,7 @@ +@@ -54,7 +59,7 @@ public class MinecraftServerGui extends JComponent { jFrame.setLocationRelativeTo(null); jFrame.setVisible(true); // Paper start - Improve ServerGUI @@ -30,7 +38,7 @@ try { jFrame.setIconImage(javax.imageio.ImageIO.read(java.util.Objects.requireNonNull(MinecraftServerGui.class.getClassLoader().getResourceAsStream("logo.png")))); } catch (java.io.IOException ignore) { -@@ -64,7 +_,7 @@ +@@ -64,7 +69,7 @@ public class MinecraftServerGui extends JComponent { @Override public void windowClosing(WindowEvent event) { if (!minecraftServerGui.isClosing.getAndSet(true)) { @@ -39,7 +47,7 @@ server.halt(true); minecraftServerGui.runFinalizers(); } -@@ -112,7 +_,7 @@ +@@ -112,7 +117,7 @@ public class MinecraftServerGui extends JComponent { private JComponent buildChatPanel() { JPanel jPanel = new JPanel(new BorderLayout()); @@ -48,7 +56,7 @@ JScrollPane jScrollPane = new JScrollPane(jTextArea, 22, 30); jTextArea.setEditable(false); jTextArea.setFont(MONOSPACED); -@@ -121,10 +_,43 @@ +@@ -121,10 +126,43 @@ public class MinecraftServerGui extends JComponent { String trimmed = jTextField.getText().trim(); if (!trimmed.isEmpty()) { this.server.handleConsoleInput(trimmed, this.server.createCommandSourceStack()); @@ -92,7 +100,7 @@ jTextArea.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent event) { -@@ -159,7 +_,7 @@ +@@ -159,7 +197,7 @@ public class MinecraftServerGui extends JComponent { } private static final java.util.regex.Pattern ANSI = java.util.regex.Pattern.compile("\\e\\[[\\d;]*[^\\d;]"); // CraftBukkit // Paper @@ -101,7 +109,7 @@ if (!SwingUtilities.isEventDispatchThread()) { SwingUtilities.invokeLater(() -> this.print(textArea, scrollPane, line)); } else { -@@ -170,16 +_,29 @@ +@@ -170,10 +208,11 @@ public class MinecraftServerGui extends JComponent { flag = verticalScrollBar.getValue() + verticalScrollBar.getSize().getHeight() + MONOSPACED.getSize() * 4 > verticalScrollBar.getMaximum(); } @@ -115,10 +123,10 @@ if (flag) { verticalScrollBar.setValue(Integer.MAX_VALUE); - } +@@ -181,6 +220,18 @@ public class MinecraftServerGui extends JComponent { } } -+ + + // Purpur start - GUI Improvements + public static class CommandHistory extends java.util.LinkedList { + @Override @@ -130,6 +138,7 @@ + } + } + // Purpur end - GUI Improvements - ++ // Paper start - Add onboarding message for initial server start private JComponent buildOnboardingPanel() { + String onboardingLink = "https://docs.papermc.io/paper/next-steps"; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/gui/StatsComponent.java.patch similarity index 63% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/gui/StatsComponent.java.patch index a082bca56..ba597593a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/gui/StatsComponent.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/gui/StatsComponent.java b/net/minecraft/server/gui/StatsComponent.java +index 35fd539eb2bfe60ad17ab1e558a01273666acc54..103ff139dae918c991413ce9df61da3e22ee458a 100644 --- a/net/minecraft/server/gui/StatsComponent.java +++ b/net/minecraft/server/gui/StatsComponent.java -@@ -43,7 +_,7 @@ +@@ -43,7 +43,7 @@ public class StatsComponent extends JComponent { } this.msgs[0] = "Memory use: " + l / 1024L / 1024L + " mb (" + Runtime.getRuntime().freeMemory() * 100L / Runtime.getRuntime().maxMemory() + "% free)"; this.msgs[1] = "Avg tick: " + DECIMAL_FORMAT.format((double)this.server.getAverageTickTimeNanos() / TimeUtil.NANOSECONDS_PER_MILLISECOND) + " ms"; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerLevel.java.patch similarity index 88% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerLevel.java.patch index 5626a7245..9a3a7623d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerLevel.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java +index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..83eff33884bffddfafc85eeb4a2900104a396e2e 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -206,6 +_,8 @@ +@@ -206,6 +206,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe private final StructureManager structureManager; private final StructureCheck structureCheck; private final boolean tickTime; @@ -9,7 +17,7 @@ private final RandomSequences randomSequences; // CraftBukkit start -@@ -590,7 +_,24 @@ +@@ -590,7 +592,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe // CraftBukkit end this.tickTime = tickTime; this.server = server; @@ -35,7 +43,7 @@ this.serverLevelData = serverLevelData; ChunkGenerator chunkGenerator = levelStem.generator(); // CraftBukkit start -@@ -675,6 +_,7 @@ +@@ -675,6 +694,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler); // Paper end - rewrite chunk system this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit @@ -43,7 +51,7 @@ } // Paper start -@@ -721,7 +_,7 @@ +@@ -721,7 +741,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); @@ -52,7 +60,7 @@ // Paper start - create time skip event - move up calculations final long newDayTime = this.levelData.getDayTime() + 24000L; org.bukkit.event.world.TimeSkipEvent event = new org.bukkit.event.world.TimeSkipEvent( -@@ -840,6 +_,13 @@ +@@ -840,6 +860,13 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.serverLevelData.getScheduledEvents().tick(this.server, l); Profiler.get().pop(); if (this.serverLevelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { @@ -66,11 +74,10 @@ this.setDayTime(this.levelData.getDayTime() + 1L); } } -@@ -847,7 +_,21 @@ +@@ -847,7 +874,21 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe public void setDayTime(long time) { this.serverLevelData.setDayTime(time); -- } + // Purpur start - Configurable daylight cycle + this.preciseTime = time; + this.forceTime = false; @@ -84,12 +91,12 @@ + // Purpur start - Configurable daylight cycle + public boolean isForceTime() { + return this.forceTime; -+ } + } + // Purpur end - Configurable daylight cycle public void tickCustomSpawners(boolean spawnEnemies, boolean spawnFriendlies) { for (CustomSpawner customSpawner : this.customSpawners) { -@@ -951,9 +_,17 @@ +@@ -951,9 +992,17 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe && this.random.nextDouble() < currentDifficultyAt.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01) // Paper - Configurable spawn chances for skeleton horses && !this.getBlockState(blockPos.below()).is(Blocks.LIGHTNING_ROD); if (flag) { @@ -109,7 +116,7 @@ skeletonHorse.setAge(0); skeletonHorse.setPos(blockPos.getX(), blockPos.getY(), blockPos.getZ()); this.addFreshEntity(skeletonHorse, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit -@@ -988,9 +_,35 @@ +@@ -988,9 +1037,35 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe if (blockState.is(Blocks.SNOW)) { int layersValue = blockState.getValue(SnowLayerBlock.LAYERS); if (layersValue < Math.min(_int, 8)) { @@ -145,7 +152,7 @@ } } else { org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(this, heightmapPos, Blocks.SNOW.defaultBlockState(), 3, null); // CraftBukkit -@@ -1011,7 +_,7 @@ +@@ -1011,7 +1086,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe pointOfInterestType -> pointOfInterestType.is(PoiTypes.LIGHTNING_ROD), blockPos -> blockPos.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockPos.getX(), blockPos.getZ()) - 1, pos, @@ -154,7 +161,7 @@ PoiManager.Occupancy.ANY ); return optional.map(blockPos -> blockPos.above(1)); -@@ -1060,8 +_,26 @@ +@@ -1060,8 +1135,26 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); Component component; if (this.sleepStatus.areEnoughSleeping(_int)) { @@ -181,7 +188,7 @@ component = Component.translatable("sleep.players_sleeping", this.sleepStatus.amountSleeping(), this.sleepStatus.sleepersNeeded(_int)); } -@@ -1198,6 +_,7 @@ +@@ -1198,6 +1291,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -189,7 +196,7 @@ 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.... -@@ -1205,6 +_,7 @@ +@@ -1205,6 +1299,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -197,7 +204,7 @@ this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. -@@ -2727,7 +_,7 @@ +@@ -2727,7 +2822,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe // 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/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayer.java.patch similarity index 88% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayer.java.patch index 14617339c..da3953c95 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java +index 728fa1210e0fd837e28c48802045dea2ae59f5d6..f292626a6ab2ae3f71f76aebdd2b4cf576183331 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -431,6 +_,10 @@ +@@ -431,6 +431,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc public @Nullable com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent public @Nullable String clientBrandName = null; // Paper - Brand support public @Nullable 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 @@ -11,7 +19,7 @@ // Paper start - rewrite chunk system private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; -@@ -628,6 +_,10 @@ +@@ -628,6 +632,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.respawnConfig = input.read("respawn", ServerPlayer.RespawnConfig.CODEC).orElse(null); this.spawnExtraParticlesOnFall = input.getBooleanOr("spawn_extra_particles_on_fall", false); this.raidOmenPosition = input.read("raid_omen_position", BlockPos.CODEC).orElse(null); @@ -22,7 +30,7 @@ } @Override -@@ -645,6 +_,9 @@ +@@ -645,6 +653,9 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc output.storeNullable("raid_omen_position", BlockPos.CODEC, this.raidOmenPosition); this.saveEnderPearls(output); this.getBukkitEntity().setExtraData(output); // CraftBukkit @@ -32,7 +40,7 @@ } private void saveParentVehicle(ValueOutput output) { -@@ -1141,6 +_,7 @@ +@@ -1141,6 +1152,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc // Paper - moved up to sendClientboundPlayerCombatKillPacket() sendClientboundPlayerCombatKillPacket(event.getShowDeathMessages(), deathScreenMessage); // Paper - Expand PlayerDeathEvent Team team = this.getTeam(); @@ -40,7 +48,7 @@ if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) { this.server.getPlayerList().broadcastSystemMessage(deathMessage, false); } else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { -@@ -1247,6 +_,13 @@ +@@ -1247,6 +1259,13 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc if (this.isInvulnerableTo(level, damageSource)) { return false; } else { @@ -54,7 +62,7 @@ Entity entity = damageSource.getEntity(); if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. !(entity instanceof Player player && !this.canHarmPlayer(player)) -@@ -1491,6 +_,7 @@ +@@ -1491,6 +1510,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -62,7 +70,7 @@ this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1607,7 +_,7 @@ +@@ -1607,7 +1627,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), monster -> monster.isPreventingPlayerRest(this.level(), this) ); @@ -71,7 +79,7 @@ return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1644,7 +_,19 @@ +@@ -1644,7 +1664,19 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); if (!this.level().canSleepThroughNights()) { @@ -92,7 +100,7 @@ } this.level().updateSleepingPlayerList(); -@@ -1736,6 +_,7 @@ +@@ -1736,6 +1768,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -100,7 +108,7 @@ this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -2045,6 +_,26 @@ +@@ -2045,6 +2078,26 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -127,7 +135,7 @@ @Override public void displayClientMessage(Component chatComponent, boolean actionBar) { this.sendSystemMessage(chatComponent, actionBar); -@@ -2263,6 +_,20 @@ +@@ -2263,6 +2316,20 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc ); } @@ -148,14 +156,13 @@ public void sendSystemMessage(Component mesage) { this.sendSystemMessage(mesage, false); } -@@ -2401,7 +_,67 @@ +@@ -2401,8 +2468,68 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); -- } + this.setAfk(false); // Purpur - AFK API -+ } -+ + } + + // Purpur start - AFK API + private boolean isAfk = false; + @@ -214,10 +221,11 @@ + return !this.isAfk() && super.canBeCollidedWith(entity); + } + // Purpur end - AFK API - ++ public ServerStatsCounter getStats() { return this.stats; -@@ -3029,4 +_,56 @@ + } +@@ -3029,4 +3156,56 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch similarity index 83% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch index f28a3de6d..01bc2aa0c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/level/ServerPlayerGameMode.java b/net/minecraft/server/level/ServerPlayerGameMode.java +index 6734756d7a51e635a50a47577f9e6b6f8111db51..c4a4f08272b34f72dea4feaaeb66d153b2aab8c8 100644 --- a/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -348,6 +_,7 @@ +@@ -348,6 +348,7 @@ public class ServerPlayerGameMode { } return false; } @@ -8,7 +16,7 @@ } // CraftBukkit end -@@ -461,6 +_,7 @@ +@@ -461,6 +462,7 @@ public class ServerPlayerGameMode { public InteractionHand interactHand; public ItemStack interactItemStack; public InteractionResult useItemOn(ServerPlayer player, Level level, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) { @@ -16,7 +24,7 @@ BlockPos blockPos = hitResult.getBlockPos(); BlockState blockState = level.getBlockState(blockPos); boolean cancelledBlock = false; -@@ -503,7 +_,7 @@ +@@ -503,7 +505,7 @@ public class ServerPlayerGameMode { boolean flag = !player.getMainHandItem().isEmpty() || !player.getOffhandItem().isEmpty(); boolean flag1 = player.isSecondaryUseActive() && flag; ItemStack itemStack = stack.copy(); @@ -25,7 +33,7 @@ InteractionResult interactionResult = blockState.useItemOn(player.getItemInHand(hand), level, player, hand, hitResult); if (interactionResult.consumesAction()) { CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger(player, blockPos, itemStack); -@@ -549,4 +_,18 @@ +@@ -549,4 +551,18 @@ public class ServerPlayerGameMode { public void setLevel(ServerLevel serverLevel) { this.level = serverLevel; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/WorldGenRegion.java.patch similarity index 50% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/WorldGenRegion.java.patch index ab71931ac..4dae8f3a1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/WorldGenRegion.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/level/WorldGenRegion.java b/net/minecraft/server/level/WorldGenRegion.java +index 11fed81a4696ba18440e755c3b8a5ca39ed8a6b1..18367ee56288c4cc60b66555583a8900e7a47daf 100644 --- a/net/minecraft/server/level/WorldGenRegion.java +++ b/net/minecraft/server/level/WorldGenRegion.java -@@ -314,6 +_,7 @@ +@@ -314,6 +314,7 @@ public class WorldGenRegion implements WorldGenLevel { return true; } else { // Paper start - Buffer OOB setBlock calls diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch similarity index 83% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch index 18b73dfdc..cbeae0729 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +index 43f70a5561d6cc62aaeba6d1e39598ecb382e369..f6a04a4b0a06c2fbb3b6aac4ec3e162f6c39b2a2 100644 --- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -39,10 +_,11 @@ +@@ -39,10 +39,11 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack public final Connection connection; // Paper private final boolean transferred; //private long keepAliveTime; // Paper - improve keepalives @@ -13,7 +21,7 @@ private volatile int latency; // Paper - improve keepalives - make volatile private volatile boolean suspendFlushingOnServerThread = false; // CraftBukkit start -@@ -53,6 +_,7 @@ +@@ -53,6 +54,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 net.minecraft.resources.ResourceLocation MINECRAFT_BRAND = net.minecraft.resources.ResourceLocation.withDefaultNamespace("brand"); // Paper - Brand support @@ -21,7 +29,7 @@ public ServerCommonPacketListenerImpl(MinecraftServer server, Connection connection, CommonListenerCookie cookie, net.minecraft.server.level.ServerPlayer player) { // CraftBukkit this.server = server; -@@ -123,6 +_,18 @@ +@@ -123,6 +125,18 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack // Paper start - improve keepalives long now = System.nanoTime(); net.minecraft.server.level.ServerPlayer.PendingKeepAlive pending = this.player.pendingKeepAlives.peek(); @@ -40,7 +48,7 @@ if (pending != null && pending.challengeId() == packet.getId()) { this.player.pendingKeepAlives.remove(pending); -@@ -199,6 +_,12 @@ +@@ -199,6 +213,12 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack return; } @@ -53,7 +61,7 @@ if (identifier.equals(MINECRAFT_BRAND)) { this.player.clientBrandName = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256); } -@@ -276,6 +_,23 @@ +@@ -276,6 +296,23 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack Profiler.get().push("keepAlive"); long millis = Util.getMillis(); // Paper start - improve keepalives diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch similarity index 91% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index f3c9a2115..9ade22f8a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12b1e10766 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -324,6 +_,20 @@ +@@ -324,6 +324,20 @@ public class ServerGamePacketListenerImpl this.tickEndEvent = new io.papermc.paper.event.packet.ClientTickEndEvent(player.getBukkitEntity()); // Paper - add client tick end event } @@ -21,7 +29,7 @@ @Override public void tick() { if (this.ackBlockChangesUpTo > -1) { -@@ -382,6 +_,12 @@ +@@ -382,6 +396,12 @@ public class ServerGamePacketListenerImpl if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits @@ -34,7 +42,7 @@ this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854 this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause } -@@ -651,6 +_,8 @@ +@@ -651,6 +671,8 @@ public class ServerGamePacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -43,7 +51,7 @@ Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -730,6 +_,7 @@ +@@ -730,6 +752,7 @@ public class ServerGamePacketListenerImpl PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); if (packet.getId() == this.awaitingTeleport) { if (this.awaitingPositionFromClient == null) { @@ -51,7 +59,7 @@ this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause return; } -@@ -1263,6 +_,10 @@ +@@ -1263,6 +1286,10 @@ public class ServerGamePacketListenerImpl final int maxBookPageSize = pageMax.intValue(); final double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D); long byteAllowed = maxBookPageSize; @@ -62,7 +70,7 @@ for (final String page : pageList) { final int byteLength = page.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; byteTotal += byteLength; -@@ -1287,7 +_,8 @@ +@@ -1287,7 +1314,8 @@ public class ServerGamePacketListenerImpl } if (byteTotal > byteAllowed) { @@ -72,7 +80,7 @@ this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect return; } -@@ -1306,31 +_,45 @@ +@@ -1306,31 +1334,45 @@ public class ServerGamePacketListenerImpl Optional optional = packet.title(); optional.ifPresent(list::add); list.addAll(packet.pages()); @@ -122,7 +130,7 @@ itemStack.set( DataComponents.WRITTEN_BOOK_CONTENT, new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list, true) -@@ -1344,6 +_,16 @@ +@@ -1344,6 +1386,16 @@ public class ServerGamePacketListenerImpl return this.player.isTextFilteringEnabled() ? Filterable.passThrough(filteredText.filteredOrEmpty()) : Filterable.from(filteredText); } @@ -139,7 +147,7 @@ @Override public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); -@@ -1383,7 +_,15 @@ +@@ -1383,7 +1435,15 @@ public class ServerGamePacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); @@ -156,7 +164,7 @@ this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause } else { ServerLevel serverLevel = this.player.level(); -@@ -1565,7 +_,7 @@ +@@ -1565,7 +1625,7 @@ public class ServerGamePacketListenerImpl movedWrongly = true; if (event.getLogWarning()) // Paper end @@ -165,7 +173,7 @@ } // Paper } -@@ -1630,6 +_,8 @@ +@@ -1630,6 +1690,8 @@ public class ServerGamePacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -174,7 +182,7 @@ Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -1685,6 +_,13 @@ +@@ -1685,6 +1747,13 @@ public class ServerGamePacketListenerImpl this.player.tryResetCurrentImpulseContext(); } @@ -188,7 +196,7 @@ this.player.checkMovementStatistics(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1702,6 +_,17 @@ +@@ -1702,6 +1771,17 @@ public class ServerGamePacketListenerImpl } } @@ -206,7 +214,7 @@ private boolean shouldCheckPlayerMovement(boolean isElytraMovement) { if (this.isSingleplayerOwner()) { return false; -@@ -2099,6 +_,7 @@ +@@ -2099,6 +2179,7 @@ public class ServerGamePacketListenerImpl boolean cancelled; if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) { @@ -214,7 +222,7 @@ org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { -@@ -2750,6 +_,7 @@ +@@ -2750,6 +2831,7 @@ public class ServerGamePacketListenerImpl AABB boundingBox = target.getBoundingBox(); if (this.player.canInteractWithEntity(boundingBox, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience value for interact range diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch similarity index 70% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch index dfa6db0dc..f3e28edaf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +index 7950f4f88d8a83ed5610b7af4e134557d32da3f0..637b2eb7104cb0bc7f314ad6eea11a432e899861 100644 --- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -306,7 +_,7 @@ +@@ -306,7 +306,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(string1)); // Spigot } else { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch similarity index 59% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch index 3fc9d014a..5d2a5a854 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/network/ServerStatusPacketListenerImpl.java b/net/minecraft/server/network/ServerStatusPacketListenerImpl.java +index 465559113071a47e706f77a5b0996597ee986b3d..1b966dc52b067cd9d1fa9f500b692e3f75f1cc90 100644 --- a/net/minecraft/server/network/ServerStatusPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerStatusPacketListenerImpl.java -@@ -37,6 +_,7 @@ +@@ -37,6 +37,7 @@ public class ServerStatusPacketListenerImpl implements ServerStatusPacketListene } else { this.hasRequestedStatus = true; // this.connection.send(new ClientboundStatusResponsePacket(this.status)); // Paper diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/PlayerList.java.patch similarity index 83% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/PlayerList.java.patch index 4a7027564..bd91ee894 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/PlayerList.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java +index b1524279c02cd3be82338a6bd0320cb125a134d5..cc26f97e1e72eb077dc60691dadbcd5a52235c0d 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -401,6 +_,7 @@ +@@ -401,6 +401,7 @@ public abstract class PlayerList { scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam); } // Paper end - Configurable player collision @@ -8,7 +16,7 @@ PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), loggableAddress, player.getId(), serverLevel.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); // Paper start - Send empty chunk, so players aren't stuck in the world loading screen with our chunk system not sending chunks when dead if (player.isDeadOrDying()) { -@@ -508,6 +_,7 @@ +@@ -508,6 +509,7 @@ public abstract class PlayerList { } public @Nullable net.kyori.adventure.text.Component remove(ServerPlayer player, net.kyori.adventure.text.Component leaveMessage) { // Paper end - Fix kick event leave message not being sent @@ -16,7 +24,7 @@ ServerLevel serverLevel = player.level(); player.awardStat(Stats.LEAVE_GAME); // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it -@@ -666,7 +_,7 @@ +@@ -666,7 +668,7 @@ public abstract class PlayerList { // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameProfile) // ? Component.translatable("multiplayer.disconnect.server_full") // : null; @@ -25,7 +33,7 @@ event.disallow(org.bukkit.event.player.PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure } } -@@ -928,6 +_,20 @@ +@@ -928,6 +930,20 @@ public abstract class PlayerList { } } @@ -46,7 +54,7 @@ public void broadcastAll(Packet packet, ResourceKey dimension) { for (ServerPlayer serverPlayer : this.players) { if (serverPlayer.level().dimension() == dimension) { -@@ -1012,6 +_,7 @@ +@@ -1012,6 +1028,7 @@ public abstract class PlayerList { } else { b = (byte)(24 + permLevel); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/SleepStatus.java.patch similarity index 73% rename from purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/SleepStatus.java.patch index 998d2f057..ff0d76835 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/SleepStatus.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/server/players/SleepStatus.java b/net/minecraft/server/players/SleepStatus.java +index 2a7ae521654ad5c9f392baa5562e64bb71b13097..3a3e6992563236141db687084aeec9684437a7db 100644 --- a/net/minecraft/server/players/SleepStatus.java +++ b/net/minecraft/server/players/SleepStatus.java -@@ -15,7 +_,7 @@ +@@ -15,7 +15,7 @@ public class SleepStatus { public boolean areEnoughDeepSleeping(int requiredSleepPercentage, List sleepingPlayers) { // CraftBukkit start @@ -9,7 +17,7 @@ boolean anyDeepSleep = sleepingPlayers.stream().anyMatch(Player::isSleepingLongEnough); return anyDeepSleep && i >= this.sleepersNeeded(requiredSleepPercentage); // CraftBukkit end -@@ -43,7 +_,7 @@ +@@ -43,7 +43,7 @@ public class SleepStatus { for (ServerPlayer serverPlayer : players) { if (!serverPlayer.isSpectator()) { this.activePlayers++; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/stats/ServerRecipeBook.java.patch similarity index 60% rename from purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/stats/ServerRecipeBook.java.patch index 7fb3454f4..700962fa2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/stats/ServerRecipeBook.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/stats/ServerRecipeBook.java b/net/minecraft/stats/ServerRecipeBook.java +index 7e1a06b97ab0c744e910df1c82454ce5686c1870..a7cf3d2dbc3bb8db49629ec5ba049e196af836b7 100644 --- a/net/minecraft/stats/ServerRecipeBook.java +++ b/net/minecraft/stats/ServerRecipeBook.java -@@ -102,6 +_,7 @@ +@@ -102,6 +102,7 @@ public class ServerRecipeBook extends RecipeBook { private void loadRecipes(List>> recipes, Consumer>> output, Predicate>> isRecognized) { for (ResourceKey> resourceKey : recipes) { if (!isRecognized.test(resourceKey)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/util/StringUtil.java.patch similarity index 52% rename from purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/util/StringUtil.java.patch index b8d231182..9f781aab3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/util/StringUtil.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/util/StringUtil.java b/net/minecraft/util/StringUtil.java +index 77947e6915facee44588943fcd3e5b513de37e77..c3a99fe7b49858bc0ca9a7f800b0db40465f6901 100644 --- a/net/minecraft/util/StringUtil.java +++ b/net/minecraft/util/StringUtil.java -@@ -87,6 +_,7 @@ +@@ -87,6 +87,7 @@ public class StringUtil { // Paper start - Username validation public static boolean isReasonablePlayerName(final String name) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatRules.java.patch similarity index 69% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatRules.java.patch index a70c7a253..8651bf6ab 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatRules.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/damagesource/CombatRules.java b/net/minecraft/world/damagesource/CombatRules.java +index d5524038314591a10c9f08a68e2ac91f6079a897..bf82de45bf98e8605a1fdb69803f75f471c4af43 100644 --- a/net/minecraft/world/damagesource/CombatRules.java +++ b/net/minecraft/world/damagesource/CombatRules.java -@@ -15,7 +_,7 @@ +@@ -15,7 +15,7 @@ public class CombatRules { public static float getDamageAfterAbsorb(LivingEntity entity, float damage, DamageSource damageSource, float armorValue, float armorToughness) { float f = 2.0F + armorToughness / 4.0F; @@ -9,7 +17,7 @@ float f2 = f1 / 25.0F; ItemStack weaponItem = damageSource.getWeaponItem(); float f3; -@@ -30,7 +_,7 @@ +@@ -30,7 +30,7 @@ public class CombatRules { } public static float getDamageAfterMagicAbsorb(float damage, float enchantModifiers) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatTracker.java.patch similarity index 79% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatTracker.java.patch index 2bc01f621..bb60965ca 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatTracker.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/damagesource/CombatTracker.java b/net/minecraft/world/damagesource/CombatTracker.java +index 4cec197634fac341cca1ed108f1ecb0561f72461..aa6213ca382e4901363317df1e30332c5166f271 100644 --- a/net/minecraft/world/damagesource/CombatTracker.java +++ b/net/minecraft/world/damagesource/CombatTracker.java -@@ -64,7 +_,7 @@ +@@ -64,7 +64,7 @@ public class CombatTracker { private Component getMessageForAssistedFall(Entity entity, Component entityDisplayName, String hasWeaponTranslationKey, String noWeaponTranslationKey) { ItemStack itemStack = entity instanceof LivingEntity livingEntity ? livingEntity.getMainHandItem() : ItemStack.EMPTY; @@ -9,7 +17,7 @@ ? Component.translatable(hasWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName, itemStack.getDisplayName()) : Component.translatable(noWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName); } -@@ -108,6 +_,15 @@ +@@ -108,6 +108,15 @@ 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/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSource.java.patch similarity index 85% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSource.java.patch index 581f8d027..993047adb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSource.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/damagesource/DamageSource.java b/net/minecraft/world/damagesource/DamageSource.java +index bb021fc9de91f8c4f79e6a753d57fa157efbbda7..5fa92eef9c6b88cf96d3fe427e4d4f16953e8094 100644 --- a/net/minecraft/world/damagesource/DamageSource.java +++ b/net/minecraft/world/damagesource/DamageSource.java -@@ -30,6 +_,8 @@ +@@ -30,6 +30,8 @@ public class DamageSource { @Nullable private org.bukkit.block.BlockState fromBlockSnapshot; // Captured block snapshot when the eventBlockDamager is not relevant (e.g. for bad respawn point explosions the block is already removed) private boolean critical; // Supports arrows and sweeping damage @@ -9,7 +17,7 @@ public DamageSource knownCause(final org.bukkit.event.entity.EntityDamageEvent.DamageCause cause) { final DamageSource damageSource = this.copy(); -@@ -42,6 +_,30 @@ +@@ -42,6 +44,30 @@ public class DamageSource { return this.knownCause; } @@ -40,7 +48,7 @@ @Nullable public Entity eventEntityDamager() { return this.eventEntityDamager; -@@ -103,6 +_,8 @@ +@@ -103,6 +129,8 @@ public class DamageSource { damageSource.eventBlockDamager = this.eventBlockDamager; damageSource.fromBlockSnapshot = this.fromBlockSnapshot; damageSource.critical = this.critical; @@ -49,7 +57,7 @@ return damageSource; } // CraftBukkit end -@@ -169,11 +_,20 @@ +@@ -169,12 +197,21 @@ public class DamageSource { } else { Component component = this.causingEntity == null ? this.directEntity.getDisplayName() : this.causingEntity.getDisplayName(); ItemStack itemStack = this.causingEntity instanceof LivingEntity livingEntity1 ? livingEntity1.getMainHandItem() : ItemStack.EMPTY; @@ -59,7 +67,7 @@ : Component.translatable(string, livingEntity.getDisplayName(), component); } } -+ + + // Purpur start - Component related conveniences + public Component getLocalizedDeathMessage(String str, LivingEntity entity) { + net.kyori.adventure.text.Component name = io.papermc.paper.adventure.PaperAdventure.asAdventure(entity.getDisplayName()); @@ -68,6 +76,7 @@ + return io.papermc.paper.adventure.PaperAdventure.asVanilla(component); + } + // Purpur end - Component related conveniences - ++ public String getMsgId() { return this.type().msgId(); + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSources.java.patch similarity index 73% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSources.java.patch index 29006dbaf..0d722223f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSources.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/damagesource/DamageSources.java b/net/minecraft/world/damagesource/DamageSources.java +index cc206ecff2d95f0398ca424c178a336ad80cc396..7afad362801082e5f2e3aceda864ad2a7d4e5ebb 100644 --- a/net/minecraft/world/damagesource/DamageSources.java +++ b/net/minecraft/world/damagesource/DamageSources.java -@@ -42,6 +_,8 @@ +@@ -42,6 +42,8 @@ public class DamageSources { private final DamageSource stalagmite; private final DamageSource outsideBorder; private final DamageSource genericKill; @@ -9,7 +17,7 @@ public DamageSources(RegistryAccess registry) { this.damageTypes = registry.lookupOrThrow(Registries.DAMAGE_TYPE); -@@ -70,6 +_,8 @@ +@@ -70,6 +72,8 @@ public class DamageSources { this.stalagmite = this.source(DamageTypes.STALAGMITE); this.outsideBorder = this.source(DamageTypes.OUTSIDE_BORDER); this.genericKill = this.source(DamageTypes.GENERIC_KILL); @@ -18,11 +26,10 @@ } private DamageSource source(ResourceKey damageTypeKey) { -@@ -83,6 +_,18 @@ - private DamageSource source(ResourceKey damageTypeKey, @Nullable Entity causingEntity, @Nullable Entity directEntity) { +@@ -84,6 +88,18 @@ public class DamageSources { return new DamageSource(this.damageTypes.getOrThrow(damageTypeKey), causingEntity, directEntity); } -+ + + // Purpur start - Dont run with scissor + public DamageSource scissors() { + return this.scissors; @@ -34,6 +41,7 @@ + return this.stonecutter; + } + // Purpur end - Stonecutter damage - ++ public DamageSource inFire() { return this.inFire; + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/HungerMobEffect.java.patch similarity index 62% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/HungerMobEffect.java.patch index ea284de7b..5f0d43e75 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/HungerMobEffect.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/effect/HungerMobEffect.java b/net/minecraft/world/effect/HungerMobEffect.java +index 0890694ae96b6cd60079c34066e7a6e288f038e8..6c0e6bd2a171edc57dec71af178764454de73313 100644 --- a/net/minecraft/world/effect/HungerMobEffect.java +++ b/net/minecraft/world/effect/HungerMobEffect.java -@@ -12,7 +_,7 @@ +@@ -12,7 +12,7 @@ class HungerMobEffect extends MobEffect { @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { if (entity instanceof Player player) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/PoisonMobEffect.java.patch similarity index 63% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/PoisonMobEffect.java.patch index 0e8d7e3f7..732885e5d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/PoisonMobEffect.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/effect/PoisonMobEffect.java b/net/minecraft/world/effect/PoisonMobEffect.java +index 75327fd96858fd508ea63a6983e5cbc655a8800f..73cfc61ac3f8e33e6b9f4fd08a292266c0adb535 100644 --- a/net/minecraft/world/effect/PoisonMobEffect.java +++ b/net/minecraft/world/effect/PoisonMobEffect.java -@@ -12,8 +_,8 @@ +@@ -12,8 +12,8 @@ public class PoisonMobEffect extends MobEffect { @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch similarity index 57% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch index f19f319af..9e3889987 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/effect/RegenerationMobEffect.java b/net/minecraft/world/effect/RegenerationMobEffect.java +index 76cffa4d4d18d6c04749d941dbdf5eb60aed4095..81481267a1577721dcc405f39a4c350bd59ac9a2 100644 --- a/net/minecraft/world/effect/RegenerationMobEffect.java +++ b/net/minecraft/world/effect/RegenerationMobEffect.java -@@ -11,7 +_,7 @@ +@@ -11,7 +11,7 @@ class RegenerationMobEffect extends MobEffect { @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { if (entity.getHealth() < entity.getMaxHealth()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/SaturationMobEffect.java.patch similarity index 67% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/SaturationMobEffect.java.patch index f2d21d380..27fca132e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/SaturationMobEffect.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/effect/SaturationMobEffect.java b/net/minecraft/world/effect/SaturationMobEffect.java +index c192165910f6b139df6f604d0bce989061efa9cb..622c23f4570d07de8bee9623bf900aabb3331ded 100644 --- a/net/minecraft/world/effect/SaturationMobEffect.java +++ b/net/minecraft/world/effect/SaturationMobEffect.java -@@ -16,7 +_,8 @@ +@@ -16,7 +16,8 @@ class SaturationMobEffect extends InstantenousMobEffect { int oldFoodLevel = player.getFoodData().foodLevel; org.bukkit.event.entity.FoodLevelChangeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(player, amplifier + 1 + oldFoodLevel); if (!event.isCancelled()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/WitherMobEffect.java.patch similarity index 51% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/WitherMobEffect.java.patch index 767637659..9d523a26c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/WitherMobEffect.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/effect/WitherMobEffect.java b/net/minecraft/world/effect/WitherMobEffect.java +index 1fc9e1ad541c46124183a401b2a7d99aea69cecf..881271f0bc77a8a8a7d31daad9a8188bebaca67b 100644 --- a/net/minecraft/world/effect/WitherMobEffect.java +++ b/net/minecraft/world/effect/WitherMobEffect.java -@@ -12,7 +_,7 @@ +@@ -12,7 +12,7 @@ public class WitherMobEffect extends MobEffect { @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Entity.java.patch similarity index 82% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Entity.java.patch index ef0282cc6..a9964746d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Entity.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java +index c6f1dd8b22156c8e2707c06c0ebe53f22913c31b..1d8ba25d542c49a687414a8b6d1d2fa16ca695d5 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -148,6 +_,7 @@ +@@ -148,6 +148,7 @@ import org.jetbrains.annotations.Contract; import org.slf4j.Logger; public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, ScoreHolder, DataComponentGetter, ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity, ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerEntity { // Paper - rewrite chunk system // Paper - optimise entity tracker @@ -8,7 +16,7 @@ // 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 snapTo -@@ -280,8 +_,9 @@ +@@ -280,8 +281,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public double xOld; public double yOld; public double zOld; @@ -19,7 +27,7 @@ public int tickCount; private int remainingFireTicks; public boolean wasTouchingWater; -@@ -315,8 +_,8 @@ +@@ -315,8 +317,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public PortalProcessor portalProcess; public int portalCooldown; private boolean invulnerable; @@ -30,7 +38,7 @@ private boolean hasGlowingTag; private final Set tags = new io.papermc.paper.util.SizeLimitedSet<>(new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(), MAX_ENTITY_TAG_COUNT); // Paper - fully limit tag size - replace set impl private final double[] pistonDeltas = new double[]{0.0, 0.0, 0.0}; -@@ -371,6 +_,7 @@ +@@ -371,6 +373,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public long activatedTick = Integer.MIN_VALUE; public boolean isTemporarilyActive; public long activatedImmunityTick = Integer.MIN_VALUE; @@ -38,7 +46,7 @@ public void inactiveTick() { } -@@ -533,10 +_,21 @@ +@@ -533,10 +536,21 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Paper end - optimise entity tracker @@ -60,7 +68,7 @@ this.position = Vec3.ZERO; this.blockPosition = BlockPos.ZERO; this.chunkPosition = ChunkPos.ZERO; -@@ -911,6 +_,7 @@ +@@ -911,6 +925,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 @@ -68,7 +76,7 @@ this.onBelowWorld(); } } -@@ -1889,7 +_,7 @@ +@@ -1889,7 +1904,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean fireImmune() { @@ -77,7 +85,7 @@ } public boolean causeFallDamage(double fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2585,6 +_,11 @@ +@@ -2585,6 +2600,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess output.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -89,7 +97,7 @@ } catch (Throwable var7) { CrashReport crashReport = CrashReport.forThrowable(var7, "Saving entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being saved"); -@@ -2705,6 +_,9 @@ +@@ -2705,6 +2725,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } freezeLocked = input.getBooleanOr("Paper.FreezeLock", false); // Paper end @@ -99,7 +107,7 @@ } catch (Throwable var7) { CrashReport crashReport = CrashReport.forThrowable(var7, "Loading entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); -@@ -2983,6 +_,7 @@ +@@ -2983,6 +3006,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess if (this.isAlive() && this instanceof Leashable leashable2) { if (leashable2.getLeashHolder() == player) { if (!this.level().isClientSide()) { @@ -107,7 +115,7 @@ // Paper start - EntityUnleashEvent if (!org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerUnleashEntityEvent( leashable2, player, hand, !player.hasInfiniteMaterials(), true -@@ -3389,15 +_,18 @@ +@@ -3389,15 +3413,18 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Vec3.directionFromRotation(this.getRotationVector()); } @@ -127,7 +135,7 @@ } } } -@@ -3602,7 +_,7 @@ +@@ -3602,7 +3629,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public int getMaxAirSupply() { @@ -136,7 +144,7 @@ } public int getAirSupply() { -@@ -4156,7 +_,7 @@ +@@ -4156,7 +4183,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -145,7 +153,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4681,6 +_,12 @@ +@@ -4681,6 +4708,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -158,7 +166,7 @@ // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { -@@ -5107,7 +_,7 @@ +@@ -5107,7 +5140,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public float maxUpStep() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntitySelector.java.patch similarity index 62% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntitySelector.java.patch index ff1e039a1..68fa69d86 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntitySelector.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/EntitySelector.java b/net/minecraft/world/entity/EntitySelector.java +index 15daba9062d54a5bdf335c3645a3227ccb5a8e06..1842cbe25cc0f9be937caf0a78e915bd3d6ea1e5 100644 --- a/net/minecraft/world/entity/EntitySelector.java +++ b/net/minecraft/world/entity/EntitySelector.java -@@ -28,6 +_,8 @@ +@@ -28,6 +28,8 @@ 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 - Ability to control player's insomnia and phantoms diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntityType.java.patch similarity index 72% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntityType.java.patch index 5fc5f32fc..d285b4e61 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntityType.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/EntityType.java b/net/minecraft/world/entity/EntityType.java +index 96e1f8f40a0af4350155f192ac2126b523c9f0f5..9950fccc0a708e701b81fcabc9e8f370e6d3a19d 100644 --- a/net/minecraft/world/entity/EntityType.java +++ b/net/minecraft/world/entity/EntityType.java -@@ -1105,6 +_,16 @@ +@@ -1105,6 +1105,16 @@ public class EntityType implements FeatureElement, EntityTypeT return register(vanillaEntityId(key), builder); } @@ -17,7 +25,7 @@ public static ResourceLocation getKey(EntityType entityType) { return BuiltInRegistries.ENTITY_TYPE.getKey(entityType); } -@@ -1335,6 +_,16 @@ +@@ -1335,6 +1345,16 @@ public class EntityType implements FeatureElement, EntityTypeT return this.category; } @@ -34,7 +42,7 @@ public String getDescriptionId() { return this.descriptionId; } -@@ -1394,7 +_,11 @@ +@@ -1394,7 +1414,11 @@ public class EntityType implements FeatureElement, EntityTypeT entity.load(input); }, // Paper end - Don't fire sync event during generation diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ExperienceOrb.java.patch similarity index 77% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ExperienceOrb.java.patch index 9a0b557e5..f29255be9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ExperienceOrb.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ExperienceOrb.java b/net/minecraft/world/entity/ExperienceOrb.java +index a62edee768c30c99213baa6bd736d67ae52b558c..c8354d46ed909090f7c15f396863bf7d73afcefa 100644 --- a/net/minecraft/world/entity/ExperienceOrb.java +++ b/net/minecraft/world/entity/ExperienceOrb.java -@@ -358,7 +_,7 @@ +@@ -358,7 +358,7 @@ public class ExperienceOrb extends Entity { public void playerTouch(Player entity) { if (entity instanceof ServerPlayer serverPlayer) { if (entity.takeXpDelay == 0 && new com.destroystokyo.paper.event.player.PlayerPickupExperienceEvent(serverPlayer.getBukkitEntity(), (org.bukkit.entity.ExperienceOrb) this.getBukkitEntity()).callEvent()) { // Paper - PlayerPickupExperienceEvent @@ -9,7 +17,7 @@ entity.take(this, 1); int i = this.repairPlayerItems(serverPlayer, this.getValue()); if (i > 0) { -@@ -374,7 +_,7 @@ +@@ -374,7 +374,7 @@ public class ExperienceOrb extends Entity { } private int repairPlayerItems(ServerPlayer player, int value) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/GlowSquid.java.patch similarity index 50% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/GlowSquid.java.patch index 384908afc..74e8e4466 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/GlowSquid.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java +index aab9adb8313c4b18279c7fd7500ef04bda09c6c1..f0c452ddc4b299a930de261722cc41a89aa78eeb 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java -@@ -27,6 +_,13 @@ +@@ -27,6 +27,13 @@ public class GlowSquid extends Squid { super(entityType, level); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/LivingEntity.java.patch similarity index 85% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/LivingEntity.java.patch index e1f8f1495..31d06d740 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/LivingEntity.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java +index 35d71978a3d360eed97feb66d1048bee337ef2b9..96e47e6145a4cce8c154a05f9b155c1ba74bfa6a 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -444,6 +_,12 @@ +@@ -444,6 +444,12 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin if (d < 0.0) { double damagePerBlock = serverLevel1.getWorldBorder().getDamagePerBlock(); if (damagePerBlock > 0.0) { @@ -13,7 +21,7 @@ this.hurtServer(serverLevel1, this.damageSources().outOfBorder(), Math.max(1, Mth.floor(-d * damagePerBlock))); } } -@@ -456,10 +_,10 @@ +@@ -456,10 +462,10 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin && (!flag || !((Player)this).getAbilities().invulnerable); if (flag1) { this.setAirSupply(this.decreaseAirSupply(this.getAirSupply())); @@ -26,7 +34,7 @@ } } else if (this.getAirSupply() < this.getMaxAirSupply()) { this.setAirSupply(this.increaseAirSupply(this.getAirSupply())); -@@ -1039,14 +_,32 @@ +@@ -1039,15 +1045,33 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin if (lookingEntity != null) { ItemStack itemBySlot = this.getItemBySlot(EquipmentSlot.HEAD); EntityType type = lookingEntity.getType(); @@ -36,15 +44,13 @@ - || type == EntityType.PIGLIN_BRUTE && itemBySlot.is(Items.PIGLIN_HEAD) - || type == EntityType.CREEPER && itemBySlot.is(Items.CREEPER_HEAD)) { - d *= 0.5; -- } -- } + // Purpur start - Mob head visibility percent + if (type == EntityType.SKELETON && itemBySlot.is(Items.SKELETON_SKULL)) { + d *= lookingEntity.level().purpurConfig.skeletonHeadVisibilityPercent; + } + else if (type == EntityType.ZOMBIE && itemBySlot.is(Items.ZOMBIE_HEAD)) { + d *= lookingEntity.level().purpurConfig.zombieHeadVisibilityPercent; -+ } + } + else if ((type == EntityType.PIGLIN || type == EntityType.PIGLIN_BRUTE) && itemBySlot.is(Items.PIGLIN_HEAD)) { + d *= lookingEntity.level().purpurConfig.piglinHeadVisibilityPercent; + } @@ -52,8 +58,8 @@ + d *= lookingEntity.level().purpurConfig.creeperHeadVisibilityPercent; + } + // Purpur end - Mob head visibility percent -+ } -+ + } + + // Purpur start - Configurable mob blindness + if (lookingEntity instanceof LivingEntity entityliving) { + if (entityliving.hasEffect(MobEffects.BLINDNESS)) { @@ -64,10 +70,11 @@ + } + } + // Purpur end - Configurable mob blindness - ++ return d; } -@@ -1093,6 +_,7 @@ + +@@ -1093,6 +1117,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin Iterator iterator = this.activeEffects.values().iterator(); while (iterator.hasNext()) { MobEffectInstance effect = iterator.next(); @@ -75,7 +82,7 @@ EntityPotionEffectEvent event = CraftEventFactory.callEntityPotionEffectChangeEvent(this, effect, null, cause, EntityPotionEffectEvent.Action.CLEARED); if (event.isCancelled()) { continue; -@@ -1417,6 +_,24 @@ +@@ -1417,6 +1442,24 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin this.stopSleeping(); } @@ -100,7 +107,7 @@ this.noActionTime = 0; if (amount < 0.0F) { amount = 0.0F; -@@ -1678,10 +_,10 @@ +@@ -1678,10 +1721,10 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin protected Player resolvePlayerResponsibleForDamage(DamageSource damageSource) { Entity entity = damageSource.getEntity(); if (entity instanceof Player player) { @@ -113,7 +120,7 @@ } else { this.lastHurtByPlayer = null; this.lastHurtByPlayerMemoryTime = 0; -@@ -1732,6 +_,18 @@ +@@ -1732,6 +1775,18 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin } } @@ -132,7 +139,7 @@ final org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null; final EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemStack == null); -@@ -1907,6 +_,7 @@ +@@ -1907,6 +1962,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin boolean flag = this.lastHurtByPlayerMemoryTime > 0; this.dropEquipment(level); // CraftBukkit - from below if (this.shouldDropLoot() && level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -140,7 +147,7 @@ this.dropFromLootTable(level, damageSource, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1915,6 +_,7 @@ +@@ -1915,6 +1971,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin // Paper end this.dropCustomDeathLoot(level, damageSource, flag); this.clearEquipmentSlots = prev; // Paper @@ -148,7 +155,7 @@ } // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment -@@ -3109,6 +_,7 @@ +@@ -3109,6 +3166,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin float f = (float)(d * 10.0 - 3.0); if (f > 0.0F) { this.playSound(this.getFallDamageSound((int)f), 1.0F, 1.0F); @@ -156,16 +163,16 @@ this.hurt(this.damageSources().flyIntoWall(), f); } } -@@ -4507,6 +_,12 @@ - ? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND) +@@ -4508,6 +4566,12 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType()); } -+ + + // Purpur start - Dispenser curse of binding protection + public @Nullable EquipmentSlot getEquipmentSlotForDispenserItem(ItemStack itemstack) { + return EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.BINDING_CURSE, itemstack) > 0 ? null : this.getEquipmentSlotForItem(itemstack); + } + // Purpur end - Dispenser curse of binding protection - ++ private static SlotAccess createEquipmentSlotAccess(LivingEntity entity, EquipmentSlot slot) { return slot != EquipmentSlot.HEAD && slot != EquipmentSlot.MAINHAND && slot != EquipmentSlot.OFFHAND + ? SlotAccess.forEquipmentSlot(entity, slot, itemStack -> itemStack.isEmpty() || entity.getEquipmentSlotForItem(itemStack) == slot) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Mob.java.patch similarity index 71% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Mob.java.patch index e8ab66d11..866f257ce 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Mob.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java +index 0470c4bbf8be7e48ce8dfa4910c3b9f5ebb23360..9784ae86390748bf72e2cc75d67b99f766335ee8 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -139,6 +_,7 @@ +@@ -139,6 +139,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab private BlockPos homePosition = BlockPos.ZERO; private int homeRadius = -1; public boolean aware = true; // CraftBukkit @@ -8,7 +16,7 @@ protected Mob(EntityType entityType, Level level) { super(entityType, level); -@@ -284,6 +_,7 @@ +@@ -284,6 +285,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab target = null; } } @@ -16,14 +24,13 @@ this.target = target; return true; // CraftBukkit end -@@ -327,7 +_,27 @@ +@@ -327,8 +329,28 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } profilerFiller.pop(); -- } + incrementTicksSinceLastInteraction(); // Purpur - Entity lifespan -+ } -+ + } + + // Purpur start - Entity lifespan + private void incrementTicksSinceLastInteraction() { + ++this.ticksSinceLastInteraction; @@ -42,10 +49,11 @@ + } + } + // Purpur end - Entity lifespan - ++ @Override protected void playHurtSound(DamageSource source) { -@@ -427,6 +_,7 @@ + this.resetAmbientSoundTime(); +@@ -427,6 +449,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab output.putBoolean("NoAI", this.isNoAi()); } output.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit @@ -53,7 +61,7 @@ } @Override -@@ -454,6 +_,7 @@ +@@ -454,6 +477,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.lootTableSeed = input.getLongOr("DeathLootTableSeed", 0L); this.setNoAi(input.getBooleanOr("NoAI", false)); this.aware = input.getBooleanOr("Bukkit.Aware", true); // CraftBukkit @@ -61,7 +69,7 @@ } @Override -@@ -1188,7 +_,7 @@ +@@ -1188,7 +1212,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab ); } @@ -70,7 +78,7 @@ return spawnGroupData; } -@@ -1525,6 +_,7 @@ +@@ -1525,6 +1549,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.playAttackSound(); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch new file mode 100644 index 000000000..bfc589af2 --- /dev/null +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch @@ -0,0 +1,18 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/attributes/RangedAttribute.java b/net/minecraft/world/entity/ai/attributes/RangedAttribute.java +index a87accd5fe14102e7a2938f991a8ed0b9accd1bb..c7515f7f24e39d6931dcf18574cb47d754983903 100644 +--- a/net/minecraft/world/entity/ai/attributes/RangedAttribute.java ++++ b/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 - Add attribute clamping and armor limit config + return Double.isNaN(value) ? this.minValue : Mth.clamp(value, this.minValue, this.maxValue); + } + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch similarity index 73% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch index c457ae742..74b7ad1fb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +index b9174ae7e3a3e2de2d570b95ab5012ac3c3a2eda..67cbf9f5760fae5db6f31e64095cd1b6be6ade8e 100644 --- a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +++ b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -@@ -86,7 +_,7 @@ +@@ -86,7 +86,7 @@ public class AcquirePoi { }; // Paper start - optimise POI access final java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch similarity index 80% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch index f90e63ebd..86393eba0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java b/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java +index 296ecffbbce931b42c67ea523373a61cea23acf4..b2eec24be3635f2c19da9b147211fe6cb454c780 100644 --- a/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java +++ b/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java -@@ -55,7 +_,7 @@ +@@ -55,7 +55,7 @@ public class InteractWithDoor { Node nextNode = path.getNextNode(); BlockPos blockPos = previousNode.asBlockPos(); BlockState blockState = level.getBlockState(blockPos); @@ -9,7 +17,7 @@ DoorBlock doorBlock = (DoorBlock)blockState.getBlock(); if (!doorBlock.isOpen(blockState)) { // CraftBukkit start - entities opening doors -@@ -72,7 +_,7 @@ +@@ -72,7 +72,7 @@ public class InteractWithDoor { BlockPos blockPos1 = nextNode.asBlockPos(); BlockState blockState1 = level.getBlockState(blockPos1); @@ -18,7 +26,7 @@ DoorBlock doorBlock1 = (DoorBlock)blockState1.getBlock(); if (!doorBlock1.isOpen(blockState1)) { // CraftBukkit start - entities opening doors -@@ -118,7 +_,7 @@ +@@ -118,7 +118,7 @@ public class InteractWithDoor { iterator.remove(); } else { BlockState blockState = level.getBlockState(blockPos); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch similarity index 52% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch index 2bbc2776e..14a0a889d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java b/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java +index 400e6d49144b3e5803901938dcd2ac4e52e9c131..45c45afeffcfba3558bdf46cbe39ff60004ffc01 100644 --- a/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java +++ b/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java -@@ -46,6 +_,7 @@ +@@ -46,6 +46,7 @@ public class ShowTradesToPlayer extends Behavior { @Override public boolean canStillUse(ServerLevel level, Villager entity, long gameTime) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch similarity index 63% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch index 6fbb7bf98..2bff0ce20 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java b/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java +index 6eaf0bd944349cd0c6084462ac385fa2caafe933..be59d0c27a83b329ec3f97c029cfb9c114e22472 100644 --- a/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java +++ b/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java -@@ -22,6 +_,7 @@ +@@ -22,6 +22,7 @@ public class LlamaFollowCaravanGoal extends Goal { @Override public boolean canUse() { @@ -8,7 +16,7 @@ if (!this.llama.isLeashed() && !this.llama.inCaravan()) { List entities = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0, 4.0, 9.0), entity1 -> { EntityType type = entity1.getType(); -@@ -71,6 +_,7 @@ +@@ -71,6 +72,7 @@ public class LlamaFollowCaravanGoal extends Goal { @Override public boolean canContinueToUse() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch similarity index 53% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch index f623c03a9..02b67d3bb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java b/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java +index 722f378bb3726200b6fe88948bf1e1d3514a7b5c..e337e22c2cf82b0c1cab3fe0a9ff894c0c718716 100644 --- a/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java +++ b/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java -@@ -116,9 +_,9 @@ +@@ -116,9 +116,9 @@ public class RangedBowAttackGoal extends Go } this.mob.lookAt(target, 30.0F, 30.0F); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch similarity index 71% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch index cb39bb4e0..98ef84e68 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java b/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java +index 878d7813b3f2f52bef336c6d855d738bc2f83491..d0f94f065d2ecf6ca6b47ac49422ffa656a18f55 100644 --- a/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java +++ b/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java -@@ -58,7 +_,7 @@ +@@ -58,7 +58,7 @@ public class RunAroundLikeCrazyGoal extends Goal { if (firstPassenger instanceof Player player) { int temper = this.horse.getTemper(); int maxTemper = this.horse.getMaxTemper(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch similarity index 66% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch index b072c14f4..812ee0dc0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/goal/SwellGoal.java b/net/minecraft/world/entity/ai/goal/SwellGoal.java +index 243a552f6f0c8c2bd25c0209c95e3bca08734711..38fd0196a0f5a90e39fa4eb8592f89bf6b88ccf5 100644 --- a/net/minecraft/world/entity/ai/goal/SwellGoal.java +++ b/net/minecraft/world/entity/ai/goal/SwellGoal.java -@@ -55,6 +_,14 @@ +@@ -55,6 +55,14 @@ public class SwellGoal extends Goal { this.creeper.setSwellDir(-1); } else { this.creeper.setSwellDir(1); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch similarity index 68% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch index 7e2366a32..d60183d9f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +index 066faa704338c573472381e1ebd063e0d52aaaa4..1f96fd5085bacb4c584576c7cb9f51e7898e9b03 100644 --- a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +++ b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -@@ -56,7 +_,7 @@ +@@ -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. diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch similarity index 59% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch index df5fd519b..5178b7d6b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +index 2f8920d8ee765d057a22d76f24f7d7dc1b0b17ca..6f0fcaeaba2fec2ad944d63550f0c3e29bd9133c 100644 --- a/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -@@ -64,6 +_,10 @@ +@@ -64,6 +64,10 @@ public class TargetingConditions { return false; } else if (this.selector != null && !this.selector.test(target, level)) { return false; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ambient/Bat.java.patch similarity index 67% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ambient/Bat.java.patch index d6070948c..f768c9dbf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ambient/Bat.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java +index 912b099a51269f92f250c7d6094ad41817749f93..c1c9d056f5c78d26c777728c09b2481f9ccd1c3b 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java -@@ -233,7 +_,7 @@ +@@ -233,7 +233,7 @@ public class Bat extends AmbientCreature { } else { int maxLocalRawBrightness = level.getMaxLocalRawBrightness(pos); int i = 4; @@ -9,7 +17,7 @@ i = 7; } else if (randomSource.nextBoolean()) { return false; -@@ -245,6 +_,11 @@ +@@ -245,6 +245,11 @@ public class Bat extends AmbientCreature { } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/AbstractCow.java.patch similarity index 89% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/AbstractCow.java.patch index 3c0826a05..44d2fd86d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/AbstractCow.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/AbstractCow.java b/net/minecraft/world/entity/animal/AbstractCow.java +index dd8ea03ba823996a5c97562e357650ab34d0e32e..4e81bc7215c845b316bcd46ce29f49af7f986088 100644 --- a/net/minecraft/world/entity/animal/AbstractCow.java +++ b/net/minecraft/world/entity/animal/AbstractCow.java -@@ -39,7 +_,7 @@ +@@ -39,7 +39,7 @@ public abstract class AbstractCow extends Animal { this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(1, new PanicGoal(this, 2.0)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0)); @@ -9,7 +17,7 @@ this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); -@@ -95,6 +_,10 @@ +@@ -95,6 +95,10 @@ public abstract class AbstractCow extends Animal { ItemStack itemStack = ItemUtils.createFilledResult(itemInHand, player, org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getItemStack())); // CraftBukkit player.setItemInHand(hand, itemStack); return InteractionResult.SUCCESS; @@ -20,7 +28,7 @@ } else { return super.mobInteract(player, hand); } -@@ -104,4 +_,67 @@ +@@ -104,4 +108,67 @@ public abstract class AbstractCow extends Animal { public EntityDimensions getDefaultDimensions(Pose pose) { return this.isBaby() ? BABY_DIMENSIONS : super.getDefaultDimensions(pose); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Animal.java.patch similarity index 82% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Animal.java.patch index e8f8ff304..a639fe758 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Animal.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Animal.java b/net/minecraft/world/entity/animal/Animal.java +index cdf44c2586db396f1afdcbae4174b8b4fb00f48e..235f6514328338d28c2bf967bcd06f1413f12c65 100644 --- a/net/minecraft/world/entity/animal/Animal.java +++ b/net/minecraft/world/entity/animal/Animal.java -@@ -143,7 +_,7 @@ +@@ -143,7 +143,7 @@ public abstract class Animal extends AgeableMob { ItemStack itemInHand = player.getItemInHand(hand); if (this.isFood(itemInHand)) { int age = this.getAge(); @@ -9,7 +17,7 @@ final ItemStack breedCopy = itemInHand.copy(); // Paper - Fix EntityBreedEvent copying this.usePlayerItem(player, hand, itemInHand); this.setInLove(serverPlayer, breedCopy); // Paper - Fix EntityBreedEvent copying -@@ -235,10 +_,20 @@ +@@ -235,10 +235,20 @@ public abstract class Animal extends AgeableMob { public void spawnChildFromBreeding(ServerLevel level, Animal mate) { AgeableMob breedOffspring = this.getBreedOffspring(level, mate); if (breedOffspring != null) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Bee.java.patch similarity index 79% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Bee.java.patch index 41eefdb1a..6fa75eacc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Bee.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java +index d40954f03c865bfbc5beb308bbcf7b7c9ac48eb9..5588eb85a101f118fcaeb0a085f4d3b69498c72d 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -168,7 +_,7 @@ +@@ -168,7 +168,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { // Paper end - Fix MC-167279 this.lookControl = new Bee.BeeLookControl(this); this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F); @@ -9,7 +17,7 @@ this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F); this.setPathfindingMalus(PathType.COCOA, -1.0F); this.setPathfindingMalus(PathType.FENCE, -1.0F); -@@ -366,7 +_,7 @@ +@@ -366,7 +366,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } public static boolean isNightOrRaining(Level level) { @@ -18,7 +26,7 @@ } public void setStayOutOfHiveCountdown(int stayOutOfHiveCountdown) { -@@ -389,7 +_,7 @@ +@@ -389,7 +389,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override protected void customServerAiStep(ServerLevel level) { boolean hasStung = this.hasStung(); @@ -27,7 +35,7 @@ this.underWaterTicks++; } else { this.underWaterTicks = 0; -@@ -399,6 +_,7 @@ +@@ -399,6 +399,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.hurtServer(level, this.damageSources().drown(), 1.0F); } @@ -35,7 +43,7 @@ if (hasStung) { this.timeSinceSting++; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { -@@ -1133,6 +_,7 @@ +@@ -1133,6 +1134,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { Bee.this.savedFlowerPos = optional.get(); Bee.this.navigation .moveTo(Bee.this.savedFlowerPos.getX() + 0.5, Bee.this.savedFlowerPos.getY() + 0.5, Bee.this.savedFlowerPos.getZ() + 0.5, 1.2F); @@ -43,7 +51,7 @@ return true; } else { Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60); -@@ -1179,6 +_,7 @@ +@@ -1179,6 +1181,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.pollinating = false; Bee.this.navigation.stop(); Bee.this.remainingCooldownBeforeLocatingNewFlower = 200; @@ -51,7 +59,7 @@ } @Override -@@ -1225,6 +_,7 @@ +@@ -1225,6 +1228,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.setWantedPos(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Cat.java.patch similarity index 70% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Cat.java.patch index b8bee71f9..9eae81c68 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Cat.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java +index 7d20de1741e5e9219dea84fe5692f31c05fa82a2..5b9d8c85f91396287b0deb4deac30e2c136cc461 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java -@@ -354,6 +_,14 @@ +@@ -354,6 +354,14 @@ public class Cat extends TamableAnimal { return this.isTame() && otherAnimal instanceof Cat cat && cat.isTame() && super.canMate(otherAnimal); } @@ -15,7 +23,7 @@ @Nullable @Override public SpawnGroupData finalizeSpawn( -@@ -452,7 +_,7 @@ +@@ -452,7 +460,7 @@ public class Cat extends TamableAnimal { } private void tryToTame(Player player) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Dolphin.java.patch similarity index 81% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Dolphin.java.patch index 0e09ac94d..fd769ca9c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Dolphin.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java +index 4bb273b11dbfbc6557c6771f79aa63f5f69d03cf..f4a6f17bb158146e7287ab46930cd57c0ffb9454 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java -@@ -74,6 +_,7 @@ +@@ -74,6 +74,7 @@ public class Dolphin extends AgeableWaterCreature { private static final boolean DEFAULT_GOT_FISH = false; @Nullable public BlockPos treasurePos; @@ -8,7 +16,7 @@ public Dolphin(EntityType entityType, Level level) { super(entityType, level); -@@ -90,6 +_,7 @@ +@@ -90,6 +91,7 @@ public class Dolphin extends AgeableWaterCreature { this.setAirSupply(this.getMaxAirSupply()); this.setXRot(0.0F); SpawnGroupData spawnGroupData1 = Objects.requireNonNullElseGet(spawnGroupData, () -> new AgeableMob.AgeableMobGroupData(0.1F)); @@ -16,7 +24,7 @@ return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData1); } -@@ -156,17 +_,19 @@ +@@ -156,17 +158,19 @@ public class Dolphin extends AgeableWaterCreature { protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); @@ -37,7 +45,7 @@ } public static AttributeSupplier.Builder createAttributes() { -@@ -399,6 +_,7 @@ +@@ -399,6 +403,7 @@ public class Dolphin extends AgeableWaterCreature { @Override public boolean canUse() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Fox.java.patch similarity index 75% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Fox.java.patch index 134e6108c..963475b67 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Fox.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java +index 517c546cfc8eca2191df57289e6a22ac64fc867c..354c7a41407fc6518965d09bfe3089676b6da794 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -346,6 +_,11 @@ +@@ -346,6 +346,11 @@ public class Fox extends Animal { } private void setTargetGoals() { @@ -12,7 +20,7 @@ if (this.getVariant() == Fox.Variant.RED) { this.targetSelector.addGoal(4, this.landTargetGoal); this.targetSelector.addGoal(4, this.turtleEggTargetGoal); -@@ -373,6 +_,7 @@ +@@ -373,6 +378,7 @@ public class Fox extends Animal { public void setVariant(Fox.Variant variant) { this.entityData.set(DATA_TYPE_ID, variant.getId()); @@ -20,11 +28,10 @@ } @Nullable -@@ -702,6 +_,29 @@ - return slot == EquipmentSlot.MAINHAND; +@@ -703,6 +709,29 @@ public class Fox extends Animal { } // Paper end -+ + + // Purpur start - Tulips change fox type + @Override + public net.minecraft.world.InteractionResult mobInteract(Player player, net.minecraft.world.InteractionHand hand) { @@ -47,6 +54,7 @@ + return super.mobInteract(player, hand); + } + // Purpur end - Tulips change fox type - ++ @Override // Paper start - Cancellable death event + protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(ServerLevel level, DamageSource damageSource) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/IronGolem.java.patch similarity index 75% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/IronGolem.java.patch index 322e86a71..0ed2f8b7c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/IronGolem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java +index db309a1261778cc65da9b4bf5a962a372b83bba6..25e0438e1a98dc5f6aaabba8af2295cec871d6f1 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java -@@ -58,13 +_,26 @@ +@@ -58,13 +58,26 @@ public class IronGolem extends AbstractGolem implements NeutralMob { private int remainingPersistentAngerTime; @Nullable private UUID persistentAngerTarget; @@ -27,7 +35,7 @@ this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9, 32.0F)); this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6, false)); -@@ -142,6 +_,7 @@ +@@ -142,6 +155,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); output.putBoolean("PlayerCreated", this.isPlayerCreated()); @@ -35,7 +43,7 @@ this.addPersistentAngerSaveData(output); } -@@ -149,6 +_,7 @@ +@@ -149,6 +163,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { protected void readAdditionalSaveData(ValueInput input) { super.readAdditionalSaveData(input); this.setPlayerCreated(input.getBooleanOr("PlayerCreated", false)); @@ -43,7 +51,7 @@ this.readPersistentAngerSaveData(this.level(), input); } -@@ -268,6 +_,7 @@ +@@ -268,6 +283,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { float f = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; this.playSound(SoundEvents.IRON_GOLEM_REPAIR, 1.0F, f); itemInHand.consume(1, player); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/MushroomCow.java.patch similarity index 67% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/MushroomCow.java.patch index 0666bfab4..1daf7b722 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/MushroomCow.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java +index 1f82848c97c5b52d6c4225b07a895f00d20c7d6c..32f3d5f66fb61074a2f9db751c0b3e16af9cf3ce 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -199,6 +_,13 @@ +@@ -199,6 +199,13 @@ public class MushroomCow extends AbstractCow implements Shearable { level.playSound(null, this, SoundEvents.MOOSHROOM_SHEAR, soundSource, 1.0F, 1.0F); this.convertTo(EntityType.COW, ConversionParams.single(this, false, false), cow -> { level.sendParticles(ParticleTypes.EXPLOSION, this.getX(), this.getY(0.5), this.getZ(), 1, 0.0, 0.0, 0.0, 0.0); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Ocelot.java.patch similarity index 56% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Ocelot.java.patch index 48b3a30ef..588499745 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Ocelot.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java +index e8b184f2e1a98e565a50ce6ae6cab248d5a6e89b..a304a09eb20b84033ea9b84cf577749fe842fc57 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java -@@ -234,7 +_,7 @@ +@@ -234,7 +234,7 @@ public class Ocelot extends Animal { public boolean checkSpawnObstruction(LevelReader level) { if (level.isUnobstructed(this) && !level.containsAnyLiquid(this.getBoundingBox())) { BlockPos blockPos = this.blockPosition(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Parrot.java.patch similarity index 74% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Parrot.java.patch index aa96df2cb..4c6ec70ad 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Parrot.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java +index 22d1e36dadd6a8cbf615335074426aaab6ea7d01..50d836960e6b2d7dae760ac648b5999d8c58b785 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java -@@ -159,6 +_,7 @@ +@@ -159,6 +159,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { protected void registerGoals() { this.goalSelector.addGoal(0, new TamableAnimal.TamableAnimalPanicGoal(1.25)); this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -8,7 +16,7 @@ this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0, 5.0F, 1.0F)); -@@ -264,7 +_,7 @@ +@@ -264,7 +265,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { } if (!this.level().isClientSide) { @@ -17,7 +25,7 @@ this.tame(player); this.level().broadcastEntityEvent(this, (byte)7); } else { -@@ -272,6 +_,7 @@ +@@ -272,6 +273,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { } } @@ -25,7 +33,7 @@ return InteractionResult.SUCCESS; } else if (!itemInHand.is(ItemTags.PARROT_POISONOUS_FOOD)) { if (!this.isFlying() && this.isTame() && this.isOwnedBy(player)) { -@@ -296,7 +_,7 @@ +@@ -296,7 +298,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @Override public boolean isFood(ItemStack stack) { @@ -34,7 +42,7 @@ } public static boolean checkParrotSpawnRules( -@@ -311,13 +_,13 @@ +@@ -311,13 +313,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @Override public boolean canMate(Animal otherAnimal) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Pig.java.patch similarity index 69% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Pig.java.patch index 3758d8143..891c399f5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Pig.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java +index 155a51233895955d01c2ee73416e2daefc4dfd0f..858913db98c6f46867e5f5d3d1231e7f94b669ab 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java -@@ -142,6 +_,19 @@ +@@ -142,6 +142,19 @@ public class Pig extends Animal implements ItemSteerable { @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { boolean isFood = this.isFood(player.getItemInHand(hand)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/PolarBear.java.patch similarity index 78% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/PolarBear.java.patch index 869d2910f..d97ee5600 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/PolarBear.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java +index d727e8e93e466b9bb91cbb43b9c1bbbccc56d486..0cbe162c952fe3cba5c33284d766aea514d6a40b 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java -@@ -65,6 +_,29 @@ +@@ -65,6 +65,29 @@ public class PolarBear extends Animal implements NeutralMob { super(entityType, level); } @@ -30,7 +38,7 @@ @Nullable @Override public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { -@@ -73,7 +_,7 @@ +@@ -73,7 +96,7 @@ public class PolarBear extends Animal implements NeutralMob { @Override public boolean isFood(ItemStack stack) { @@ -39,7 +47,7 @@ } @Override -@@ -82,6 +_,12 @@ +@@ -82,6 +105,12 @@ public class PolarBear extends Animal implements NeutralMob { this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(1, new PolarBear.PolarBearMeleeAttackGoal()); this.goalSelector.addGoal(1, new PanicGoal(this, 2.0, mob -> mob.isBaby() ? DamageTypeTags.PANIC_CAUSES : DamageTypeTags.PANIC_ENVIRONMENTAL_CAUSES)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Rabbit.java.patch similarity index 73% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Rabbit.java.patch index ea0874b61..77dcd5136 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Rabbit.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java +index ac99590dad689f2cfffb9b9e2465f6a252d41e9c..880cb3bdbd389a798c202c4dd572bf2b74bc0847 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java -@@ -404,10 +_,23 @@ +@@ -404,10 +404,23 @@ public class Rabbit extends Animal { } this.setVariant(randomRabbitVariant); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/SnowGolem.java.patch similarity index 81% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/SnowGolem.java.patch index a3cb9e147..c038f3596 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/SnowGolem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java +index 1b3a020e35fb2f9a28be718415c51fde5b52d399..1a7c14f9307629386af0a62b3e19545728fa3a8d 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java -@@ -46,15 +_,27 @@ +@@ -46,15 +46,27 @@ 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 boolean DEFAULT_PUMPKIN = true; @@ -30,7 +38,7 @@ this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Mob.class, 10, true, false, (entity, level) -> entity instanceof Enemy)); -@@ -74,12 +_,14 @@ +@@ -74,12 +86,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); output.putBoolean("Pumpkin", this.hasPumpkin()); @@ -45,7 +53,7 @@ } @Override -@@ -153,6 +_,14 @@ +@@ -153,6 +167,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM } return InteractionResult.SUCCESS; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Squid.java.patch similarity index 80% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Squid.java.patch index 83c0aed86..f5e33088d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Squid.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java +index 58e1bc90cbc32669fa6c66d214119f0c459ff38c..2e51e64991d326fc055520b6fefc76e80f7c2d97 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java -@@ -46,10 +_,29 @@ +@@ -46,10 +46,29 @@ public class Squid extends AgeableWaterCreature { public Squid(EntityType entityType, Level level) { super(entityType, level); @@ -31,7 +39,7 @@ @Override protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); -@@ -127,6 +_,7 @@ +@@ -127,6 +146,7 @@ public class Squid extends AgeableWaterCreature { } if (this.isInWater()) { @@ -39,7 +47,7 @@ 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; -@@ -308,7 +_,7 @@ +@@ -308,7 +328,7 @@ public class Squid extends AgeableWaterCreature { int noActionTime = this.squid.getNoActionTime(); if (noActionTime > 100) { this.squid.movementVector = Vec3.ZERO; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch similarity index 64% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch index 3552d2bfc..1574db276 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/WaterAnimal.java b/net/minecraft/world/entity/animal/WaterAnimal.java +index 2b5e091b6ebe17e30d8d0e73999e19eed49e9a9f..6ff9ca735eba1c3376f3bc4916d5ab76af782de1 100644 --- a/net/minecraft/world/entity/animal/WaterAnimal.java +++ b/net/minecraft/world/entity/animal/WaterAnimal.java -@@ -76,8 +_,7 @@ +@@ -76,8 +76,7 @@ public abstract class WaterAnimal extends PathfinderMob { seaLevel = level.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(seaLevel); i = level.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(i); // Paper end - Make water animal spawn height configurable diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/goat/Goat.java.patch similarity index 57% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/goat/Goat.java.patch index 71d967ea2..458800dbc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/goat/Goat.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java +index 75af1b92a0a60cffa3317d83bd599a3d4d26f93c..d5e5ea2a20739b81742b1a5323d19f2d01baec25 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -396,6 +_,7 @@ +@@ -396,6 +396,7 @@ public class Goat extends Animal { // Paper start - Goat ram API public void ram(net.minecraft.world.entity.LivingEntity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/horse/Llama.java.patch similarity index 67% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/horse/Llama.java.patch index 3a614d8c8..0a2a5671c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/horse/Llama.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java +index 1e2b629641e5fa1040307461dbbf03ad2d75ba00..5e3382351b1b5728750534f64babc85c4da3ac54 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -78,6 +_,7 @@ +@@ -78,6 +78,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { private Llama caravanHead; @Nullable public Llama caravanTail; // Paper @@ -8,7 +16,7 @@ public Llama(EntityType entityType, Level level) { super(entityType, level); -@@ -112,6 +_,7 @@ +@@ -112,6 +113,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { super.addAdditionalSaveData(output); output.store("Variant", Llama.Variant.LEGACY_CODEC, this.getVariant()); output.putInt("Strength", this.getStrength()); @@ -16,7 +24,7 @@ } @Override -@@ -119,6 +_,7 @@ +@@ -119,6 +121,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { this.setStrength(input.getIntOr("Strength", 0)); super.readAdditionalSaveData(input); this.setVariant(input.read("Variant", Llama.Variant.LEGACY_CODEC).orElse(Llama.Variant.DEFAULT)); @@ -24,7 +32,7 @@ } @Override -@@ -400,6 +_,7 @@ +@@ -400,6 +403,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { public void leaveCaravan() { if (this.caravanHead != null) { @@ -32,7 +40,7 @@ this.caravanHead.caravanTail = null; } -@@ -407,6 +_,7 @@ +@@ -407,6 +411,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { } public void joinCaravan(Llama caravanHead) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch similarity index 89% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch index a696b0e4b..d967009f9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java +index dca01e7e6af74bc6e26d4968ccdf0c34f8707b94..6fc2d5d558832dd55479deb9ad5984fbe81c9bee 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java -@@ -99,6 +_,37 @@ +@@ -99,6 +99,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { EntityType type = entity.getType(); return type == EntityType.SHEEP || type == EntityType.RABBIT || type == EntityType.FOX; }; @@ -38,7 +46,7 @@ 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; -@@ -121,12 +_,47 @@ +@@ -121,12 +152,47 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.setPathfindingMalus(PathType.DANGER_POWDER_SNOW, -1.0F); } @@ -86,7 +94,7 @@ this.goalSelector.addGoal(4, new LeapAtTargetGoal(this, 0.4F)); this.goalSelector.addGoal(5, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(6, new FollowOwnerGoal(this, 1.0, 10.0F, 2.0F)); -@@ -139,7 +_,7 @@ +@@ -139,7 +205,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, new HurtByTargetGoal(this).setAlertOthers()); this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); @@ -95,7 +103,7 @@ 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)); -@@ -230,6 +_,7 @@ +@@ -230,6 +296,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); output.store("CollarColor", DyeColor.LEGACY_ID_CODEC, this.getCollarColor()); @@ -103,7 +111,7 @@ VariantUtils.writeVariant(output, this.getVariant()); this.addPersistentAngerSaveData(output); this.getSoundVariant() -@@ -244,6 +_,10 @@ +@@ -244,6 +311,10 @@ public class Wolf extends TamableAnimal implements NeutralMob { super.readAdditionalSaveData(input); VariantUtils.readVariant(input, Registries.WOLF_VARIANT).ifPresent(this::setVariant); this.setCollarColor(input.read("CollarColor", DyeColor.LEGACY_ID_CODEC).orElse(DEFAULT_COLLAR_COLOR)); @@ -114,7 +122,7 @@ this.readPersistentAngerSaveData(this.level(), input); input.read("sound_variant", ResourceKey.codec(Registries.WOLF_SOUND_VARIANT)) .flatMap(resourceKey -> this.registryAccess().lookupOrThrow(Registries.WOLF_SOUND_VARIANT).get((ResourceKey)resourceKey)) -@@ -268,6 +_,10 @@ +@@ -268,6 +339,10 @@ public class Wolf extends TamableAnimal implements NeutralMob { } this.setSoundVariant(WolfSoundVariants.pickRandomSoundVariant(this.registryAccess(), level.getRandom())); @@ -125,7 +133,7 @@ return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData); } -@@ -318,6 +_,11 @@ +@@ -318,6 +393,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { public void tick() { super.tick(); if (this.isAlive()) { @@ -137,7 +145,7 @@ this.interestedAngleO = this.interestedAngle; if (this.isInterested()) { this.interestedAngle = this.interestedAngle + (1.0F - this.interestedAngle) * 0.4F; -@@ -519,13 +_,27 @@ +@@ -519,13 +599,27 @@ public class Wolf extends TamableAnimal implements NeutralMob { itemInHand.consume(1, player); this.tryToTame(player); return InteractionResult.SUCCESS_SERVER; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch similarity index 84% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch index b58f13a85..1ccac2db6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +index a0e0fad40838fa7d835f31e5ce4ae3ab40e0bfa4..5bff703ae4f95091620dec5347246d7c0cbe5d5e 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -@@ -39,6 +_,24 @@ +@@ -39,6 +39,24 @@ public class EndCrystal extends Entity { this.setPos(x, y, z); } @@ -25,7 +33,7 @@ @Override protected Entity.MovementEmission getMovementEmission() { return Entity.MovementEmission.NONE; -@@ -75,6 +_,8 @@ +@@ -75,6 +93,8 @@ public class EndCrystal extends Entity { } } // Paper end - Fix invulnerable end crystals @@ -34,7 +42,7 @@ } @Override -@@ -115,15 +_,17 @@ +@@ -115,15 +135,17 @@ public class EndCrystal extends Entity { } // CraftBukkit end if (!damageSource.is(DamageTypeTags.IS_EXPLOSION)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch similarity index 58% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch index 8d855a599..69d7a4e02 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +index 84d215a498d9bf6f1232bf4af5a4a98d3ba9b131..3389c79e18601d582f95fe3765c291d46706d015 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -961,6 +_,7 @@ +@@ -961,6 +961,7 @@ public class EnderDragon extends Mob implements Enemy { @Override protected boolean canRide(Entity entity) { @@ -8,7 +16,7 @@ return false; } -@@ -996,7 +_,7 @@ +@@ -996,7 +997,7 @@ public class EnderDragon extends Mob implements Enemy { boolean flag = level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT); int i = 500; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch similarity index 76% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch index ae41b8b7c..1ffd9cbe5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java +index 787b74c5aa02afc4ba95fa1cdaf6cc21b6554b56..c4a2fb6f08e5d6d69571f448c6ac9defaac3fcd3 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -79,6 +_,7 @@ +@@ -79,6 +79,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { private static final TargetingConditions.Selector LIVING_ENTITY_SELECTOR = (entity, level) -> !entity.getType().is(EntityTypeTags.WITHER_FRIENDS) && entity.attackable(); private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0).selector(LIVING_ENTITY_SELECTOR); @@ -8,7 +16,7 @@ public WitherBoss(EntityType entityType, Level level) { super(entityType, level); -@@ -87,6 +_,17 @@ +@@ -87,6 +88,17 @@ public class WitherBoss extends Monster implements RangedAttackMob { this.xpReward = 50; } @@ -26,7 +34,7 @@ @Override protected PathNavigation createNavigation(Level level) { FlyingPathNavigation flyingPathNavigation = new FlyingPathNavigation(this, level); -@@ -119,6 +_,7 @@ +@@ -119,6 +131,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); output.putInt("Invul", this.getInvulnerableTicks()); @@ -34,7 +42,7 @@ } @Override -@@ -128,6 +_,7 @@ +@@ -128,6 +141,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { if (this.hasCustomName()) { this.bossEvent.setName(this.getDisplayName()); } @@ -42,7 +50,7 @@ } @Override -@@ -271,7 +_,7 @@ +@@ -271,7 +285,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { level.explode(this, this.getX(), this.getEyeY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); } // CraftBukkit end @@ -51,7 +59,7 @@ // CraftBukkit start - Use relative location for far away sounds // level.globalLevelEvent(1023, this.blockPosition(), 0); int viewDistance = level.getCraftServer().getViewDistance() * 16; -@@ -378,8 +_,10 @@ +@@ -378,8 +392,10 @@ public class WitherBoss extends Monster implements RangedAttackMob { } } @@ -64,7 +72,7 @@ } this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); -@@ -576,6 +_,7 @@ +@@ -576,6 +592,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { @Override protected boolean canRide(Entity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch similarity index 76% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch index 8a3b604f5..04c01ec2a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java +index 46369e554be8c72e6fc2e6d58374dbfc77d94879..e2ffc9b4a95a7684a28b47ad93644c95f9eb5ec8 100644 --- a/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -91,10 +_,13 @@ +@@ -91,10 +91,13 @@ public class ArmorStand extends LivingEntity { public boolean canTickSetByAPI = false; private boolean noTickEquipmentDirty = false; // Paper end - Allow ArmorStands not to tick @@ -14,7 +22,7 @@ } public ArmorStand(Level level, double x, double y, double z) { -@@ -521,6 +_,7 @@ +@@ -521,6 +524,7 @@ public class ArmorStand extends LivingEntity { // Paper start - Allow ArmorStands not to tick @Override public void tick() { @@ -22,7 +30,7 @@ if (!this.canTick) { if (this.noTickEquipmentDirty) { this.noTickEquipmentDirty = false; -@@ -811,4 +_,18 @@ +@@ -811,4 +815,18 @@ public class ArmorStand extends LivingEntity { } } // Paper end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/ItemEntity.java.patch similarity index 81% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/ItemEntity.java.patch index 4ed5565e9..b4b1c6486 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/ItemEntity.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java +index 51804b611f469f2ab53e455e8c633b867b00cc88..d650d4f34fde0682ab76360408f7ff6a7d4b4c3a 100644 --- a/net/minecraft/world/entity/item/ItemEntity.java +++ b/net/minecraft/world/entity/item/ItemEntity.java -@@ -56,6 +_,12 @@ +@@ -56,6 +56,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 @@ -13,7 +21,7 @@ public ItemEntity(EntityType entityType, Level level) { super(entityType, level); -@@ -342,7 +_,16 @@ +@@ -342,7 +348,16 @@ public class ItemEntity extends Entity implements TraceableEntity { @Override public final boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) { @@ -31,7 +39,7 @@ return false; } else if (!level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && damageSource.getEntity() instanceof Mob) { return false; -@@ -521,6 +_,12 @@ +@@ -521,6 +536,12 @@ public class ItemEntity extends Entity implements TraceableEntity { public void setItem(ItemStack stack) { this.getEntityData().set(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/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/PrimedTnt.java.patch similarity index 78% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/PrimedTnt.java.patch index 39c0e7d9d..8c3893b63 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/PrimedTnt.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java +index 17d54d38dcec39eefeb989cd576cc640a36e82f5..ef070f8a9ab3a4676e2141f7c0bc20a000d0cc3a 100644 --- a/net/minecraft/world/entity/item/PrimedTnt.java +++ b/net/minecraft/world/entity/item/PrimedTnt.java -@@ -238,4 +_,32 @@ +@@ -238,4 +238,32 @@ public class PrimedTnt extends Entity implements TraceableEntity { return !this.level().paperConfig().fixes.preventTntFromMovingInWater && super.isPushedByFluid(); } // Paper end - Option to prevent TNT from moving in water diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch similarity index 75% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch index 10ddc966a..a62e45dcf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java +index 894a3d988d0530d42d3a282b61cdb445a0f820ad..4e14f1a9ee22d08065a3e971c2aecc9363ebff13 100644 --- a/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java -@@ -158,10 +_,7 @@ +@@ -158,10 +158,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo this.reassessWeaponGoal(); this.setCanPickUpLoot(this.level().paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.skeletons || random.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper - Add world settings for mobs picking up loot if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { @@ -12,7 +20,7 @@ this.setItemSlot(EquipmentSlot.HEAD, new ItemStack(random.nextFloat() < 0.1F ? Blocks.JACK_O_LANTERN : Blocks.CARVED_PUMPKIN)); this.setDropChance(EquipmentSlot.HEAD, 0.0F); } -@@ -209,7 +_,7 @@ +@@ -209,7 +206,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo double squareRoot = Math.sqrt(d * d + d2 * d2); if (this.level() instanceof ServerLevel serverLevel) { Projectile.Delayed delayedEntity = Projectile.spawnProjectileUsingShootDelayed( // Paper - delayed diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Creeper.java.patch similarity index 86% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Creeper.java.patch index b31fc41ee..50e684451 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Creeper.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java +index eabc778ba06c14f3020391b9850ae1a283ecf106..d82fe9db4d074a0484d8c5e2998ff9faf87dfd6e 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java -@@ -55,6 +_,7 @@ +@@ -55,6 +55,7 @@ public class Creeper extends Monster { public int explosionRadius = 3; private int droppedSkulls; public @Nullable Entity entityIgniter; // CraftBukkit @@ -8,7 +16,7 @@ public Creeper(EntityType entityType, Level level) { super(entityType, level); -@@ -158,6 +_,27 @@ +@@ -158,6 +159,27 @@ public class Creeper extends Monster { return false; // CraftBukkit } @@ -36,7 +44,7 @@ @Override public SoundEvent getHurtSound(DamageSource damageSource) { return SoundEvents.CREEPER_HURT; -@@ -240,14 +_,16 @@ +@@ -240,14 +262,16 @@ public class Creeper extends Monster { } public void explodeCreeper() { @@ -55,7 +63,7 @@ this.spawnLingeringCloud(); this.triggerOnDeathMobEffects(serverLevel, Entity.RemovalReason.KILLED); this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.EXPLODE); // CraftBukkit - add Bukkit remove cause -@@ -258,6 +_,7 @@ +@@ -258,6 +282,7 @@ public class Creeper extends Monster { } // CraftBukkit end } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Drowned.java.patch similarity index 83% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Drowned.java.patch index 89708242d..f5e0859ce 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Drowned.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java +index f42f9c232fa588835654de0fdea36b9cdfa34571..84c6b5552f2b408b7b9f24a85b8c4fd54310c349 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java -@@ -83,10 +_,23 @@ +@@ -83,10 +83,23 @@ public class Drowned extends Zombie implements RangedAttackMob { this.goalSelector.addGoal(2, new Drowned.DrownedAttackGoal(this, 1.0, false)); this.goalSelector.addGoal(5, new Drowned.DrownedGoToBeachGoal(this, 1.0)); this.goalSelector.addGoal(6, new Drowned.DrownedSwimUpGoal(this, 1.0, this.level().getSeaLevel())); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/EnderMan.java.patch similarity index 81% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/EnderMan.java.patch index 10b7ca4d0..c0f00350f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/EnderMan.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java +index 4edd94ac765d2ab107612504b67e6e07da609313..ddb916856cff7179eca474738dfbba910408434c 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -101,7 +_,7 @@ +@@ -101,7 +101,7 @@ public class EnderMan extends Monster implements NeutralMob { this.goalSelector.addGoal(11, new EnderMan.EndermanTakeBlockGoal(this)); this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); @@ -9,7 +17,7 @@ this.targetSelector.addGoal(4, new ResetUniversalAngerTargetGoal<>(this, false)); } -@@ -216,7 +_,7 @@ +@@ -216,7 +216,7 @@ public class EnderMan extends Monster implements NeutralMob { boolean isBeingStaredBy(Player player) { // Paper start - EndermanAttackPlayerEvent @@ -18,7 +26,7 @@ final com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent event = new com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent((org.bukkit.entity.Enderman) getBukkitEntity(), (org.bukkit.entity.Player) player.getBukkitEntity()); event.setCancelled(!shouldAttack); return event.callEvent(); -@@ -372,6 +_,7 @@ +@@ -372,6 +372,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) { if (this.isInvulnerableTo(level, damageSource)) { return false; @@ -26,7 +34,7 @@ } else { AbstractThrownPotion abstractThrownPotion1 = damageSource.getDirectEntity() instanceof AbstractThrownPotion abstractThrownPotion ? abstractThrownPotion -@@ -388,6 +_,7 @@ +@@ -388,6 +389,7 @@ public class EnderMan extends Monster implements NeutralMob { } else { boolean flag = abstractThrownPotion1 != null && this.hurtWithCleanWater(level, damageSource, abstractThrownPotion1, amount); @@ -34,7 +42,7 @@ if (this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.INDIRECT)) { // Paper - EndermanEscapeEvent for (int i = 0; i < 64; i++) { if (this.teleport()) { -@@ -431,7 +_,7 @@ +@@ -431,7 +433,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean requiresCustomPersistence() { @@ -43,7 +51,7 @@ } static class EndermanFreezeWhenLookedAt extends Goal { -@@ -475,6 +_,7 @@ +@@ -475,6 +477,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { @@ -51,7 +59,7 @@ return this.enderman.getCarriedBlock() != null && getServerLevel(this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0; -@@ -624,6 +_,7 @@ +@@ -624,6 +627,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Endermite.java.patch similarity index 74% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Endermite.java.patch index b8e9ee681..004f95aaa 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Endermite.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java +index f448aac89c6125246c730a71e7ee21c8168d7003..50eefb77a6c346b2643324f526c5c01d5e667ce4 100644 --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java -@@ -30,12 +_,23 @@ +@@ -30,12 +30,23 @@ public class Endermite extends Monster { private static final int MAX_LIFE = 2400; private static final int DEFAULT_LIFE = 0; public int life = 0; @@ -24,7 +32,7 @@ @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); -@@ -81,12 +_,14 @@ +@@ -81,12 +92,14 @@ public class Endermite extends Monster { protected void readAdditionalSaveData(ValueInput input) { super.readAdditionalSaveData(input); this.life = input.getIntOr("Lifetime", 0); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Monster.java.patch similarity index 68% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Monster.java.patch index c833d4fc6..0636327b8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Monster.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Monster.java b/net/minecraft/world/entity/monster/Monster.java +index 5ef9566b16a4d0300ee45a993c46e734db156416..04d5910d736dee2a88a2602f4a98495459277157 100644 --- a/net/minecraft/world/entity/monster/Monster.java +++ b/net/minecraft/world/entity/monster/Monster.java -@@ -88,6 +_,14 @@ +@@ -88,6 +88,14 @@ public abstract class Monster extends PathfinderMob implements Enemy { } public static boolean isDarkEnoughToSpawn(ServerLevelAccessor level, BlockPos pos, RandomSource random) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Phantom.java.patch similarity index 62% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Phantom.java.patch index e09de7e71..01b01b218 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Phantom.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java +index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..2abb55d84507fd29817760cb0068dd083f7f1c37 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -174,7 +_,11 @@ +@@ -174,7 +174,11 @@ public class Phantom extends Mob implements Enemy { ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData ) { this.anchorPoint = this.blockPosition().above(5); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Ravager.java.patch similarity index 73% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Ravager.java.patch index e15c2cd73..b8168f8a8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Ravager.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java +index 9d84bf2cffee25404eebbefdc9cc3f37ebc386b0..2b9a72b8742bf13c69df5ce0c905d47a92b9d8bc 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java -@@ -74,6 +_,7 @@ +@@ -74,6 +74,7 @@ public class Ravager extends Raider { protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -8,7 +16,7 @@ this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); -@@ -154,7 +_,7 @@ +@@ -154,7 +155,7 @@ public class Ravager extends Raider { )) { BlockState blockState = serverLevel.getBlockState(blockPos); Block block = blockState.getBlock(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Shulker.java.patch similarity index 83% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Shulker.java.patch index a64e3c08d..33f98754a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Shulker.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java +index f667fc5ff1ea4149cb25608e0d12f9f73f86095e..ff16e0dd78687f4c9a0bce5ede4eda30e2a06263 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -94,6 +_,21 @@ +@@ -94,6 +94,21 @@ public class Shulker extends AbstractGolem implements Enemy { this.lookControl = new Shulker.ShulkerLookControl(this); } @@ -22,7 +30,7 @@ @Override protected void registerGoals() { this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F, 0.02F, true)); -@@ -461,11 +_,21 @@ +@@ -461,11 +476,21 @@ public class Shulker extends AbstractGolem implements Enemy { private void hitByShulkerBullet() { Vec3 vec3 = this.position(); AABB boundingBox = this.getBoundingBox(); @@ -48,7 +56,7 @@ if (shulker != null) { shulker.setVariant(this.getVariant()); shulker.snapTo(vec3); -@@ -573,7 +_,7 @@ +@@ -573,7 +598,7 @@ public class Shulker extends AbstractGolem implements Enemy { } public Optional getVariant() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Skeleton.java.patch similarity index 87% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Skeleton.java.patch index 5cc1ae280..0f671c3ec 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Skeleton.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java +index 743bc2986b962d4aaef00d2e457117f375ca65c7..d53364e33bd9e15ad419f306d7cc2e09c9de242c 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -140,4 +_,64 @@ +@@ -140,4 +140,64 @@ public class Skeleton extends AbstractSkeleton { this.spawnAtLocation(level, Items.SKELETON_SKULL); } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Strider.java.patch similarity index 68% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Strider.java.patch index 9d99390b1..3eeaefcf1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Strider.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java +index afa584e2aba6bebfb2dd343215b043c983281853..4b9e60d930bc3a4bfe9aad2e81391e57cfc45d40 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java -@@ -392,6 +_,19 @@ +@@ -392,6 +392,19 @@ public class Strider extends Animal implements ItemSteerable { @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { boolean isFood = this.isFood(player.getItemInHand(hand)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Vindicator.java.patch similarity index 58% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Vindicator.java.patch index fe07bf809..8ce49b799 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Vindicator.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java +index e12643c0a1aa9608c34cab96d5c04abc60428322..86886889f4a2859eaf35c57b5130b2b10143a368 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -132,6 +_,11 @@ +@@ -132,6 +132,11 @@ public class Vindicator extends AbstractIllager { RandomSource random = level.getRandom(); this.populateDefaultEquipmentSlots(random, difficulty); this.populateDefaultEquipmentEnchantments(level, random, difficulty); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Zombie.java.patch similarity index 82% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Zombie.java.patch index c07653823..25de0174e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Zombie.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java +index a23607874a72723914cbfeea0ad1c51236c044d8..e8f54f358b0af0a6755912df7cceb2909da9f0a9 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -117,7 +_,19 @@ +@@ -117,7 +117,19 @@ public class Zombie extends Monster { this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0)); this.targetSelector.addGoal(1, new HurtByTargetGoal(this).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); @@ -21,7 +29,7 @@ this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } -@@ -551,10 +_,7 @@ +@@ -551,10 +563,7 @@ public class Zombie extends Monster { } if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch similarity index 68% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch index 44370007d..5484ae239 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java +index bc80d5b302f24974ce89db502b41d659457dd98c..75a8f3ecaec5cdfe98aa8363326a8a2047ea75b1 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -129,10 +_,10 @@ +@@ -129,10 +129,10 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { public InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); if (itemInHand.is(Items.GOLDEN_APPLE)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch similarity index 66% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch index cd7502ad9..0566e3306 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java +index 822712eaff2f6c579d982734ab14a00c02182770..1be7c756d56cca63347d97f7896b491f3a343fa4 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -113,6 +_,12 @@ +@@ -113,6 +113,12 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { this.maybeAlertOthers(); } @@ -13,16 +21,16 @@ super.customServerAiStep(level); } -@@ -159,6 +_,12 @@ - this.playFirstAngerSoundIn = FIRST_ANGER_SOUND_DELAY.sample(this.random); +@@ -160,6 +166,12 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { this.ticksUntilNextAlert = ALERT_INTERVAL.sample(this.random); } -+ + + // Purpur start - Toggle for Zombified Piglin death always counting as player kill when angry + if (livingEntity instanceof Player player && this.level().purpurConfig.zombifiedPiglinCountAsPlayerKillWhenAngry) { + this.setLastHurtByPlayer(player, this.tickCount); + } + // Purpur end - Toggle for Zombified Piglin death always counting as player kill when angry - ++ return super.setTarget(livingEntity, reason); // CraftBukkit } + diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch similarity index 72% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch index ae53e80fd..cd5ce9108 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/monster/piglin/PiglinAi.java b/net/minecraft/world/entity/monster/piglin/PiglinAi.java +index 4b1a3772f9e6b9e4efcf11e14b0fb882512ec86d..2841c765b2bd804f08bd0e603b4b29cf8a801fab 100644 --- a/net/minecraft/world/entity/monster/piglin/PiglinAi.java +++ b/net/minecraft/world/entity/monster/piglin/PiglinAi.java -@@ -661,13 +_,23 @@ +@@ -661,7 +661,10 @@ public class PiglinAi { public static boolean isWearingSafeArmor(LivingEntity entity) { for (EquipmentSlot equipmentSlot : EquipmentSlotGroup.ARMOR) { @@ -12,16 +20,17 @@ return true; } } - +@@ -669,6 +672,13 @@ public class PiglinAi { return false; } -+ + + // Purpur start - piglins ignore gold-trimmed armor + private static boolean isWearingGoldTrim(net.minecraft.world.item.ItemStack itemstack) { + net.minecraft.world.item.equipment.trim.ArmorTrim armorTrim = itemstack.getComponents().get(net.minecraft.core.component.DataComponents.TRIM); + return armorTrim != null && armorTrim.material().is(net.minecraft.world.item.equipment.trim.TrimMaterials.GOLD); + } + // Purpur end - piglins ignore gold-trimmed armor - ++ private static void stopWalking(Piglin piglin) { piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); + piglin.getNavigation().stop(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/CatSpawner.java.patch similarity index 77% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/CatSpawner.java.patch index 9df36fcd7..c8617abd0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/CatSpawner.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/npc/CatSpawner.java b/net/minecraft/world/entity/npc/CatSpawner.java +index e282b6ab6d0d1c11ee40f5f436bd50fa90ddc88b..d6ae13c19481ce33bfa0b6c9db63283009339d8c 100644 --- a/net/minecraft/world/entity/npc/CatSpawner.java +++ b/net/minecraft/world/entity/npc/CatSpawner.java -@@ -25,7 +_,7 @@ +@@ -25,7 +25,7 @@ public class CatSpawner implements CustomSpawner { if (spawnFriendlies && level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) { this.nextTick--; if (this.nextTick <= 0) { @@ -9,7 +17,7 @@ Player randomPlayer = level.getRandomPlayer(); if (randomPlayer != null) { RandomSource randomSource = level.random; -@@ -48,9 +_,12 @@ +@@ -48,9 +48,12 @@ public class CatSpawner implements CustomSpawner { } private void spawnInVillage(ServerLevel level, BlockPos pos) { @@ -25,7 +33,7 @@ if (entitiesOfClass.size() < 5) { this.spawnCat(pos, level, false); } -@@ -58,8 +_,11 @@ +@@ -58,8 +61,11 @@ public class CatSpawner implements CustomSpawner { } private void spawnInHut(ServerLevel level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/Villager.java.patch similarity index 85% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/Villager.java.patch index be471e893..36b2c5fcf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/Villager.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java +index 43f16df230f87a43e249a58fc10ef2da517f22ee..ff4b73b83e96e0ac0b63922e6f72445cd96d2305 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -179,6 +_,8 @@ +@@ -179,6 +179,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler MemoryModuleType.MEETING_POINT, (villager, poiType) -> poiType.is(PoiTypes.MEETING) ); @@ -9,7 +17,7 @@ public Villager(EntityType entityType, Level level) { this(entityType, level, VillagerType.PLAINS); -@@ -197,6 +_,57 @@ +@@ -197,6 +199,57 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.setVillagerData(this.getVillagerData().withType(villagerType).withProfession(level.registryAccess(), VillagerProfession.NONE)); } @@ -67,7 +75,7 @@ @Override public Brain getBrain() { return (Brain)super.getBrain(); -@@ -293,11 +_,24 @@ +@@ -293,11 +346,24 @@ public class Villager extends AbstractVillager implements ReputationEventHandler // Paper start - EAR 2 this.customServerAiStep(level, false); } @@ -94,7 +102,7 @@ profilerFiller.pop(); if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; -@@ -369,6 +_,7 @@ +@@ -369,6 +435,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return InteractionResult.CONSUME; } @@ -102,7 +110,7 @@ this.startTrading(player); } -@@ -505,7 +_,7 @@ +@@ -505,7 +572,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler public void updateDemand() { for (MerchantOffer merchantOffer : this.getOffers()) { @@ -111,7 +119,7 @@ } } -@@ -698,7 +_,7 @@ +@@ -698,7 +765,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public boolean canBreed() { @@ -120,7 +128,7 @@ } private boolean hungry() { -@@ -920,6 +_,7 @@ +@@ -920,6 +987,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public void spawnGolemIfNeeded(ServerLevel serverLevel, long gameTime, int minVillagerAmount) { @@ -128,7 +136,7 @@ if (this.wantsToSpawnGolem(gameTime)) { AABB aabb = this.getBoundingBox().inflate(10.0, 10.0, 10.0); List entitiesOfClass = serverLevel.getEntitiesOfClass(Villager.class, aabb); -@@ -993,6 +_,12 @@ +@@ -993,6 +1061,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public void startSleeping(BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch similarity index 69% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch index 0c82ef476..65085d465 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java +index c2573946dd1244eb5d1ef2be7823211064daa80d..93ed977260f369677028bbd8396862f344dfeaa3 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -60,6 +_,13 @@ +@@ -60,6 +60,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill super(entityType, level); } @@ -14,7 +22,7 @@ @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -@@ -80,7 +_,7 @@ +@@ -80,7 +87,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill this, new ItemStack(Items.MILK_BUCKET), SoundEvents.WANDERING_TRADER_REAPPEARED, @@ -23,7 +31,7 @@ ) ); this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); -@@ -124,8 +_,10 @@ +@@ -124,8 +131,10 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill return InteractionResult.CONSUME; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch similarity index 72% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch index efaa61512..f6c87b90f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/npc/WanderingTraderSpawner.java b/net/minecraft/world/entity/npc/WanderingTraderSpawner.java +index fce3f0f81d3195045cdc9ad7320f1d92f033c36d..352f55882ea77e8d89942e6c58ef3b4b78eec887 100644 --- a/net/minecraft/world/entity/npc/WanderingTraderSpawner.java +++ b/net/minecraft/world/entity/npc/WanderingTraderSpawner.java -@@ -137,7 +_,17 @@ +@@ -137,7 +137,17 @@ public class WanderingTraderSpawner implements CustomSpawner { int i1 = pos.getX() + this.random.nextInt(maxDistance * 2) - maxDistance; int i2 = pos.getZ() + this.random.nextInt(maxDistance * 2) - maxDistance; int height = level.getHeight(Heightmap.Types.WORLD_SURFACE, i1, i2); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/player/Player.java.patch similarity index 85% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/player/Player.java.patch index 787982d42..f20f715e8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/player/Player.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java +index abb19f08c736151fa5c6986e31eb4cf545073586..cc29c094f81f16e6b4d74877e31fabd4a0e62435 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java -@@ -219,11 +_,20 @@ +@@ -219,11 +219,20 @@ public abstract class Player extends LivingEntity { private int currentImpulseContextResetGraceTime = 0; 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 @@ -21,7 +29,7 @@ @Override public org.bukkit.craftbukkit.entity.CraftHumanEntity getBukkitEntity() { return (org.bukkit.craftbukkit.entity.CraftHumanEntity) super.getBukkitEntity(); -@@ -287,6 +_,12 @@ +@@ -287,6 +296,12 @@ public abstract class Player extends LivingEntity { @Override public void tick() { @@ -34,7 +42,7 @@ this.noPhysics = this.isSpectator(); if (this.isSpectator() || this.isPassenger()) { this.setOnGround(false); -@@ -365,6 +_,17 @@ +@@ -365,6 +380,17 @@ public abstract class Player extends LivingEntity { this.turtleHelmetTick(); } @@ -52,7 +60,7 @@ this.cooldowns.tick(); this.updatePlayerPose(); if (this.currentImpulseContextResetGraceTime > 0) { -@@ -630,7 +_,7 @@ +@@ -630,7 +656,7 @@ public abstract class Player extends LivingEntity { List list = Lists.newArrayList(); for (Entity entity : entities) { @@ -61,7 +69,7 @@ list.add(entity); } else if (!entity.isRemoved()) { this.touch(entity); -@@ -1226,7 +_,7 @@ +@@ -1226,7 +1252,7 @@ public abstract class Player extends LivingEntity { flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - Toggleable player crits if (flag2) { damageSource = damageSource.critical(); // Paper - critical damage API @@ -70,7 +78,7 @@ } float f2 = f + f1; -@@ -1823,7 +_,23 @@ +@@ -1823,7 +1849,23 @@ public abstract class Player extends LivingEntity { @Override protected int getBaseExperienceReward(ServerLevel level) { @@ -95,17 +103,17 @@ } @Override -@@ -1861,6 +_,13 @@ - public boolean addItem(ItemStack stack) { +@@ -1862,6 +1904,13 @@ public abstract class Player extends LivingEntity { return this.inventory.add(stack); } -+ + + // Purpur start - Player ridable in water option + @Override + public boolean dismountsUnderwater() { + return !level().purpurConfig.playerRidableInWater; + } + // Purpur end - Player ridable in water option - ++ public boolean setEntityOnShoulder(CompoundTag entityCompound) { if (this.isPassenger() || !this.onGround() || this.isInWater() || this.isInPowderSnow) { + return false; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch similarity index 69% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch index de4745d8e..ed315ff16 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/projectile/AbstractArrow.java b/net/minecraft/world/entity/projectile/AbstractArrow.java +index 11adb3eacce9d46f15e6c5216e9b2494df158baf..5a27dfa9ea24a93e7bd09cfed8190d7ca772d33e 100644 --- a/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -76,6 +_,7 @@ +@@ -76,6 +76,7 @@ public abstract class AbstractArrow extends Projectile { public ItemStack pickupItemStack = this.getDefaultPickupItem(); @Nullable public ItemStack firedFromWeapon = null; @@ -8,7 +16,7 @@ protected AbstractArrow(EntityType entityType, Level level) { super(entityType, level); -@@ -349,7 +_,7 @@ +@@ -349,7 +350,7 @@ public abstract class AbstractArrow extends Projectile { this.setInGround(false); Vec3 deltaMovement = this.getDeltaMovement(); this.setDeltaMovement(deltaMovement.multiply(this.random.nextFloat() * 0.2F, this.random.nextFloat() * 0.2F, this.random.nextFloat() * 0.2F)); @@ -17,16 +25,16 @@ } public boolean isInGround() { -@@ -572,6 +_,12 @@ - public ItemStack getWeaponItem() { +@@ -573,6 +574,12 @@ public abstract class AbstractArrow extends Projectile { return this.firedFromWeapon; } -+ + + // Purpur start - Add an option to fix MC-3304 projectile looting + public void setActualEnchantments(net.minecraft.world.item.enchantment.ItemEnchantments actualEnchantments) { + this.actualEnchantments = actualEnchantments; + } + // Purpur end - Add an option to fix MC-3304 projectile looting - ++ protected SoundEvent getDefaultHitGroundSoundEvent() { return SoundEvents.ARROW_HIT; + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/Snowball.java.patch similarity index 85% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/Snowball.java.patch index 7215ffe71..3554fab9a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/Snowball.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/projectile/Snowball.java b/net/minecraft/world/entity/projectile/Snowball.java +index 677b4b681f9c2c09a8ae3cfdec72102265547a7b..d8f9fb603fd2e3e5c1dfc05face7f42b4844daf4 100644 --- a/net/minecraft/world/entity/projectile/Snowball.java +++ b/net/minecraft/world/entity/projectile/Snowball.java -@@ -52,9 +_,39 @@ +@@ -52,10 +52,40 @@ public class Snowball extends ThrowableItemProjectile { protected void onHitEntity(EntityHitResult result) { super.onHitEntity(result); Entity entity = result.getEntity(); @@ -8,7 +16,7 @@ + int i = entity.level().purpurConfig.snowballDamage >= 0 ? entity.level().purpurConfig.snowballDamage : entity instanceof Blaze ? 3 : 0; // Purpur - Add configurable snowball damage entity.hurt(this.damageSources().thrown(this, this.getOwner()), i); } -+ + + // Purpur start - options to extinguish fire blocks with snowballs - borrowed and modified code from ThrownPotion#onHitBlock and ThrownPotion#dowseFire + @Override + protected void onHitBlock(net.minecraft.world.phys.BlockHitResult blockHitResult) { @@ -38,6 +46,7 @@ + } + } + // Purpur end - options to extinguish fire blocks with snowballs - ++ @Override protected void onHit(HitResult result) { + super.onHit(result); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch similarity index 76% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch index 4af6264e9..fa9213bb5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +index 4b04ca7d50d7a85827bd89fff24434e603e99579..2258736e6f9f52efe5bd353b8949a7a0b9a4fdb8 100644 --- a/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -@@ -126,9 +_,10 @@ +@@ -126,9 +126,10 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { return; } // CraftBukkit end @@ -12,7 +20,7 @@ endermite.snapTo(owner.getX(), owner.getY(), owner.getZ(), owner.getYRot(), owner.getXRot()); serverLevel.addFreshEntity(endermite, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.ENDER_PEARL); } -@@ -148,7 +_,7 @@ +@@ -148,7 +149,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { if (serverPlayer1 != null) { serverPlayer1.resetFallDistance(); serverPlayer1.resetCurrentImpulseContext(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch similarity index 63% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch index cb2639bfb..845b601d9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/projectile/ThrownTrident.java b/net/minecraft/world/entity/projectile/ThrownTrident.java +index bc04812ec840e255c0ae8651bf7a43e0f562aa9c..b6826fc742640e7f8311bd0269aa0d8a6a9b2db4 100644 --- a/net/minecraft/world/entity/projectile/ThrownTrident.java +++ b/net/minecraft/world/entity/projectile/ThrownTrident.java -@@ -66,7 +_,7 @@ +@@ -66,7 +66,7 @@ public class ThrownTrident extends AbstractArrow { Entity owner = this.getOwner(); int i = this.entityData.get(ID_LOYALTY); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch similarity index 64% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch index 53c42c6f9..f99a7dad9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/projectile/WitherSkull.java b/net/minecraft/world/entity/projectile/WitherSkull.java +index 2419c1db39c9ffbc54352c7fa5e0ac1ef813c13a..5f20dded96fac2dd5d1b0282e7f8487344beb4ee 100644 --- a/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/net/minecraft/world/entity/projectile/WitherSkull.java -@@ -94,7 +_,7 @@ +@@ -94,7 +94,7 @@ public class WitherSkull extends AbstractHurtingProjectile { super.onHit(result); if (!this.level().isClientSide) { // CraftBukkit start @@ -9,17 +17,17 @@ if (event.callEvent()) { this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); } -@@ -102,6 +_,13 @@ - this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.HIT); // CraftBukkit - add Bukkit remove cause +@@ -103,6 +103,13 @@ public class WitherSkull extends AbstractHurtingProjectile { } } -+ + + // Purpur start - Add canSaveToDisk to Entity + @Override + public boolean canSaveToDisk() { + return false; + } + // Purpur end - Add canSaveToDisk to Entity - ++ @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { + builder.define(DATA_DANGEROUS, false); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/raid/Raids.java.patch similarity index 80% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/raid/Raids.java.patch index c0e2ddf74..93138d797 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/raid/Raids.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/raid/Raids.java b/net/minecraft/world/entity/raid/Raids.java +index b8de00c5f13257d0b79b44b19fbfb88a3ca20353..fc5c1acec3cc2afed40589be6f8e159c3426c08e 100644 --- a/net/minecraft/world/entity/raid/Raids.java +++ b/net/minecraft/world/entity/raid/Raids.java -@@ -29,6 +_,7 @@ +@@ -29,6 +29,7 @@ import net.minecraft.world.phys.Vec3; public class Raids extends SavedData { private static final String RAID_FILE_ID = "raids"; @@ -8,7 +16,7 @@ public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group( Raids.RaidWithId.CODEC -@@ -81,6 +_,17 @@ +@@ -81,6 +82,17 @@ public class Raids extends SavedData { public void tick(ServerLevel level) { this.tick++; @@ -26,7 +34,7 @@ Iterator iterator = this.raidMap.values().iterator(); while (iterator.hasNext()) { -@@ -148,11 +_,13 @@ +@@ -148,11 +160,13 @@ public class Raids extends SavedData { // } 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 diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch similarity index 51% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch index 018fcd5d3..39a2cc3ac 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/vehicle/AbstractBoat.java b/net/minecraft/world/entity/vehicle/AbstractBoat.java +index df360ff06d10fc7f996055dce5148825539e9261..4dcf6daa146645f096ac8815588c837715073c22 100644 --- a/net/minecraft/world/entity/vehicle/AbstractBoat.java +++ b/net/minecraft/world/entity/vehicle/AbstractBoat.java -@@ -436,6 +_,7 @@ +@@ -436,6 +436,7 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable { float groundFriction = this.getGroundFriction(); if (groundFriction > 0.0F) { this.landFriction = groundFriction; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch similarity index 62% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch index dfb044e11..06c26aecf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java b/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java +index 090b19752fbfc856d9fbf118510afc6cda2b9989..325ec57df2885f5e81b8a6b61e3a9fed9484b30f 100644 --- a/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java +++ b/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java -@@ -391,7 +_,7 @@ +@@ -391,7 +391,7 @@ public class NewMinecartBehavior extends MinecartBehavior { private Vec3 calculateBoostTrackSpeed(Vec3 speed, BlockPos pos, BlockState state) { if (state.is(Blocks.POWERED_RAIL) && state.getValue(PoweredRailBlock.POWERED)) { if (speed.length() > 0.01) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch similarity index 65% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch index c8d066068..0662c5534 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java b/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java +index 0d09b0809e7b224538cf5cfac9e36ec5ba10b709..4d224dc127d245556892e761fa4927a76e4b8e9a 100644 --- a/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java +++ b/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java -@@ -243,8 +_,8 @@ +@@ -243,8 +243,8 @@ public class OldMinecartBehavior extends MinecartBehavior { Vec3 deltaMovement1 = this.getDeltaMovement(); double d13 = deltaMovement1.horizontalDistance(); if (d13 > 0.01) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodData.java.patch similarity index 75% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodData.java.patch index a44cdd312..a86ee73f1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodData.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/food/FoodData.java b/net/minecraft/world/food/FoodData.java +index a1b99dea0fa5860a01158897006e1065050c029b..d1080acfe91bd1ca28e21ffc68a928dc0f233be3 100644 --- a/net/minecraft/world/food/FoodData.java +++ b/net/minecraft/world/food/FoodData.java -@@ -39,6 +_,7 @@ +@@ -39,6 +39,7 @@ public class FoodData { int oldFoodLevel = this.foodLevel; org.bukkit.event.entity.FoodLevelChangeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(serverPlayer, foodProperties.nutrition() + oldFoodLevel, stack); if (!event.isCancelled()) { @@ -8,7 +16,7 @@ this.add(event.getFoodLevel() - oldFoodLevel, foodProperties.saturation()); } serverPlayer.getBukkitEntity().sendHealthUpdate(); -@@ -87,7 +_,7 @@ +@@ -87,7 +88,7 @@ public class FoodData { this.tickTimer++; if (this.tickTimer >= this.starvationRate) { // CraftBukkit - add regen rate manipulation if (player.getHealth() > 10.0F || difficulty == Difficulty.HARD || player.getHealth() > 1.0F && difficulty == Difficulty.NORMAL) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodProperties.java.patch similarity index 66% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodProperties.java.patch index 87515c815..869410c5b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodProperties.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/food/FoodProperties.java b/net/minecraft/world/food/FoodProperties.java +index 793e4528755fa5688efbad75418188e693ad0157..20f702c8266eb54a8835861188eb937f4732e078 100644 --- a/net/minecraft/world/food/FoodProperties.java +++ b/net/minecraft/world/food/FoodProperties.java -@@ -42,9 +_,11 @@ +@@ -42,9 +42,11 @@ public record FoodProperties(int nutrition, float saturation, boolean canAlwaysE level.playSound(null, entity.getX(), entity.getY(), entity.getZ(), consumable.sound().value(), SoundSource.NEUTRAL, 1.0F, random.triangle(1.0F, 0.4F)); if (entity instanceof Player player) { player.getFoodData().eat(this, stack, (net.minecraft.server.level.ServerPlayer) player); // CraftBukkit diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch new file mode 100644 index 000000000..3a5be5f25 --- /dev/null +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch @@ -0,0 +1,18 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java +index f4548edae77eb86e54ba499acbb20613fd60d7bd..1f601781643945920c7522b9c6100d0a37ad535d 100644 +--- a/net/minecraft/world/inventory/AbstractContainerMenu.java ++++ b/net/minecraft/world/inventory/AbstractContainerMenu.java +@@ -65,6 +65,7 @@ public abstract class AbstractContainerMenu { + @Nullable + private ContainerSynchronizer synchronizer; + private boolean suppressRemoteUpdates; ++ @Nullable protected ItemStack activeQuickItem = null; // Purpur - Anvil API + // CraftBukkit start + public boolean checkReachable = true; + public abstract org.bukkit.inventory.InventoryView getBukkitView(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch similarity index 64% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch index 1626289f6..87e3d1d61 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/inventory/AbstractFurnaceMenu.java b/net/minecraft/world/inventory/AbstractFurnaceMenu.java +index b42d55c1c0c405ce3ce073138343e74fa036fa65..b86e49b09a036532e7dbd56bc52b13cefe77f75b 100644 --- a/net/minecraft/world/inventory/AbstractFurnaceMenu.java +++ b/net/minecraft/world/inventory/AbstractFurnaceMenu.java -@@ -121,7 +_,13 @@ +@@ -121,7 +121,13 @@ public abstract class AbstractFurnaceMenu extends RecipeBookMenu { } else if (index != 1 && index != 0) { if (this.canSmelt(item)) { if (!this.moveItemStackTo(item, 0, 1, false)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AnvilMenu.java.patch similarity index 92% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AnvilMenu.java.patch index 88ef4768c..6f37d8948 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AnvilMenu.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/inventory/AnvilMenu.java b/net/minecraft/world/inventory/AnvilMenu.java +index 2346e1fc0c94084c3bb95c00be8aac36ae5f26ae..c75ad34d2e8b51999abbbca960bdda4973e356dc 100644 --- a/net/minecraft/world/inventory/AnvilMenu.java +++ b/net/minecraft/world/inventory/AnvilMenu.java -@@ -21,6 +_,12 @@ +@@ -21,6 +21,12 @@ import net.minecraft.world.level.block.AnvilBlock; import net.minecraft.world.level.block.state.BlockState; import org.slf4j.Logger; @@ -13,7 +21,7 @@ public class AnvilMenu extends ItemCombinerMenu { public static final int INPUT_SLOT = 0; public static final int ADDITIONAL_SLOT = 1; -@@ -50,6 +_,10 @@ +@@ -50,6 +56,10 @@ public class AnvilMenu extends ItemCombinerMenu { private org.bukkit.craftbukkit.inventory.view.CraftAnvilView bukkitEntity; // CraftBukkit end public boolean bypassEnchantmentLevelRestriction = false; // Paper - bypass anvil level restrictions @@ -24,7 +32,7 @@ public AnvilMenu(int containerId, Inventory playerInventory) { this(containerId, playerInventory, ContainerLevelAccess.NULL); -@@ -75,12 +_,17 @@ +@@ -75,12 +85,17 @@ public class AnvilMenu extends ItemCombinerMenu { @Override protected boolean mayPickup(Player player, boolean hasStack) { @@ -43,7 +51,7 @@ player.giveExperienceLevels(-this.cost.get()); } -@@ -133,13 +_,19 @@ +@@ -133,13 +148,19 @@ public class AnvilMenu extends ItemCombinerMenu { @Override public void createResult() { @@ -64,7 +72,7 @@ ItemStack itemStack = item.copy(); ItemStack item1 = this.inputSlots.getItem(1); ItemEnchantments.Mutable mutable = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(itemStack)); -@@ -197,23 +_,34 @@ +@@ -197,23 +218,34 @@ public class AnvilMenu extends ItemCombinerMenu { int intValue = entry.getIntValue(); intValue = level == intValue ? intValue + 1 : Math.max(intValue, level); Enchantment enchantment = holder.value(); @@ -103,7 +111,7 @@ intValue = enchantment.getMaxLevel(); } -@@ -242,6 +_,54 @@ +@@ -242,6 +274,54 @@ public class AnvilMenu extends ItemCombinerMenu { if (!this.itemName.equals(item.getHoverName().getString())) { i1 = 1; i += i1; @@ -158,7 +166,7 @@ itemStack.set(DataComponents.CUSTOM_NAME, Component.literal(this.itemName)); } } else if (item.has(DataComponents.CUSTOM_NAME)) { -@@ -266,6 +_,12 @@ +@@ -266,6 +346,12 @@ public class AnvilMenu extends ItemCombinerMenu { this.onlyRenaming = true; } @@ -171,7 +179,7 @@ if (this.cost.get() >= this.maximumRepairCost && !this.player.hasInfiniteMaterials()) { // CraftBukkit itemStack = ItemStack.EMPTY; } -@@ -286,6 +_,13 @@ +@@ -286,6 +372,13 @@ public class AnvilMenu extends ItemCombinerMenu { org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), itemStack); // CraftBukkit this.broadcastChanges(); @@ -185,7 +193,7 @@ } 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 -@@ -294,7 +_,7 @@ +@@ -294,7 +387,7 @@ public class AnvilMenu extends ItemCombinerMenu { } public static int calculateIncreasedRepairCost(int oldRepairCost) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ArmorSlot.java.patch similarity index 62% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ArmorSlot.java.patch index 2b2579163..bb2e4f676 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ArmorSlot.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/inventory/ArmorSlot.java b/net/minecraft/world/inventory/ArmorSlot.java +index 0a440ea37d14cd840cf87a99264ace5ccde7c073..dec920727401de7f5bcc6c7e50f9dd325367ee90 100644 --- a/net/minecraft/world/inventory/ArmorSlot.java +++ b/net/minecraft/world/inventory/ArmorSlot.java -@@ -47,7 +_,7 @@ +@@ -47,7 +47,7 @@ class ArmorSlot extends Slot { @Override public boolean mayPickup(Player player) { ItemStack item = this.getItem(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch similarity index 79% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch index b6a6515d1..8f252bab7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/inventory/EnchantmentMenu.java b/net/minecraft/world/inventory/EnchantmentMenu.java +index cf9ab4c9fba11f5a0b293978853e205de81d6fc7..d0d6ae9c9c432f8bd5d9c91113fc5491e321afad 100644 --- a/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/net/minecraft/world/inventory/EnchantmentMenu.java -@@ -63,6 +_,22 @@ +@@ -63,6 +63,22 @@ public class EnchantmentMenu extends AbstractContainerMenu { return access.getLocation(); } // CraftBukkit end @@ -23,7 +31,7 @@ }; // Paper end - Add missing InventoryHolders this.access = access; -@@ -83,6 +_,16 @@ +@@ -83,6 +99,16 @@ public class EnchantmentMenu extends AbstractContainerMenu { return EnchantmentMenu.EMPTY_SLOT_LAPIS_LAZULI; } }); @@ -40,7 +48,7 @@ this.addStandardInventorySlots(playerInventory, 8, 84); this.addDataSlot(DataSlot.shared(this.costs, 0)); this.addDataSlot(DataSlot.shared(this.costs, 1)); -@@ -299,7 +_,7 @@ +@@ -299,7 +325,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { @Override public void removed(Player player) { super.removed(player); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch similarity index 89% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch index f30e76901..9e72ed264 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/inventory/GrindstoneMenu.java b/net/minecraft/world/inventory/GrindstoneMenu.java +index 18c15a7657e6fd994a8f17d0812c822d6adc8eab..e3892bc545d614a2e9e1bbc8589f1189b1b73038 100644 --- a/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/net/minecraft/world/inventory/GrindstoneMenu.java -@@ -91,11 +_,13 @@ +@@ -91,11 +91,13 @@ public class GrindstoneMenu extends AbstractContainerMenu { @Override public void onTake(Player player, ItemStack stack) { access.execute((level, blockPos) -> { @@ -15,7 +23,7 @@ // Paper end - Fire BlockExpEvent on grindstone use } -@@ -124,7 +_,7 @@ +@@ -124,7 +126,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { for (Entry> entry : enchantmentsForCrafting.entrySet()) { Holder holder = entry.getKey(); int intValue = entry.getIntValue(); @@ -24,7 +32,7 @@ i += holder.value().getMinCost(intValue); } } -@@ -202,15 +_,75 @@ +@@ -202,15 +204,75 @@ public class GrindstoneMenu extends AbstractContainerMenu { for (Entry> entry : enchantmentsForCrafting.entrySet()) { Holder holder = entry.getKey(); @@ -102,7 +110,7 @@ if (item.is(Items.ENCHANTED_BOOK) && itemEnchantments.isEmpty()) { item = item.transmuteCopy(Items.BOOK); } -@@ -222,6 +_,23 @@ +@@ -222,6 +284,23 @@ public class GrindstoneMenu extends AbstractContainerMenu { } item.set(DataComponents.REPAIR_COST, i); @@ -126,7 +134,7 @@ return item; } -@@ -278,7 +_,9 @@ +@@ -278,7 +357,9 @@ public class GrindstoneMenu extends AbstractContainerMenu { return ItemStack.EMPTY; } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch new file mode 100644 index 000000000..3c5ab79db --- /dev/null +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch @@ -0,0 +1,20 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/inventory/ItemCombinerMenu.java b/net/minecraft/world/inventory/ItemCombinerMenu.java +index 34d52c941395645e77de810855b14012c259cf02..c605bd700fd9f5a6596a2bf9648492786306b025 100644 +--- a/net/minecraft/world/inventory/ItemCombinerMenu.java ++++ b/net/minecraft/world/inventory/ItemCombinerMenu.java +@@ -156,7 +156,9 @@ public abstract class ItemCombinerMenu extends AbstractContainerMenu { + return ItemStack.EMPTY; + } + ++ this.activeQuickItem = itemStack; // Purpur - Anvil API + slot.onTake(player, item); ++ this.activeQuickItem = null; // Purpur - Anvil API + } + + return itemStack; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/AxeItem.java.patch similarity index 90% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/AxeItem.java.patch index c87b129e2..3de08e4e6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/AxeItem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/AxeItem.java b/net/minecraft/world/item/AxeItem.java +index bd919b9a83f9736f02783b1ba3863fd1b77c7e89..eb8d2d6f9c65185f5fe16a13ab0cdbba78a25a40 100644 --- a/net/minecraft/world/item/AxeItem.java +++ b/net/minecraft/world/item/AxeItem.java -@@ -62,13 +_,15 @@ +@@ -62,13 +62,15 @@ public class AxeItem extends Item { if (playerHasBlockingItemUseIntent(context)) { return InteractionResult.PASS; } else { @@ -18,7 +26,7 @@ return InteractionResult.PASS; } // Paper end -@@ -76,8 +_,15 @@ +@@ -76,8 +78,15 @@ public class AxeItem extends Item { CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger((ServerPlayer)player, clickedPos, itemInHand); } @@ -36,7 +44,7 @@ if (player != null) { itemInHand.hurtAndBreak(1, player, LivingEntity.getSlotForHand(context.getHand())); } -@@ -94,22 +_,24 @@ +@@ -94,22 +103,24 @@ public class AxeItem extends Item { && !player.isSecondaryUseActive(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BlockItem.java.patch similarity index 79% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BlockItem.java.patch index 76068462e..a0a7667ed 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BlockItem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/BlockItem.java b/net/minecraft/world/item/BlockItem.java +index b5b53168755525eccaa0a4361172006522cf4e05..2860d49c072d4b9e473390a84e45171b984b198e 100644 --- a/net/minecraft/world/item/BlockItem.java +++ b/net/minecraft/world/item/BlockItem.java -@@ -145,7 +_,16 @@ +@@ -145,7 +145,16 @@ public class BlockItem extends Item { } protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, @Nullable Player player, ItemStack stack, BlockState state) { @@ -18,7 +26,7 @@ } @Nullable -@@ -212,6 +_,7 @@ +@@ -212,6 +221,7 @@ public class BlockItem extends Item { } if (!type.onlyOpCanSetNbt() || player != null && (player.canUseGameMasterBlocks() || (player.getAbilities().instabuild && player.getBukkitEntity().hasPermission("minecraft.nbt.place")))) { // Spigot - add permission @@ -26,7 +34,7 @@ return customData.loadInto(blockEntity, level.registryAccess()); } -@@ -253,6 +_,7 @@ +@@ -253,6 +263,7 @@ public class BlockItem extends Item { public void onDestroyed(ItemEntity itemEntity) { ItemContainerContents itemContainerContents = itemEntity.getItem().set(DataComponents.CONTAINER, ItemContainerContents.EMPTY); if (itemContainerContents != null) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BowItem.java.patch similarity index 78% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BowItem.java.patch index bb43e3ee4..21a9dc9e8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BowItem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/BowItem.java b/net/minecraft/world/item/BowItem.java +index c4c8775de328d40bb8218d993872be5249e8174d..ce1ce18410fc1d47d999c918a8f880b43bf9797c 100644 --- a/net/minecraft/world/item/BowItem.java +++ b/net/minecraft/world/item/BowItem.java -@@ -28,6 +_,11 @@ +@@ -28,6 +28,11 @@ public class BowItem extends ProjectileWeaponItem { return false; } else { ItemStack projectile = player.getProjectile(stack); @@ -12,7 +20,7 @@ if (projectile.isEmpty()) { return false; } else { -@@ -38,7 +_,7 @@ +@@ -38,7 +43,7 @@ public class BowItem extends ProjectileWeaponItem { } else { List list = draw(stack, projectile, player); if (level instanceof ServerLevel serverLevel && !list.isEmpty()) { @@ -21,7 +29,7 @@ } level.playSound( -@@ -89,7 +_,7 @@ +@@ -89,7 +94,7 @@ public class BowItem extends ProjectileWeaponItem { public InteractionResult use(Level level, Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); boolean flag = !player.getProjectile(itemInHand).isEmpty(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BucketItem.java.patch similarity index 69% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BucketItem.java.patch index a0e1bb7ac..94d4d0e25 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BucketItem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/BucketItem.java b/net/minecraft/world/item/BucketItem.java +index de287715568f358dd83383d68f845df9a7b5a117..8c7be8a71348a3e66c8bf6b6cb39fe002c20bdb0 100644 --- a/net/minecraft/world/item/BucketItem.java +++ b/net/minecraft/world/item/BucketItem.java -@@ -147,7 +_,7 @@ +@@ -147,7 +147,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { // CraftBukkit end if (!flag) { return hitResult != null && this.emptyContents(entity, level, hitResult.getBlockPos().relative(hitResult.getDirection()), null, direction, clicked, itemstack, hand); // CraftBukkit @@ -9,7 +17,7 @@ int x = pos.getX(); int y = pos.getY(); int z = pos.getZ(); -@@ -156,7 +_,7 @@ +@@ -156,7 +156,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { ); for (int i = 0; i < 8; i++) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/CrossbowItem.java.patch similarity index 63% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/CrossbowItem.java.patch index c2e3f0e41..600b9e395 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/CrossbowItem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/CrossbowItem.java b/net/minecraft/world/item/CrossbowItem.java +index 4c5a751bc5618a19ac6355564189cb283a01eb98..9275ba72415beaa4e495cae81674fd14ec671156 100644 --- a/net/minecraft/world/item/CrossbowItem.java +++ b/net/minecraft/world/item/CrossbowItem.java -@@ -66,7 +_,7 @@ +@@ -66,7 +66,7 @@ public class CrossbowItem extends ProjectileWeaponItem { ItemStack itemInHand = player.getItemInHand(hand); ChargedProjectiles chargedProjectiles = itemInHand.get(DataComponents.CHARGED_PROJECTILES); if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/DyeColor.java.patch similarity index 55% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/DyeColor.java.patch index e53cc098b..b9c8a91c8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/DyeColor.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/DyeColor.java b/net/minecraft/world/item/DyeColor.java +index 76bb211843eee94334fbba87e5fa5ba5430f89ba..c9cde255117b46690b2b6670d009a00b051af016 100644 --- a/net/minecraft/world/item/DyeColor.java +++ b/net/minecraft/world/item/DyeColor.java -@@ -126,4 +_,10 @@ +@@ -126,4 +126,10 @@ public enum DyeColor implements StringRepresentable { private static CraftingInput makeCraftColorInput(DyeColor first, DyeColor second) { return CraftingInput.of(2, 1, List.of(new ItemStack(DyeItem.byColor(first)), new ItemStack(DyeItem.byColor(second)))); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EggItem.java.patch similarity index 72% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EggItem.java.patch index 7bd1d11bf..49c5b618f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EggItem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/EggItem.java b/net/minecraft/world/item/EggItem.java +index ccae6089cdc4fffca7d759252006a13c2c14691a..c4097bd6acf671ddf857350154e6e1a04e76d64b 100644 --- a/net/minecraft/world/item/EggItem.java +++ b/net/minecraft/world/item/EggItem.java -@@ -24,7 +_,7 @@ +@@ -24,7 +24,7 @@ public class EggItem extends Item implements ProjectileItem { public InteractionResult use(Level level, Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); // Paper start diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EndCrystalItem.java.patch similarity index 60% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EndCrystalItem.java.patch index baee5e0ab..1f6dd3968 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EndCrystalItem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/EndCrystalItem.java b/net/minecraft/world/item/EndCrystalItem.java +index 05ec512839898f96d9769bb0d00f6ba11dda0c4b..6e4a3c9c090a68bf5785a01d815c275411859c7b 100644 --- a/net/minecraft/world/item/EndCrystalItem.java +++ b/net/minecraft/world/item/EndCrystalItem.java -@@ -24,7 +_,7 @@ +@@ -24,7 +24,7 @@ public class EndCrystalItem extends Item { Level level = context.getLevel(); BlockPos clickedPos = context.getClickedPos(); BlockState blockState = level.getBlockState(clickedPos); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EnderpearlItem.java.patch similarity index 78% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EnderpearlItem.java.patch index de340dafe..ce7feb346 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EnderpearlItem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/EnderpearlItem.java b/net/minecraft/world/item/EnderpearlItem.java +index 3becd19d3264fa631497e967656cc7ca39252586..f824f155549857d5205ba67eb5916e0b0b65efb4 100644 --- a/net/minecraft/world/item/EnderpearlItem.java +++ b/net/minecraft/world/item/EnderpearlItem.java -@@ -24,7 +_,7 @@ +@@ -24,7 +24,7 @@ public class EnderpearlItem extends Item { if (level instanceof ServerLevel serverLevel) { // CraftBukkit start // Paper start - PlayerLaunchProjectileEvent @@ -9,7 +17,7 @@ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemInHand), (org.bukkit.entity.Projectile) thrownEnderpearl.projectile().getBukkitEntity()); if (event.callEvent() && thrownEnderpearl.attemptSpawn()) { if (event.shouldConsume()) { -@@ -44,6 +_,7 @@ +@@ -44,6 +44,7 @@ public class EnderpearlItem extends Item { 0.4F / (level.getRandom().nextFloat() * 0.4F + 0.8F) ); player.awardStat(Stats.ITEM_USED.get(this)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/HoeItem.java.patch similarity index 82% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/HoeItem.java.patch index cebe3180e..e81115e58 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/HoeItem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/HoeItem.java b/net/minecraft/world/item/HoeItem.java +index 3bf3d4030c4da65fa386a8b8083d259a6046d15e..77a8d5d334cd93d23149afa8e58f4114412632df 100644 --- a/net/minecraft/world/item/HoeItem.java +++ b/net/minecraft/world/item/HoeItem.java -@@ -45,15 +_,25 @@ +@@ -45,15 +45,25 @@ public class HoeItem extends Item { public InteractionResult useOn(UseOnContext context) { Level level = context.getLevel(); BlockPos clickedPos = context.getClickedPos(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ItemStack.java.patch similarity index 78% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ItemStack.java.patch index c2ee158cb..9d85fd5f0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ItemStack.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java +index cf283389d9263ba29720bf296a778be9eaf308a7..7041e93158ffab707f14ff6e48c3977bebf275a9 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java -@@ -450,6 +_,7 @@ +@@ -450,6 +450,7 @@ public final class ItemStack implements DataComponentHolder { // revert back all captured blocks for (org.bukkit.block.BlockState blockstate : blocks) { ((org.bukkit.craftbukkit.block.CraftBlockState) blockstate).revertPlace(); @@ -8,7 +16,7 @@ } SignItem.openSign = null; // SPIGOT-6758 - Reset on early return -@@ -473,6 +_,7 @@ +@@ -473,6 +474,7 @@ public final class ItemStack implements DataComponentHolder { if (!(block.getBlock() instanceof net.minecraft.world.level.block.BaseEntityBlock)) { // Containers get placed automatically block.onPlace(serverLevel, newPos, oldBlock, true, context); } @@ -16,7 +24,7 @@ serverLevel.notifyAndUpdatePhysics(newPos, null, oldBlock, block, serverLevel.getBlockState(newPos), updateFlags, net.minecraft.world.level.block.Block.UPDATE_LIMIT); // send null chunk as chunk.k() returns false by this point } -@@ -593,6 +_,26 @@ +@@ -593,6 +595,26 @@ public final class ItemStack implements DataComponentHolder { return this.isDamageableItem() && this.getDamageValue() > 0; } @@ -43,16 +51,16 @@ public int getDamageValue() { return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage()); } -@@ -1209,6 +_,12 @@ - public boolean isEnchanted() { +@@ -1210,6 +1232,12 @@ public final class ItemStack implements DataComponentHolder { return !this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).isEmpty(); } -+ + + // Purpur start - Config to allow unsafe enchants + public boolean hasEnchantment(Holder enchantment) { + return this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).getLevel(enchantment) > 0; + } + // Purpur end - Config to allow unsafe enchants - ++ public ItemEnchantments getEnchantments() { return this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY); + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/Items.java.patch similarity index 78% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/Items.java.patch index bc5336ab0..e8a1042fd 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/Items.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/Items.java b/net/minecraft/world/item/Items.java +index cb27584b484c5103feb85e139a3dbf95a23a1236..b309312491bf822582d8cc182d609f7b74399ae8 100644 --- a/net/minecraft/world/item/Items.java +++ b/net/minecraft/world/item/Items.java -@@ -383,7 +_,7 @@ +@@ -383,7 +383,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); @@ -9,7 +17,7 @@ public static final Item CREAKING_HEART = registerBlock(Blocks.CREAKING_HEART); public static final Item CHEST = registerBlock(Blocks.CHEST, properties -> properties.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE); -@@ -2089,7 +_,7 @@ +@@ -2089,7 +2089,7 @@ public class Items { "sweet_berries", createBlockItemWithCustomItemName(Blocks.SWEET_BERRY_BUSH), new Item.Properties().food(Foods.SWEET_BERRIES) ); public static final Item GLOW_BERRIES = registerItem( diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/MapItem.java.patch similarity index 54% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/MapItem.java.patch index e4abe0ae9..d6dfe095d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/MapItem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/MapItem.java b/net/minecraft/world/item/MapItem.java +index ba0b254d43651bca1f29b5272af05d068fc37ba8..780793750c99185e8139a1cd0ad52bc7b80899a9 100644 --- a/net/minecraft/world/item/MapItem.java +++ b/net/minecraft/world/item/MapItem.java -@@ -194,6 +_,7 @@ +@@ -194,6 +194,7 @@ public class MapItem extends Item { public static void renderBiomePreviewMap(ServerLevel serverLevel, ItemStack stack) { MapItemSavedData savedData = getSavedData(stack, serverLevel); if (savedData != null) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/NameTagItem.java.patch similarity index 64% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/NameTagItem.java.patch index 2a8639361..ce7e9a16c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/NameTagItem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/NameTagItem.java b/net/minecraft/world/item/NameTagItem.java +index a928124ee46a10e9033f771970198e36712917a6..65ff8078474d5039238e9398d8cfc12e79cc6524 100644 --- a/net/minecraft/world/item/NameTagItem.java +++ b/net/minecraft/world/item/NameTagItem.java -@@ -24,6 +_,7 @@ +@@ -24,6 +24,7 @@ public class NameTagItem extends Item { LivingEntity newEntity = ((org.bukkit.craftbukkit.entity.CraftLivingEntity) event.getEntity()).getHandle(); newEntity.setCustomName(event.getName() != null ? io.papermc.paper.adventure.PaperAdventure.asVanilla(event.getName()) : null); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch new file mode 100644 index 000000000..73e09f2a2 --- /dev/null +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch @@ -0,0 +1,19 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/ProjectileWeaponItem.java b/net/minecraft/world/item/ProjectileWeaponItem.java +index 1a9f91f3ee9c4d3902106eebd2639cc85a0dc34c..fb5077450aa9f7b7a03dd20c27a68dfdaab5ef06 100644 +--- a/net/minecraft/world/item/ProjectileWeaponItem.java ++++ b/net/minecraft/world/item/ProjectileWeaponItem.java +@@ -109,6 +109,8 @@ public abstract class ProjectileWeaponItem extends Item { + abstractArrow.setCritArrow(true); + } + ++ abstractArrow.setActualEnchantments(weapon.getEnchantments()); // Purpur - Add an option to fix MC-3304 projectile looting ++ + return abstractArrow; + } + diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ShovelItem.java.patch similarity index 74% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ShovelItem.java.patch index c583f3853..1e1bc069c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ShovelItem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/ShovelItem.java b/net/minecraft/world/item/ShovelItem.java +index 887ac9f547ceaf76fd533ae47239a64c29a64b18..a290ad578498da07093ea31080cc3fbc87aa3778 100644 --- a/net/minecraft/world/item/ShovelItem.java +++ b/net/minecraft/world/item/ShovelItem.java -@@ -46,9 +_,12 @@ +@@ -46,9 +46,12 @@ public class ShovelItem extends Item { BlockState blockState1 = FLATTENABLES.get(blockState.getBlock()); BlockState blockState2 = null; Runnable afterAction = null; // Paper diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SnowballItem.java.patch similarity index 72% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SnowballItem.java.patch index 9c09ecb72..b88ed49fb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SnowballItem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/SnowballItem.java b/net/minecraft/world/item/SnowballItem.java +index 8eec16040fb9ae6bcccbd71bbe93521cdce5ccce..38b82537209449407922491506a7ca6224229ca9 100644 --- a/net/minecraft/world/item/SnowballItem.java +++ b/net/minecraft/world/item/SnowballItem.java -@@ -26,7 +_,7 @@ +@@ -26,7 +26,7 @@ public class SnowballItem extends Item implements ProjectileItem { // CraftBukkit start - moved down if (level instanceof ServerLevel serverLevel) { // Paper start - PlayerLaunchProjectileEvent diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SpawnEggItem.java.patch similarity index 84% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SpawnEggItem.java.patch index 7a0553a75..c977ff3ce 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SpawnEggItem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/SpawnEggItem.java b/net/minecraft/world/item/SpawnEggItem.java +index 7a961e5ebbdac061f6e73e4ed07fe957ba759066..d48c1dedbd39770ccf3c9c3ff3351b391601cd77 100644 --- a/net/minecraft/world/item/SpawnEggItem.java +++ b/net/minecraft/world/item/SpawnEggItem.java -@@ -57,6 +_,23 @@ +@@ -57,6 +57,23 @@ public class SpawnEggItem extends Item { if (level.getBlockEntity(clickedPos) instanceof Spawner spawner) { if (level.paperConfig().entities.spawning.disableMobSpawnerSpawnEggTransformation) return InteractionResult.FAIL; // Paper - Allow disabling mob spawner spawn egg transformation EntityType type = this.getType(level.registryAccess(), itemInHand); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ThrowablePotionItem.java.patch similarity index 71% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ThrowablePotionItem.java.patch index 5cf5ead6e..7e89fcdab 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ThrowablePotionItem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/ThrowablePotionItem.java b/net/minecraft/world/item/ThrowablePotionItem.java +index 86198fb3150409b4b3e123982d8d3ba40b774621..6495c82fb88062875024c59a7c29d6d18b7a2f41 100644 --- a/net/minecraft/world/item/ThrowablePotionItem.java +++ b/net/minecraft/world/item/ThrowablePotionItem.java -@@ -24,7 +_,7 @@ +@@ -24,7 +24,7 @@ public abstract class ThrowablePotionItem extends PotionItem implements Projecti ItemStack itemInHand = player.getItemInHand(hand); if (level instanceof ServerLevel serverLevel) { // Paper start - PlayerLaunchProjectileEvent diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/TridentItem.java.patch similarity index 75% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/TridentItem.java.patch index dccf0bfa8..4fed2a2df 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/TridentItem.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/TridentItem.java b/net/minecraft/world/item/TridentItem.java +index df629e3f2defce5e65aaf874d7c5ddff71f39c28..122e24ed6fb319c951841ac8ef328c5eb70514d4 100644 --- a/net/minecraft/world/item/TridentItem.java +++ b/net/minecraft/world/item/TridentItem.java -@@ -83,7 +_,7 @@ +@@ -83,7 +83,7 @@ public class TridentItem extends Item implements ProjectileItem { if (tridentSpinAttackStrength == 0.0F) { ItemStack itemStack = stack.copyWithCount(1); // Paper Projectile.Delayed tridentDelayed = Projectile.spawnProjectileFromRotationDelayed( // Paper - PlayerLaunchProjectileEvent( @@ -9,7 +17,7 @@ ); // Paper start - PlayerLaunchProjectileEvent com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) tridentDelayed.projectile().getBukkitEntity()); -@@ -94,6 +_,7 @@ +@@ -94,6 +94,7 @@ public class TridentItem extends Item implements ProjectileItem { return false; } ThrownTrident thrownTrident = tridentDelayed.projectile(); // Paper - PlayerLaunchProjectileEvent diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch similarity index 62% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch index 65243f097..122c3f535 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java b/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java +index 41e1e076a4567d3d3202cf8e426a1ebb391d85e8..2d710dd3f20cbea06c16f14a558b575b369c6ca2 100644 --- a/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java +++ b/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java -@@ -20,6 +_,12 @@ +@@ -20,6 +20,12 @@ public record ClearAllStatusEffectsConsumeEffect() implements ConsumeEffect { @Override // CraftBukkit start public boolean apply(Level level, ItemStack stack, LivingEntity entity, org.bukkit.event.entity.EntityPotionEffectEvent.Cause cause) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/crafting/Ingredient.java.patch similarity index 60% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/crafting/Ingredient.java.patch index fcee0a726..07b657ce0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/crafting/Ingredient.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/crafting/Ingredient.java b/net/minecraft/world/item/crafting/Ingredient.java +index 879c8fe1f20decc793cfa39e686b61d521bd76ba..9c383a1028988cdd3de8b29ba72a4d7bd2a37c7e 100644 --- a/net/minecraft/world/item/crafting/Ingredient.java +++ b/net/minecraft/world/item/crafting/Ingredient.java -@@ -36,6 +_,7 @@ +@@ -36,6 +36,7 @@ public final class Ingredient implements StackedContents.IngredientInfo itemStacks; // Paper - Improve exact choice recipe ingredients @@ -8,7 +16,7 @@ public boolean isExact() { return this.itemStacks != null; -@@ -88,6 +_,11 @@ +@@ -88,6 +89,11 @@ public final class Ingredient implements StackedContents.IngredientInfo +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/net/minecraft/world/item/enchantment/EnchantmentHelper.java +index 66234431b265e0596275ca468cd40f8da98c22e2..e0cc0b49ea47bb38f7f4fe5ef3c793b0009d03c9 100644 --- a/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/net/minecraft/world/item/enchantment/EnchantmentHelper.java -@@ -606,4 +_,58 @@ +@@ -606,4 +606,58 @@ public class EnchantmentHelper { interface EnchantmentVisitor { void accept(Holder enchantment, int level); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch similarity index 78% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch index 9671562b1..3b86deda8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/enchantment/ItemEnchantments.java b/net/minecraft/world/item/enchantment/ItemEnchantments.java +index 6040b73a5351c3eb166250566b5c2385cee39ee0..29619b87fe19c66934fe5aaee8a9641960091bf5 100644 --- a/net/minecraft/world/item/enchantment/ItemEnchantments.java +++ b/net/minecraft/world/item/enchantment/ItemEnchantments.java -@@ -32,7 +_,7 @@ +@@ -32,7 +32,7 @@ public class ItemEnchantments implements TooltipProvider { private static final java.util.Comparator> ENCHANTMENT_ORDER = java.util.Comparator.comparing(Holder::getRegisteredName); public static final ItemEnchantments EMPTY = new ItemEnchantments(new it.unimi.dsi.fastutil.objects.Object2IntAVLTreeMap<>(ENCHANTMENT_ORDER)); // Paper end - sort enchantments @@ -9,7 +17,7 @@ public static final Codec CODEC = Codec.unboundedMap(Enchantment.CODEC, LEVEL_CODEC) .xmap( map -> new net.minecraft.world.item.enchantment.ItemEnchantments(net.minecraft.Util.make(new it.unimi.dsi.fastutil.objects.Object2IntAVLTreeMap<>(ENCHANTMENT_ORDER), m -> m.putAll(map))), // Paper - sort enchantments -@@ -50,7 +_,7 @@ +@@ -50,7 +50,7 @@ public class ItemEnchantments implements TooltipProvider { for (Entry> entry : enchantments.object2IntEntrySet()) { int intValue = entry.getIntValue(); @@ -18,7 +26,7 @@ throw new IllegalArgumentException("Enchantment " + entry.getKey() + " has invalid level " + intValue); } } -@@ -133,13 +_,13 @@ +@@ -133,13 +133,13 @@ public class ItemEnchantments implements TooltipProvider { if (level <= 0) { this.enchantments.removeInt(enchantment); } else { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/trading/MerchantOffer.java.patch similarity index 59% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/trading/MerchantOffer.java.patch index 6a3b114a8..684747a69 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/trading/MerchantOffer.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/item/trading/MerchantOffer.java b/net/minecraft/world/item/trading/MerchantOffer.java +index 9333c63f217e1207eced37c5be150e192f2fcc3e..156cee58134ada34d249aab948c02adac4f6745a 100644 --- a/net/minecraft/world/item/trading/MerchantOffer.java +++ b/net/minecraft/world/item/trading/MerchantOffer.java -@@ -143,7 +_,12 @@ +@@ -143,7 +143,12 @@ public class MerchantOffer { } public void updateDemand() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/BaseSpawner.java.patch similarity index 53% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/BaseSpawner.java.patch index e016949ae..65e7819f9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/BaseSpawner.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/BaseSpawner.java b/net/minecraft/world/level/BaseSpawner.java +index 42f44222a8dd61f70d4583b0ca82a16400baaa5a..41ba9f234e840fadee3c8a52ba9655b97a8b7381 100644 --- a/net/minecraft/world/level/BaseSpawner.java +++ b/net/minecraft/world/level/BaseSpawner.java -@@ -61,6 +_,7 @@ +@@ -61,6 +61,7 @@ public abstract class BaseSpawner { } public boolean isNearPlayer(Level level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/EntityGetter.java.patch similarity index 58% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/EntityGetter.java.patch index 73e6f74b1..b06d9938e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/EntityGetter.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/EntityGetter.java b/net/minecraft/world/level/EntityGetter.java +index 9175a7e4e6076626cb46144c5858c2f2474f1858..452b6df03152dbd2311774bf4872983d3df92665 100644 --- a/net/minecraft/world/level/EntityGetter.java +++ b/net/minecraft/world/level/EntityGetter.java -@@ -185,7 +_,7 @@ +@@ -185,7 +185,7 @@ public interface EntityGetter extends ca.spottedleaf.moonrise.patches.chunk_syst default boolean hasNearbyAlivePlayer(double x, double y, double z, double distance) { for (Player player : this.players()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/Level.java.patch similarity index 85% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/Level.java.patch index dc002e072..cfac1288b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/Level.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java +index c41df4b1fff1f65532256e835dc30fadbb4f8c8b..dccfd0f30111316c9c82004358c2a7051cbd5cdb 100644 --- a/net/minecraft/world/level/Level.java +++ b/net/minecraft/world/level/Level.java -@@ -160,11 +_,55 @@ +@@ -160,11 +160,55 @@ public abstract class Level implements LevelAccessor, UUIDLookup, AutoCl } // Paper end - add paper world config @@ -56,7 +64,7 @@ public CraftWorld getWorld() { return this.world; } -@@ -840,6 +_,8 @@ +@@ -840,6 +884,8 @@ public abstract class Level implements LevelAccessor, UUIDLookup, AutoCl // Paper end - getblock optimisations - cache world height/sections this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config @@ -65,7 +73,7 @@ this.generator = generator; this.world = new CraftWorld((ServerLevel) this, generator, biomeProvider, environment); -@@ -2124,4 +_,14 @@ +@@ -2124,4 +2170,14 @@ public abstract class Level implements LevelAccessor, UUIDLookup, AutoCl return this.id; } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/NaturalSpawner.java.patch similarity index 65% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/NaturalSpawner.java.patch index 6ce413c7d..96108cbec 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/NaturalSpawner.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/NaturalSpawner.java b/net/minecraft/world/level/NaturalSpawner.java +index 14a2514a408a66a83f7b5fb43b4c4dc8f23fd5f4..fa06ecacc27f619853c8db76d909ab4ba75dc529 100644 --- a/net/minecraft/world/level/NaturalSpawner.java +++ b/net/minecraft/world/level/NaturalSpawner.java -@@ -261,7 +_,7 @@ +@@ -261,7 +261,7 @@ public final class NaturalSpawner { mutableBlockPos.set(x, y, z); double d = x + 0.5; double d1 = z + 0.5; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/ServerExplosion.java.patch similarity index 80% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/ServerExplosion.java.patch index 5fb2b122d..b17583de0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/ServerExplosion.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java +index 07e4025ca6c9c31905db2e6921138a0ded479dde..b80924fbe054b00fe5117df896358e330f41e993 100644 --- a/net/minecraft/world/level/ServerExplosion.java +++ b/net/minecraft/world/level/ServerExplosion.java -@@ -648,6 +_,23 @@ +@@ -648,6 +648,23 @@ public class ServerExplosion implements Explosion { this.directMappedBlockCache = new ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache[BLOCK_EXPLOSION_CACHE_WIDTH * BLOCK_EXPLOSION_CACHE_WIDTH * BLOCK_EXPLOSION_CACHE_WIDTH]; this.mutablePos = new BlockPos.MutableBlockPos(); // Paper end - collision optimisations diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AnvilBlock.java.patch similarity index 89% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AnvilBlock.java.patch index a21b8a6a3..dd49d9460 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AnvilBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/AnvilBlock.java b/net/minecraft/world/level/block/AnvilBlock.java +index e8bac6deb63e0f94fb5f8b38602b2e3333e5fa8d..b14736c25cfdd94c6e3f159e53865150b06edef6 100644 --- a/net/minecraft/world/level/block/AnvilBlock.java +++ b/net/minecraft/world/level/block/AnvilBlock.java -@@ -54,6 +_,53 @@ +@@ -54,6 +54,53 @@ public class AnvilBlock extends FallingBlock { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getClockWise()); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AzaleaBlock.java.patch similarity index 70% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AzaleaBlock.java.patch index 066e2cfd6..8fd8fb712 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AzaleaBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/AzaleaBlock.java b/net/minecraft/world/level/block/AzaleaBlock.java +index 435a455ad2ec3dfb142d570a51a720bc6c49dac3..32a1dc20202bad7a15794e98cdc1bf2fb2ad5308 100644 --- a/net/minecraft/world/level/block/AzaleaBlock.java +++ b/net/minecraft/world/level/block/AzaleaBlock.java -@@ -50,6 +_,20 @@ +@@ -50,6 +50,20 @@ public class AzaleaBlock extends VegetationBlock implements BonemealableBlock { @Override public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch new file mode 100644 index 000000000..b46050d3a --- /dev/null +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch @@ -0,0 +1,18 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java b/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java +index fb6e9194440b85487660f91aea7e34fdf086187b..2653ae5bf66f2b117f86e4df04d9cc307ba09011 100644 +--- a/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java ++++ b/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java +@@ -39,6 +39,7 @@ public abstract class BaseCoralPlantTypeBlock extends Block implements SimpleWat + } + + protected static boolean scanForWater(BlockState state, BlockGetter level, BlockPos pos) { ++ if (!((net.minecraft.world.level.LevelAccessor) level).getMinecraftWorld().purpurConfig.coralDieOutsideWater) return true; // Purpur - Config to not let coral die + if (state.getValue(WATERLOGGED)) { + return true; + } else { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BedBlock.java.patch similarity index 73% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BedBlock.java.patch index e0980cdaf..8ae56d2c3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BedBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/BedBlock.java b/net/minecraft/world/level/block/BedBlock.java +index e72ead9ff6541f821a61ad3c50fe068a8c8bb69d..a6f4db5c99d332ac26a52d5174f75e7dc9f51fe5 100644 --- a/net/minecraft/world/level/block/BedBlock.java +++ b/net/minecraft/world/level/block/BedBlock.java -@@ -98,7 +_,7 @@ +@@ -98,7 +98,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock } Vec3 center = pos.getCenter(); @@ -9,7 +17,7 @@ return InteractionResult.SUCCESS_SERVER; } else if (state.getValue(OCCUPIED)) { if (!BedBlock.canSetSpawn(level)) return this.explodeBed(state, level, pos); // Paper - check explode first -@@ -146,7 +_,7 @@ +@@ -146,7 +146,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock } Vec3 center = pos.getCenter(); @@ -18,7 +26,7 @@ return InteractionResult.SUCCESS_SERVER; } // CraftBukkit end -@@ -167,7 +_,7 @@ +@@ -167,7 +167,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock @Override public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch new file mode 100644 index 000000000..17901a989 --- /dev/null +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch @@ -0,0 +1,19 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/BigDripleafBlock.java b/net/minecraft/world/level/block/BigDripleafBlock.java +index e1193bcb666b7d38c511df7c1ebddb5897cefa8f..29248afa290b3143375f0538b4dfc80a63f8945f 100644 +--- a/net/minecraft/world/level/block/BigDripleafBlock.java ++++ b/net/minecraft/world/level/block/BigDripleafBlock.java +@@ -254,7 +254,7 @@ public class BigDripleafBlock extends HorizontalDirectionalBlock implements Bone + playTiltSound(level, pos, sound); + } + +- int _int = DELAY_UNTIL_NEXT_TILT_STATE.getInt(tilt); ++ int _int = level.purpurConfig.bigDripleafTiltDelay.getOrDefault(tilt, -1); // Purpur - Big dripleaf tilt delay + if (_int != -1) { + level.scheduleTick(pos, this, _int); + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Block.java.patch similarity index 85% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Block.java.patch index aee7753ae..46a6170eb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Block.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/Block.java b/net/minecraft/world/level/block/Block.java +index be6f37f91569c659c609e5e8d38671ca86f8cd95..d023c985344807db2180665a15d282fa50754299 100644 --- a/net/minecraft/world/level/block/Block.java +++ b/net/minecraft/world/level/block/Block.java -@@ -99,6 +_,10 @@ +@@ -99,6 +99,10 @@ public class Block extends BlockBehaviour implements ItemLike { public static final int UPDATE_LIMIT = 512; protected final StateDefinition stateDefinition; private BlockState defaultBlockState; @@ -11,7 +19,7 @@ // Paper start - Protect Bedrock and End Portal/Frames from being destroyed public final boolean isDestroyable() { return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits || -@@ -345,7 +_,7 @@ +@@ -345,7 +349,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()) { @@ -20,7 +28,7 @@ } state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, false); // Paper - Properly handle xp dropping block.popExperience(serverLevel, pos, event.getExpToDrop()); // Paper - Properly handle xp dropping -@@ -363,7 +_,7 @@ +@@ -363,7 +367,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, LevelAccessor level, BlockPos pos, @Nullable BlockEntity blockEntity) { if (level instanceof ServerLevel) { @@ -29,7 +37,7 @@ state.spawnAfterBreak((ServerLevel)level, pos, ItemStack.EMPTY, true); } } -@@ -375,11 +_,30 @@ +@@ -375,11 +379,30 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, Level level, BlockPos pos, @Nullable BlockEntity blockEntity, @Nullable Entity entity, ItemStack tool, boolean dropExperience) { // Paper end - Properly handle xp dropping if (level instanceof ServerLevel) { @@ -61,11 +69,10 @@ public static void popResource(Level level, BlockPos pos, ItemStack stack) { double d = EntityType.ITEM.getHeight() / 2.0; double d1 = pos.getX() + 0.5 + Mth.nextDouble(level.random, -0.25, 0.25); -@@ -460,7 +_,15 @@ +@@ -460,7 +483,15 @@ public class Block extends BlockBehaviour implements ItemLike { } public void setPlacedBy(Level level, BlockPos pos, BlockState state, @Nullable LivingEntity placer, ItemStack stack) { -- } + this.placer = placer; // Purpur - Store placer on Block when placed + } + @@ -73,12 +80,12 @@ + @Nullable protected LivingEntity placer = null; + public void forgetPlacer() { + this.placer = null; -+ } + } + // Purpur end - Store placer on Block when placed public boolean isPossibleToRespawnInThis(BlockState state) { return !state.isSolid() && !state.liquid(); -@@ -471,7 +_,7 @@ +@@ -471,7 +502,7 @@ public class Block extends BlockBehaviour implements ItemLike { } public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Blocks.java.patch similarity index 59% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Blocks.java.patch index 5459a3f25..993f701d4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Blocks.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/Blocks.java b/net/minecraft/world/level/block/Blocks.java +index ff2743d808f3c309bf098b98a6fcba7d019f54c1..941c57083803d69503e83c3ccbbb2759ba3db605 100644 --- a/net/minecraft/world/level/block/Blocks.java +++ b/net/minecraft/world/level/block/Blocks.java -@@ -6571,6 +_,7 @@ +@@ -6571,6 +6571,7 @@ public class Blocks { BlockBehaviour.Properties.of() .mapColor(MapColor.PLANT) .forceSolidOff() @@ -8,7 +16,7 @@ .instabreak() .sound(SoundType.AZALEA) .noOcclusion() -@@ -6582,6 +_,7 @@ +@@ -6582,6 +6583,7 @@ public class Blocks { BlockBehaviour.Properties.of() .mapColor(MapColor.PLANT) .forceSolidOff() diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch similarity index 67% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch index 86ef53933..888e2b79e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/BubbleColumnBlock.java b/net/minecraft/world/level/block/BubbleColumnBlock.java +index ab93da06d9e9858668aa796db497f282afa7020a..23a9c30baf8d33855703d45c2739fd5072d81adc 100644 --- a/net/minecraft/world/level/block/BubbleColumnBlock.java +++ b/net/minecraft/world/level/block/BubbleColumnBlock.java -@@ -98,9 +_,9 @@ +@@ -98,9 +98,9 @@ public class BubbleColumnBlock extends Block implements BucketPickup { if (blockState.is(Blocks.BUBBLE_COLUMN)) { return blockState; } else if (blockState.is(Blocks.SOUL_SAND)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CactusBlock.java.patch similarity index 80% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CactusBlock.java.patch index 4fec7e3b9..55f81b7b5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CactusBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/CactusBlock.java b/net/minecraft/world/level/block/CactusBlock.java +index d4fbf130e23a959be8268085067b3bea1541be9a..2e79ce7e02aaa4abcef1507bba71e0305b6c696f 100644 --- a/net/minecraft/world/level/block/CactusBlock.java +++ b/net/minecraft/world/level/block/CactusBlock.java -@@ -22,7 +_,7 @@ +@@ -22,7 +22,7 @@ import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -9,7 +17,7 @@ public static final MapCodec CODEC = simpleCodec(CactusBlock::new); public static final IntegerProperty AGE = BlockStateProperties.AGE_15; public static final int MAX_AGE = 15; -@@ -117,7 +_,7 @@ +@@ -117,7 +117,7 @@ public class CactusBlock extends Block { protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { for (Direction direction : Direction.Plane.HORIZONTAL) { BlockState blockState = level.getBlockState(pos.relative(direction)); @@ -18,7 +26,7 @@ return false; } } -@@ -141,4 +_,34 @@ +@@ -141,4 +141,34 @@ public class CactusBlock extends Block { protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return false; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CakeBlock.java.patch similarity index 59% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CakeBlock.java.patch index c78b443f8..ed2702045 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CakeBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/CakeBlock.java b/net/minecraft/world/level/block/CakeBlock.java +index 72236993ebc4fbfc8b6316577caaa9c780bd447b..7c3b5170690af3bbdc856af96c3e01b0e55d6412 100644 --- a/net/minecraft/world/level/block/CakeBlock.java +++ b/net/minecraft/world/level/block/CakeBlock.java -@@ -109,6 +_,7 @@ +@@ -109,6 +109,7 @@ public class CakeBlock extends Block { org.bukkit.event.entity.FoodLevelChangeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(player, 2 + oldFoodLevel); if (!event.isCancelled()) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CampfireBlock.java.patch similarity index 52% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CampfireBlock.java.patch index 6557f2a69..2ce31e596 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CampfireBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/CampfireBlock.java b/net/minecraft/world/level/block/CampfireBlock.java +index 028e2ad8bcb23b3f9f80a5ec551204bb2d7db1ae..642550d59e17330437028a84830520f394a41728 100644 --- a/net/minecraft/world/level/block/CampfireBlock.java +++ b/net/minecraft/world/level/block/CampfireBlock.java -@@ -124,7 +_,7 @@ +@@ -124,7 +124,7 @@ public class CampfireBlock extends BaseEntityBlock implements SimpleWaterloggedB return this.defaultBlockState() .setValue(WATERLOGGED, flag) .setValue(SIGNAL_FIRE, this.isSmokeSource(level.getBlockState(clickedPos.below()))) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch similarity index 78% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch index 3ab8cbc0e..aa617fdd9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/CarvedPumpkinBlock.java b/net/minecraft/world/level/block/CarvedPumpkinBlock.java +index 7cdf16c7216878350537b5331081cb30f44d6dbb..a4854370dfdcbc7ec4c27975e4feb69d4cb48a11 100644 --- a/net/minecraft/world/level/block/CarvedPumpkinBlock.java +++ b/net/minecraft/world/level/block/CarvedPumpkinBlock.java -@@ -64,7 +_,7 @@ +@@ -64,7 +64,7 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { if (blockPatternMatch != null) { SnowGolem snowGolem = EntityType.SNOW_GOLEM.create(level, EntitySpawnReason.TRIGGERED); if (snowGolem != null) { @@ -9,7 +17,7 @@ } } else { BlockPattern.BlockPatternMatch blockPatternMatch1 = this.getOrCreateIronGolemFull().find(level, pos); -@@ -72,13 +_,23 @@ +@@ -72,13 +72,23 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { IronGolem ironGolem = EntityType.IRON_GOLEM.create(level, EntitySpawnReason.TRIGGERED); if (ironGolem != null) { ironGolem.setPlayerCreated(true); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CauldronBlock.java.patch similarity index 60% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CauldronBlock.java.patch index 6ead2196b..404e8e6c4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CauldronBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/CauldronBlock.java b/net/minecraft/world/level/block/CauldronBlock.java +index d58b49e550cfa683f753db2a913fddf307a1bba2..62ee64b97dfb2f1426d43cf1f8b0b0b6ec63b5b1 100644 --- a/net/minecraft/world/level/block/CauldronBlock.java +++ b/net/minecraft/world/level/block/CauldronBlock.java -@@ -32,8 +_,8 @@ +@@ -32,8 +32,8 @@ public class CauldronBlock extends AbstractCauldronBlock { protected static boolean shouldHandlePrecipitation(Level level, Biome.Precipitation precipitation) { return precipitation == Biome.Precipitation.RAIN diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch similarity index 52% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch index 631c2fafe..8f8dc61ed 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/CaveVinesBlock.java b/net/minecraft/world/level/block/CaveVinesBlock.java +index 4e1a81c01a5c51a977e4fe9d2465e4ef20aab6d4..d67f278e8cb630b680cad22f4117a9545576bf0f 100644 --- a/net/minecraft/world/level/block/CaveVinesBlock.java +++ b/net/minecraft/world/level/block/CaveVinesBlock.java -@@ -92,4 +_,11 @@ +@@ -92,4 +92,11 @@ public class CaveVinesBlock extends GrowingPlantHeadBlock implements CaveVines { public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { level.setBlock(pos, state.setValue(BERRIES, true), 2); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch similarity index 52% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch index 54d2fa463..880f90b83 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/ChangeOverTimeBlock.java b/net/minecraft/world/level/block/ChangeOverTimeBlock.java +index ba7dbfa3f95bf93f3e50b17aa48b772a3047b74d..d42062a86c1278b71bc085cc3fb29a69039873de 100644 --- a/net/minecraft/world/level/block/ChangeOverTimeBlock.java +++ b/net/minecraft/world/level/block/ChangeOverTimeBlock.java -@@ -51,7 +_,7 @@ +@@ -51,7 +51,7 @@ public interface ChangeOverTimeBlock> { } float f = (float)(i1 + 1) / (i1 + i + 1); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChestBlock.java.patch similarity index 50% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChestBlock.java.patch index 92f2abf28..df1eb04c1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChestBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/ChestBlock.java b/net/minecraft/world/level/block/ChestBlock.java +index c4937d1b482e2ec60961bda62ad6cc155f0ce8f7..43f9d4b8a7ab4cd0a1a5dee9d0c0c7790894a2ae 100644 --- a/net/minecraft/world/level/block/ChestBlock.java +++ b/net/minecraft/world/level/block/ChestBlock.java -@@ -337,6 +_,7 @@ +@@ -337,6 +337,7 @@ public class ChestBlock extends AbstractChestBlock implements } public static boolean isBlockedChestByBlock(BlockGetter level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ComposterBlock.java.patch similarity index 81% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ComposterBlock.java.patch index 8ee18624a..713855f07 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ComposterBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/ComposterBlock.java b/net/minecraft/world/level/block/ComposterBlock.java +index a647d76d365a60b95a3eb7927ac426bf70d417f3..3eb11df5d14ec63911be630ca99d8d9903723f9b 100644 --- a/net/minecraft/world/level/block/ComposterBlock.java +++ b/net/minecraft/world/level/block/ComposterBlock.java -@@ -250,23 +_,52 @@ +@@ -250,17 +250,27 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { ) { int levelValue = state.getValue(LEVEL); if (levelValue < 8 && COMPOSTABLES.containsKey(stack.getItem())) { @@ -14,7 +22,6 @@ - level.levelEvent(1500, pos, state != blockState ? 1 : 0); - player.awardStat(Stats.ITEM_USED.get(stack.getItem())); - stack.consume(1, player); -- } + // Purpur start - sneak to bulk process composter + BlockState newState = process(levelValue, player, state, level, pos, stack); + if (newState == null) { @@ -34,15 +41,15 @@ + newCount = stack.getCount(); + newLevel = newState.getValue(ComposterBlock.LEVEL); + } while (newCount > 0 && (newCount != oldCount || newLevel != oldLevel || newState != oldState)); -+ } + } + // Purpur end - Sneak to bulk process composter return InteractionResult.SUCCESS; } else { - return super.useItemOn(stack, state, level, pos, player, hand, hitResult); +@@ -268,6 +278,25 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { } } -+ + + // Purpur start - sneak to bulk process composter + private static @Nullable BlockState process(int levelValue, Player player, BlockState state, Level level, BlockPos pos, ItemStack stack) { + if (levelValue < 7 && !level.isClientSide) { @@ -61,6 +68,7 @@ + return state; + } + // Purpur end - Sneak to bulk process composter - ++ @Override protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { + int levelValue = state.getValue(LEVEL); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CoralBlock.java.patch similarity index 54% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CoralBlock.java.patch index 690cfe031..510e22e22 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CoralBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/CoralBlock.java b/net/minecraft/world/level/block/CoralBlock.java +index e0be02eaa07d40d0738931383426517d20fe3b0b..b747af5f3c65f4b79a304b0e903f7b824fb03d8d 100644 --- a/net/minecraft/world/level/block/CoralBlock.java +++ b/net/minecraft/world/level/block/CoralBlock.java -@@ -65,6 +_,7 @@ +@@ -65,6 +65,7 @@ public class CoralBlock extends Block { } protected boolean scanForWater(BlockGetter level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CropBlock.java.patch similarity index 78% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CropBlock.java.patch index 667d7f96f..ec412e6af 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CropBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/CropBlock.java b/net/minecraft/world/level/block/CropBlock.java +index a38ce03a4dab6c83a0b54f47fd3c36d6da46fa24..b370b955ac8636275dfada4f38a7ca10297f7dac 100644 --- a/net/minecraft/world/level/block/CropBlock.java +++ b/net/minecraft/world/level/block/CropBlock.java -@@ -169,7 +_,7 @@ +@@ -169,7 +169,7 @@ public class CropBlock extends VegetationBlock implements BonemealableBlock { @Override protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent @@ -9,7 +17,7 @@ serverLevel.destroyBlock(pos, true, entity); } -@@ -204,4 +_,15 @@ +@@ -204,4 +204,15 @@ public class CropBlock extends VegetationBlock implements BonemealableBlock { protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DoorBlock.java.patch similarity index 74% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DoorBlock.java.patch index 235a738f9..6b4948207 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DoorBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/DoorBlock.java b/net/minecraft/world/level/block/DoorBlock.java +index 7f40ccfe379ab284424d730213b343e17239dc0c..2fa6a85b0f1694d0989905a421198c6495271beb 100644 --- a/net/minecraft/world/level/block/DoorBlock.java +++ b/net/minecraft/world/level/block/DoorBlock.java -@@ -199,6 +_,7 @@ +@@ -199,6 +199,7 @@ public class DoorBlock extends Block { protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { if (!this.type.canOpenByHand()) { return InteractionResult.PASS; @@ -8,7 +16,7 @@ } else { state = state.cycle(OPEN); level.setBlock(pos, state, 10); -@@ -287,4 +_,18 @@ +@@ -287,4 +288,18 @@ public class DoorBlock extends Block { public static boolean isWoodenDoor(BlockState state) { return state.getBlock() instanceof DoorBlock doorBlock && doorBlock.type().canOpenByHand(); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DragonEggBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DragonEggBlock.java.patch new file mode 100644 index 000000000..e1e1ec020 --- /dev/null +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DragonEggBlock.java.patch @@ -0,0 +1,18 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/DragonEggBlock.java b/net/minecraft/world/level/block/DragonEggBlock.java +index 5c2f10486e3aed090c6545a86276e6927e424cb2..9ed7ffb10e0a172fe5f3dd4613922428af82e5db 100644 +--- a/net/minecraft/world/level/block/DragonEggBlock.java ++++ b/net/minecraft/world/level/block/DragonEggBlock.java +@@ -46,6 +46,7 @@ public class DragonEggBlock extends FallingBlock { + } + + private void teleport(BlockState state, Level level, BlockPos pos) { ++ if (!level.purpurConfig.dragonEggTeleport) return; // Purpur - Option to disable dragon egg teleporting + WorldBorder worldBorder = level.getWorldBorder(); + + for (int i = 0; i < 1000; i++) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch similarity index 68% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch index 30d849778..9c17c185f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/EnchantingTableBlock.java b/net/minecraft/world/level/block/EnchantingTableBlock.java +index 523082c69aad8269cd058ad6864184c3ab51dbeb..4f4e81a845c4d3dc0e7d82ba323a8595581535e2 100644 --- a/net/minecraft/world/level/block/EnchantingTableBlock.java +++ b/net/minecraft/world/level/block/EnchantingTableBlock.java -@@ -119,4 +_,16 @@ +@@ -119,4 +119,16 @@ public class EnchantingTableBlock extends BaseEntityBlock { protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return false; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/FarmBlock.java.patch similarity index 83% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/FarmBlock.java.patch index c04018815..660ef4873 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/FarmBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/FarmBlock.java b/net/minecraft/world/level/block/FarmBlock.java +index a31ac95237515b874f59941ec24c74e2c357b3d8..9883e6d1a1b76155c8ba1817fda6615b4742e18e 100644 --- a/net/minecraft/world/level/block/FarmBlock.java +++ b/net/minecraft/world/level/block/FarmBlock.java -@@ -112,7 +_,7 @@ +@@ -112,7 +112,7 @@ public class FarmBlock extends Block { public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { super.fallOn(level, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. if (level instanceof ServerLevel serverLevel @@ -9,7 +17,7 @@ && entity instanceof LivingEntity && (entity instanceof Player || serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) { -@@ -129,6 +_,28 @@ +@@ -129,6 +129,28 @@ public class FarmBlock extends Block { return; } @@ -38,7 +46,7 @@ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; } -@@ -177,7 +_,7 @@ +@@ -177,7 +199,7 @@ public class FarmBlock extends Block { } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch similarity index 77% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch index 7dd50302a..a4a78f446 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/GrowingPlantHeadBlock.java b/net/minecraft/world/level/block/GrowingPlantHeadBlock.java +index fe11f3ec82ebdbdf3d024d7273fb16b6823b1ece..daaf0ddee9192fa24a70954ce52b381560fcbc1f 100644 --- a/net/minecraft/world/level/block/GrowingPlantHeadBlock.java +++ b/net/minecraft/world/level/block/GrowingPlantHeadBlock.java -@@ -34,12 +_,12 @@ +@@ -34,12 +34,12 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements @Override public BlockState getStateForPlacement(RandomSource random) { @@ -15,7 +23,7 @@ } @Override -@@ -55,7 +_,7 @@ +@@ -55,7 +55,7 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements } else if (this == Blocks.CAVE_VINES) { modifier = level.spigotConfig.caveVinesModifier; } @@ -24,7 +32,7 @@ // Spigot end BlockPos blockPos = pos.relative(this.growthDirection); if (this.canGrowInto(level.getBlockState(blockPos))) { -@@ -75,11 +_,11 @@ +@@ -75,11 +75,11 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements } public BlockState getMaxAgeState(BlockState state) { @@ -38,7 +46,7 @@ } protected BlockState updateBodyAfterConvertedFromHead(BlockState head, BlockState body) { -@@ -137,13 +_,13 @@ +@@ -137,13 +137,13 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements @Override public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { BlockPos blockPos = pos.relative(this.growthDirection); @@ -54,7 +62,7 @@ } } -@@ -155,4 +_,6 @@ +@@ -155,4 +155,6 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements protected GrowingPlantHeadBlock getHeadBlock() { return this; } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/HayBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/HayBlock.java.patch new file mode 100644 index 000000000..cdb21acfa --- /dev/null +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/HayBlock.java.patch @@ -0,0 +1,18 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/HayBlock.java b/net/minecraft/world/level/block/HayBlock.java +index cdde0a25e0a499d7575c00796143a033feb1f22f..999ecf16180b0a862cf8527ce532acf725ba869a 100644 +--- a/net/minecraft/world/level/block/HayBlock.java ++++ b/net/minecraft/world/level/block/HayBlock.java +@@ -23,6 +23,6 @@ public class HayBlock extends RotatedPillarBlock { + + @Override + public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { +- entity.causeFallDamage(fallDistance, 0.2F, level.damageSources().fall()); ++ super.fallOn(level, state, pos, entity, fallDistance); // Purpur - Configurable block fall damage modifiers + } + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/IceBlock.java.patch similarity index 65% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/IceBlock.java.patch index 0f5251d57..9126c24b1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/IceBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/IceBlock.java b/net/minecraft/world/level/block/IceBlock.java +index be7141a4009036bcf3f92bba5d0ad74459e99bfa..a4d735a4365fdaf9e602315aa1176dfd5db77ff5 100644 --- a/net/minecraft/world/level/block/IceBlock.java +++ b/net/minecraft/world/level/block/IceBlock.java -@@ -40,7 +_,7 @@ +@@ -40,7 +40,7 @@ public class IceBlock extends HalfTransparentBlock { public void afterDestroy(Level level, BlockPos pos, ItemStack stack) { // Paper end - Improve Block#breakNaturally API if (!EnchantmentHelper.hasTag(stack, EnchantmentTags.PREVENTS_ICE_MELTING)) { @@ -9,7 +17,7 @@ level.removeBlock(pos, false); return; } -@@ -65,7 +_,7 @@ +@@ -65,7 +65,7 @@ public class IceBlock extends HalfTransparentBlock { return; } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/KelpBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/KelpBlock.java.patch new file mode 100644 index 000000000..611e3ef31 --- /dev/null +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/KelpBlock.java.patch @@ -0,0 +1,22 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/KelpBlock.java b/net/minecraft/world/level/block/KelpBlock.java +index 8e3f2518e705a4b8988a1c9da730f0c89f21bdce..6e6212fd891dcaea0d0a398a73416f31d2cb2406 100644 +--- a/net/minecraft/world/level/block/KelpBlock.java ++++ b/net/minecraft/world/level/block/KelpBlock.java +@@ -72,4 +72,11 @@ public class KelpBlock extends GrowingPlantHeadBlock implements LiquidBlockConta + protected FluidState getFluidState(BlockState state) { + return Fluids.WATER.getSource(false); + } ++ ++ // Purpur start - kelp vines configurable max growth age ++ @Override ++ public int getMaxGrowthAge() { ++ return org.purpurmc.purpur.PurpurConfig.kelpMaxGrowthAge; ++ } ++ // Purpur end - kelp vines configurable max growth age + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/LiquidBlock.java.patch similarity index 71% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/LiquidBlock.java.patch index ef0559942..88f61cca5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/LiquidBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/LiquidBlock.java b/net/minecraft/world/level/block/LiquidBlock.java +index 7320b416e8d660419018b0699f49ab6f45a3373b..ae609e0603a78423c4c89b7efb9c41ab8fe7aa52 100644 --- a/net/minecraft/world/level/block/LiquidBlock.java +++ b/net/minecraft/world/level/block/LiquidBlock.java -@@ -134,7 +_,7 @@ +@@ -134,7 +134,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean isMoving) { @@ -9,7 +17,7 @@ level.scheduleTick(pos, state.getFluidState().getType(), this.getFlowSpeed(level, pos)); // Paper - Configurable speed for water flowing over lava } } -@@ -169,7 +_,7 @@ +@@ -169,7 +169,7 @@ public class LiquidBlock extends Block implements BucketPickup { BlockState neighborState, RandomSource random ) { @@ -18,7 +26,7 @@ scheduledTickAccess.scheduleTick(pos, state.getFluidState().getType(), this.fluid.getTickDelay(level)); } -@@ -178,7 +_,7 @@ +@@ -178,7 +178,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override protected void neighborChanged(BlockState state, Level level, BlockPos pos, Block neighborBlock, @Nullable Orientation orientation, boolean movedByPiston) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/MagmaBlock.java.patch similarity index 57% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/MagmaBlock.java.patch index f9d8ca928..2023dadda 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/MagmaBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/MagmaBlock.java b/net/minecraft/world/level/block/MagmaBlock.java +index db83c3630064a6875b477021a1f78bdf59c4ddc3..bbf8447cf986015f8a2e55f39d7b4f0dd9abcb23 100644 --- a/net/minecraft/world/level/block/MagmaBlock.java +++ b/net/minecraft/world/level/block/MagmaBlock.java -@@ -28,7 +_,7 @@ +@@ -28,7 +28,7 @@ public class MagmaBlock extends Block { @Override public void stepOn(Level level, BlockPos pos, BlockState state, Entity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch similarity index 66% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch index f3f45c58f..a363499f8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/NetherPortalBlock.java b/net/minecraft/world/level/block/NetherPortalBlock.java +index 6c5629a6f5f91496a55eb0bf281ceae1567915b1..f408bdd8083210b2ef660e6194610462a3e113b6 100644 --- a/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/net/minecraft/world/level/block/NetherPortalBlock.java -@@ -67,7 +_,7 @@ +@@ -67,7 +67,7 @@ public class NetherPortalBlock extends Block implements Portal { protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { if (level.spigotConfig.enableZombiePigmenPortalSpawns && level.dimensionType().natural() // Spigot && level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) @@ -9,7 +17,7 @@ && level.anyPlayerCloseEnoughForSpawning(pos)) { while (level.getBlockState(pos).is(this)) { pos = pos.below(); -@@ -125,7 +_,7 @@ +@@ -125,7 +125,7 @@ public class NetherPortalBlock extends Block implements Portal { @Override public int getPortalTransitionTime(ServerLevel level, Entity entity) { return entity instanceof Player player diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherWartBlock.java.patch similarity index 81% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherWartBlock.java.patch index 362dae20a..c81f54054 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherWartBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/NetherWartBlock.java b/net/minecraft/world/level/block/NetherWartBlock.java +index a8cb58de6223006150bc49b95e5964b8fc42cecc..d25e2a37abb5e4c98116048fe2e96194149763ca 100644 --- a/net/minecraft/world/level/block/NetherWartBlock.java +++ b/net/minecraft/world/level/block/NetherWartBlock.java -@@ -16,7 +_,7 @@ +@@ -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; @@ -9,7 +17,7 @@ public static final MapCodec CODEC = simpleCodec(NetherWartBlock::new); public static final int MAX_AGE = 3; public static final IntegerProperty AGE = BlockStateProperties.AGE_3; -@@ -65,4 +_,34 @@ +@@ -65,4 +65,34 @@ public class NetherWartBlock extends VegetationBlock { protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NoteBlock.java.patch similarity index 59% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NoteBlock.java.patch index 42c3d0b22..d7e680f32 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NoteBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/NoteBlock.java b/net/minecraft/world/level/block/NoteBlock.java +index 9467d5226797f67565edf8a46fd5b48135337410..7560d49b1952dba22e88758b15a24540ca576bbb 100644 --- a/net/minecraft/world/level/block/NoteBlock.java +++ b/net/minecraft/world/level/block/NoteBlock.java -@@ -101,7 +_,7 @@ +@@ -101,7 +101,7 @@ public class NoteBlock extends Block { } private void playNote(@Nullable Entity entity, BlockState state, Level level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ObserverBlock.java.patch similarity index 54% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ObserverBlock.java.patch index 3202a8cee..6c3569580 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ObserverBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/ObserverBlock.java b/net/minecraft/world/level/block/ObserverBlock.java +index bd2aa00ce8b78c16f6107064dd00bfbb072df0df..9fa1ed439ef9adba44f3d4738688a95fb4625b68 100644 --- a/net/minecraft/world/level/block/ObserverBlock.java +++ b/net/minecraft/world/level/block/ObserverBlock.java -@@ -81,6 +_,7 @@ +@@ -81,6 +81,7 @@ public class ObserverBlock extends DirectionalBlock { RandomSource random ) { if (state.getValue(FACING) == direction && !state.getValue(POWERED)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch similarity index 73% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch index cad7d9a3c..29dbc65c6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/PointedDripstoneBlock.java b/net/minecraft/world/level/block/PointedDripstoneBlock.java +index ef164fb4f24412e506b8abce74d509e8be6c4676..85e9aecc2045e1599488d6a137f5f9713fb1a245 100644 --- a/net/minecraft/world/level/block/PointedDripstoneBlock.java +++ b/net/minecraft/world/level/block/PointedDripstoneBlock.java -@@ -193,20 +_,20 @@ +@@ -193,20 +193,20 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate @VisibleForTesting public static void maybeTransferFluid(BlockState state, ServerLevel level, BlockPos pos, float randChance) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch similarity index 51% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch index f6c12cc4c..c3c34af13 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/PoweredRailBlock.java b/net/minecraft/world/level/block/PoweredRailBlock.java +index e4c4a6b4a6ea41b1fdb006cfc70dfb68dcd056c0..0c78c9003d93d0a36da9318910b6f0769932d39a 100644 --- a/net/minecraft/world/level/block/PoweredRailBlock.java +++ b/net/minecraft/world/level/block/PoweredRailBlock.java -@@ -28,7 +_,7 @@ +@@ -28,7 +28,7 @@ public class PoweredRailBlock extends BaseRailBlock { } protected boolean findPoweredRailSignal(Level level, BlockPos pos, BlockState state, boolean searchForward, int recursionCount) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch similarity index 62% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch index c5ac40711..2088be7ad 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/RespawnAnchorBlock.java b/net/minecraft/world/level/block/RespawnAnchorBlock.java +index 5b9d67d671ea70d4a8920a7f190d240c920971ac..f0b4ea2065f98f5430bba89f1a86ea5e8791aa1f 100644 --- a/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/net/minecraft/world/level/block/RespawnAnchorBlock.java -@@ -160,7 +_,7 @@ +@@ -160,7 +160,7 @@ public class RespawnAnchorBlock extends Block { }; Vec3 center = pos2.getCenter(); level.explode( diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch similarity index 57% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch index aa23616be..3dd7094fd 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/SculkShriekerBlock.java b/net/minecraft/world/level/block/SculkShriekerBlock.java +index 757f8453e147875ab9f14d9726bb734ef27447c9..f8c9a6d7c9f1a9d2afd820244017a709db79e080 100644 --- a/net/minecraft/world/level/block/SculkShriekerBlock.java +++ b/net/minecraft/world/level/block/SculkShriekerBlock.java -@@ -118,7 +_,7 @@ +@@ -118,7 +118,7 @@ public class SculkShriekerBlock extends BaseEntityBlock implements SimpleWaterlo @Nullable @Override public BlockState getStateForPlacement(BlockPlaceContext context) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SlabBlock.java.patch similarity index 73% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SlabBlock.java.patch index 9e9c9b817..d85e52957 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SlabBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/SlabBlock.java b/net/minecraft/world/level/block/SlabBlock.java +index a71d72147db9766fa16bdb6254d8eb6f2f7dba7b..66b9862563932faf0044810bde7bd3fb522c109b 100644 --- a/net/minecraft/world/level/block/SlabBlock.java +++ b/net/minecraft/world/level/block/SlabBlock.java -@@ -144,4 +_,25 @@ +@@ -144,4 +144,25 @@ public class SlabBlock extends Block implements SimpleWaterloggedBlock { return false; } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch similarity index 56% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch index ca87324a4..d4ed6c564 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/SnowLayerBlock.java b/net/minecraft/world/level/block/SnowLayerBlock.java +index 9131098e3ae4e6ffdf1491eb62537e385f75b6b2..ddedc08a96e500a390421d39be36590f37f49d24 100644 --- a/net/minecraft/world/level/block/SnowLayerBlock.java +++ b/net/minecraft/world/level/block/SnowLayerBlock.java -@@ -76,6 +_,7 @@ +@@ -76,6 +76,7 @@ public class SnowLayerBlock extends Block { @Override protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { BlockState blockState = level.getBlockState(pos.below()); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpawnerBlock.java.patch similarity index 90% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpawnerBlock.java.patch index 0b505b086..6c3136793 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpawnerBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/SpawnerBlock.java b/net/minecraft/world/level/block/SpawnerBlock.java +index e8d7b6adbcb84e8d89067b54318e0feb3c3276a6..dc2846e26e778b2885fd9c558081c7677d48169a 100644 --- a/net/minecraft/world/level/block/SpawnerBlock.java +++ b/net/minecraft/world/level/block/SpawnerBlock.java -@@ -14,6 +_,7 @@ +@@ -14,6 +14,7 @@ import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; public class SpawnerBlock extends BaseEntityBlock { @@ -8,7 +16,7 @@ public static final MapCodec CODEC = simpleCodec(SpawnerBlock::new); @Override -@@ -38,6 +_,62 @@ +@@ -38,6 +39,62 @@ public class SpawnerBlock extends BaseEntityBlock { ); } @@ -71,7 +79,7 @@ @Override protected void spawnAfterBreak(BlockState state, ServerLevel level, BlockPos pos, ItemStack stack, boolean dropExperience) { super.spawnAfterBreak(state, level, pos, stack, dropExperience); -@@ -46,6 +_,7 @@ +@@ -46,6 +103,7 @@ public class SpawnerBlock extends BaseEntityBlock { @Override public int getExpDrop(BlockState state, ServerLevel level, BlockPos pos, ItemStack stack, boolean dropExperience) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpongeBlock.java.patch similarity index 80% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpongeBlock.java.patch index ab343ffb3..ea43bbfc3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpongeBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/SpongeBlock.java b/net/minecraft/world/level/block/SpongeBlock.java +index 6764a77998e23de08eaf3a82a0cc0006868e1c3e..f7b6c0029e8d35ebf0fad380b8bc3b1530e2f8f1 100644 --- a/net/minecraft/world/level/block/SpongeBlock.java +++ b/net/minecraft/world/level/block/SpongeBlock.java -@@ -53,8 +_,8 @@ +@@ -53,8 +53,8 @@ public class SpongeBlock extends Block { org.bukkit.craftbukkit.util.BlockStateListPopulator blockList = new org.bukkit.craftbukkit.util.BlockStateListPopulator(level); // CraftBukkit - Use BlockStateListPopulator BlockPos.breadthFirstTraversal( pos, @@ -11,7 +19,7 @@ (validPos, queueAdder) -> { for (Direction direction : ALL_DIRECTIONS) { queueAdder.accept(validPos.relative(direction)); -@@ -68,7 +_,7 @@ +@@ -68,7 +68,7 @@ public class SpongeBlock extends Block { BlockState blockState = blockList.getBlockState(blockPos); FluidState fluidState = blockList.getFluidState(blockPos); // CraftBukkit end @@ -20,7 +28,7 @@ return BlockPos.TraversalNodeStatus.SKIP; } else if (blockState.getBlock() instanceof BucketPickup bucketPickup && !bucketPickup.pickupBlock(null, blockList, blockPos, blockState).isEmpty()) { // CraftBukkit -@@ -76,6 +_,10 @@ +@@ -76,6 +76,10 @@ public class SpongeBlock extends Block { } else { if (blockState.getBlock() instanceof LiquidBlock) { blockList.setBlock(blockPos, Blocks.AIR.defaultBlockState(), 3); // CraftBukkit diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/StonecutterBlock.java.patch similarity index 63% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/StonecutterBlock.java.patch index 8cfd145db..867861d1c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/StonecutterBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/StonecutterBlock.java b/net/minecraft/world/level/block/StonecutterBlock.java +index 6d1ab251e7d09ada7edcde7f52ca49ae5efe16b6..a58c94a40bad1d60b970b06decde9851692a8b63 100644 --- a/net/minecraft/world/level/block/StonecutterBlock.java +++ b/net/minecraft/world/level/block/StonecutterBlock.java -@@ -93,4 +_,14 @@ +@@ -93,4 +93,14 @@ public class StonecutterBlock extends Block { protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return false; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch similarity index 78% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch index f388f13ce..21094115f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/SugarCaneBlock.java b/net/minecraft/world/level/block/SugarCaneBlock.java +index a8de37e173e244d7a16c19ac8805e0e4327c837a..baa56c6422c0924bb8b7c5a78db17acf784f28d6 100644 --- a/net/minecraft/world/level/block/SugarCaneBlock.java +++ b/net/minecraft/world/level/block/SugarCaneBlock.java -@@ -19,7 +_,7 @@ +@@ -19,7 +19,7 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -9,7 +17,7 @@ public static final MapCodec CODEC = simpleCodec(SugarCaneBlock::new); public static final IntegerProperty AGE = BlockStateProperties.AGE_15; private static final VoxelShape SHAPE = Block.column(12.0, 0.0, 16.0); -@@ -112,4 +_,34 @@ +@@ -112,4 +112,34 @@ public class SugarCaneBlock extends Block { protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch similarity index 82% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch index 165f005db..bb4d9bbe5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/TurtleEggBlock.java b/net/minecraft/world/level/block/TurtleEggBlock.java +index 8ee103e2752290db4cb4b22bb3552bf80e2ceb92..a23626dbfacf98ef1bc7918ca35406fa71307bed 100644 --- a/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -156,7 +_,7 @@ +@@ -156,7 +156,7 @@ public class TurtleEggBlock extends Block { private boolean shouldUpdateHatchLevel(Level level) { float timeOfDay = level.getTimeOfDay(1.0F); @@ -9,7 +17,7 @@ } @Override -@@ -189,9 +_,32 @@ +@@ -189,9 +189,32 @@ public class TurtleEggBlock extends Block { } private boolean canDestroyEgg(ServerLevel level, Entity entity) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch similarity index 50% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch index 89633d8f7..80fca84c6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/TwistingVinesBlock.java b/net/minecraft/world/level/block/TwistingVinesBlock.java +index afb77747ea6966c435aca4b667bfbbc909f52232..361aaca76ae0375782310af0e03241625f08f7bd 100644 --- a/net/minecraft/world/level/block/TwistingVinesBlock.java +++ b/net/minecraft/world/level/block/TwistingVinesBlock.java -@@ -34,4 +_,11 @@ +@@ -34,4 +34,11 @@ public class TwistingVinesBlock extends GrowingPlantHeadBlock { protected boolean canGrowInto(BlockState state) { return NetherVines.isValidGrowthState(state); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/VegetationBlock.java.patch similarity index 78% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/VegetationBlock.java.patch index af22ad6c3..b74b885aa 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/VegetationBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/VegetationBlock.java b/net/minecraft/world/level/block/VegetationBlock.java +index 0aa7c1084fd6ed35260469572cdd914d87f3922a..a1b5e815425fccbc601c8062fcc24598512e47dd 100644 --- a/net/minecraft/world/level/block/VegetationBlock.java +++ b/net/minecraft/world/level/block/VegetationBlock.java -@@ -61,4 +_,24 @@ +@@ -61,4 +61,24 @@ public abstract class VegetationBlock extends Block { protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return pathComputationType == PathComputationType.AIR && !this.hasCollision || super.isPathfindable(state, pathComputationType); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch similarity index 50% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch index be28707f2..6b2dd4ecc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/WeepingVinesBlock.java b/net/minecraft/world/level/block/WeepingVinesBlock.java +index f4ff810cdd4206711312a4fffba18f4b30a5701f..96fb69aaf9ed020a328ff609d49f88ab29a69952 100644 --- a/net/minecraft/world/level/block/WeepingVinesBlock.java +++ b/net/minecraft/world/level/block/WeepingVinesBlock.java -@@ -34,4 +_,11 @@ +@@ -34,4 +34,11 @@ public class WeepingVinesBlock extends GrowingPlantHeadBlock { protected boolean canGrowInto(BlockState state) { return NetherVines.isValidGrowthState(state); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch similarity index 59% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch index d92c3e43b..c99b98b19 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/WitherSkullBlock.java b/net/minecraft/world/level/block/WitherSkullBlock.java +index 0b6debe0e55e404e6f34b3bc437fe7c7a30cec7c..a70f552fddc58efdce770c36abb548ef8359d939 100644 --- a/net/minecraft/world/level/block/WitherSkullBlock.java +++ b/net/minecraft/world/level/block/WitherSkullBlock.java -@@ -71,6 +_,7 @@ +@@ -71,6 +71,7 @@ public class WitherSkullBlock extends SkullBlock { ); witherBoss.yBodyRot = blockPatternMatch.getForwards().getAxis() == Direction.Axis.X ? 0.0F : 90.0F; witherBoss.makeInvulnerable(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch similarity index 71% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch index 4cb4b65da..e199d81eb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +index 36a72a11d28f99bfe85868461925b778cc01478e..57eae0dbb614f57e2a352613c7490145bbfeb5a1 100644 --- a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -@@ -186,6 +_,21 @@ +@@ -186,6 +186,21 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit } ItemStack itemStack = furnace.items.get(1); @@ -22,7 +30,7 @@ ItemStack itemStack1 = furnace.items.get(0); boolean flag1 = !itemStack1.isEmpty(); boolean flag2 = !itemStack.isEmpty(); -@@ -269,6 +_,8 @@ +@@ -269,6 +284,8 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit if (flag) { setChanged(level, pos, state); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch similarity index 73% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch index f196366ed..48e7bf263 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +index 503c8625cd77a564e55fc1427137d43a5cc12d9e..c2e15c6e1c6bfc5a9d89afc9b8aa9551bad2cc8f 100644 --- a/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -@@ -143,6 +_,16 @@ +@@ -143,6 +143,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name public double getEffectRange() { if (this.effectRange < 0) { @@ -17,7 +25,7 @@ return this.levels * 10 + 10; } else { return effectRange; -@@ -172,6 +_,7 @@ +@@ -172,6 +182,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name int y = pos.getY(); int z = pos.getZ(); BlockPos blockPos; @@ -25,7 +33,7 @@ if (blockEntity.lastCheckY < y) { blockPos = pos; blockEntity.checkingBeamSections = Lists.newArrayList(); -@@ -201,6 +_,7 @@ +@@ -201,6 +212,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name } } } else { @@ -33,7 +41,7 @@ if (section == null || blockState.getLightBlock() >= 15 && !blockState.is(Blocks.BEDROCK)) { blockEntity.checkingBeamSections.clear(); blockEntity.lastCheckY = height; -@@ -220,7 +_,7 @@ +@@ -220,7 +232,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name blockEntity.levels = updateBase(level, x, y, z); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch similarity index 76% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch index 9369902be..51ece6ae5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +index 91f7ee163107d846e7f6a5783be6eff96e783886..b1b49fa83794f4237994e9b985816ddf6d20b7e9 100644 --- a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -@@ -75,7 +_,7 @@ +@@ -75,7 +75,7 @@ public class BeehiveBlockEntity extends BlockEntity { "leash", "UUID" ); @@ -9,7 +17,7 @@ private static final int MIN_TICKS_BEFORE_REENTERING_HIVE = 400; private static final int MIN_OCCUPATION_TICKS_NECTAR = 2400; public static final int MIN_OCCUPATION_TICKS_NECTARLESS = 600; -@@ -150,11 +_,33 @@ +@@ -150,11 +150,33 @@ public class BeehiveBlockEntity extends BlockEntity { return list; } @@ -43,7 +51,7 @@ // Paper start - Add EntityBlockStorage clearEntities public void clearBees() { this.stored.clear(); -@@ -392,8 +_,8 @@ +@@ -392,8 +414,8 @@ public class BeehiveBlockEntity extends BlockEntity { return this.stored.stream().map(BeehiveBlockEntity.BeeData::toOccupant).toList(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch similarity index 74% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch index 8abc6fa2c..66745a3db 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/entity/BlockEntity.java b/net/minecraft/world/level/block/entity/BlockEntity.java +index 5986825d6a381eeb445dd424dd127864aa703163..a5ade8268a74738170caf519e7e45e13862bc39d 100644 --- a/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -105,6 +_,10 @@ +@@ -105,6 +105,10 @@ public abstract class BlockEntity { input.read("PublicBukkitValues", CompoundTag.CODEC) .ifPresent(this.persistentDataContainer::putAll); // Paper end - read persistent data container @@ -11,7 +19,7 @@ } public final void loadWithComponents(ValueInput input) { -@@ -117,6 +_,11 @@ +@@ -117,6 +121,11 @@ public abstract class BlockEntity { } protected void saveAdditional(ValueOutput output) { @@ -23,7 +31,7 @@ } public final CompoundTag saveWithFullMetadata(HolderLookup.Provider registries) { -@@ -402,4 +_,17 @@ +@@ -402,4 +411,17 @@ public abstract class BlockEntity { return this.blockEntity.getNameForReporting() + "@" + this.blockEntity.getBlockPos(); } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch similarity index 85% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch index a337495d8..f4ef5af2e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/entity/ConduitBlockEntity.java b/net/minecraft/world/level/block/entity/ConduitBlockEntity.java +index 0e87d20639c382be2221d73c7498480d21ebeafb..3ea9fe4c936f024c15a6bba6e7c5d960a3def1f9 100644 --- a/net/minecraft/world/level/block/entity/ConduitBlockEntity.java +++ b/net/minecraft/world/level/block/entity/ConduitBlockEntity.java -@@ -151,7 +_,7 @@ +@@ -151,7 +151,7 @@ public class ConduitBlockEntity extends BlockEntity { BlockPos blockPos1 = pos.offset(i, i1, i2x); BlockState blockState = level.getBlockState(blockPos1); @@ -9,7 +17,7 @@ if (blockState.is(block)) { positions.add(blockPos1); } -@@ -166,13 +_,13 @@ +@@ -166,13 +166,13 @@ public class ConduitBlockEntity extends BlockEntity { private static void applyEffects(Level level, BlockPos pos, List positions) { // CraftBukkit start @@ -26,7 +34,7 @@ // CraftBukkit start return i; } -@@ -202,7 +_,7 @@ +@@ -202,7 +202,7 @@ public class ConduitBlockEntity extends BlockEntity { EntityReference entityReference = updateDestroyTarget(blockEntity.destroyTarget, level, pos, canDestroy); LivingEntity livingEntity = EntityReference.get(entityReference, level, LivingEntity.class); if (damageTarget && livingEntity != null) { // CraftBukkit @@ -35,7 +43,7 @@ level.playSound( null, livingEntity.getX(), livingEntity.getY(), livingEntity.getZ(), SoundEvents.CONDUIT_ATTACK_TARGET, SoundSource.BLOCKS, 1.0F, 1.0F ); -@@ -224,20 +_,26 @@ +@@ -224,20 +224,26 @@ public class ConduitBlockEntity extends BlockEntity { return selectNewTarget(level, pos); } else { LivingEntity livingEntity = EntityReference.get(destroyTarget, level, LivingEntity.class); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch similarity index 67% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch index ab62b82a0..3c488518c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java b/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java +index 5dd044c13e09423af43330df565bfe6ce88a883c..93f34bbfae6f8f02ff4ea92d6745cd1d288c8dbd 100644 --- a/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java +++ b/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java -@@ -30,6 +_,7 @@ +@@ -30,6 +30,7 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable private static final RandomSource RANDOM = RandomSource.create(); @Nullable private Component name; @@ -8,7 +16,7 @@ public EnchantingTableBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.ENCHANTING_TABLE, pos, state); -@@ -39,12 +_,14 @@ +@@ -39,12 +40,14 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable protected void saveAdditional(ValueOutput output) { super.saveAdditional(output); output.storeNullable("CustomName", ComponentSerialization.CODEC, this.name); @@ -23,7 +31,7 @@ } public static void bookAnimationTick(Level level, BlockPos pos, BlockState state, EnchantingTableBlockEntity enchantingTable) { -@@ -136,4 +_,14 @@ +@@ -136,4 +139,14 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable public void removeComponentsFromTag(ValueOutput output) { output.discard("CustomName"); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch similarity index 88% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch index d9530e11b..264f13f86 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/entity/SignBlockEntity.java b/net/minecraft/world/level/block/entity/SignBlockEntity.java +index be1b138a78d8cb87956d531a801d85e677ca6f4a..2e0b2b55031343e32b4972c0f0017e950d56652d 100644 --- a/net/minecraft/world/level/block/entity/SignBlockEntity.java +++ b/net/minecraft/world/level/block/entity/SignBlockEntity.java -@@ -148,16 +_,32 @@ +@@ -148,16 +148,32 @@ public class SignBlockEntity extends BlockEntity { return this.setText(updater.apply(text), isFrontText); } @@ -35,11 +43,10 @@ ); } } -@@ -306,6 +_,27 @@ - // CraftBukkit - this +@@ -307,6 +323,27 @@ public class SignBlockEntity extends BlockEntity { return new CommandSourceStack(commandSource, Vec3.atCenterOf(pos), Vec2.ZERO, level, 2, string, component, level.getServer(), player); // Paper - Fix commands from signs not firing command events } -+ + + // Purpur start - Signs allow color codes + public ClientboundBlockEntityDataPacket getTranslatedUpdatePacket(boolean filtered, boolean front) { + try (net.minecraft.util.ProblemReporter.ScopedCollector scopedCollector = new net.minecraft.util.ProblemReporter.ScopedCollector(this.problemPath(), LOGGER)) { @@ -60,6 +67,7 @@ + } + } + // Purpur end - Signs allow color codes - ++ @Override public ClientboundBlockEntityDataPacket getUpdatePacket() { + return ClientboundBlockEntityDataPacket.create(this); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch similarity index 65% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch index bc6293606..7c922a709 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/block/piston/PistonStructureResolver.java b/net/minecraft/world/level/block/piston/PistonStructureResolver.java +index ad143a92569f5b420ccaa2089758b2fb3b4ab7c5..5a3660e02bc805e9a35a81b8a61f07b3f20b5ba9 100644 --- a/net/minecraft/world/level/block/piston/PistonStructureResolver.java +++ b/net/minecraft/world/level/block/piston/PistonStructureResolver.java -@@ -81,7 +_,7 @@ +@@ -81,7 +81,7 @@ public class PistonStructureResolver { return true; } else { int i = 1; @@ -9,7 +17,7 @@ return false; } else { while (isSticky(blockState)) { -@@ -95,7 +_,7 @@ +@@ -95,7 +95,7 @@ public class PistonStructureResolver { break; } @@ -18,7 +26,7 @@ return false; } } -@@ -140,7 +_,7 @@ +@@ -140,7 +140,7 @@ public class PistonStructureResolver { return true; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch similarity index 56% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch index accc2318d..9f3989857 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/chunk/storage/EntityStorage.java b/net/minecraft/world/level/chunk/storage/EntityStorage.java +index f1f8575a4b37114ced3cdb1d2ea33a36a2db44fd..2afe96a69c09decbe972332d2d38f67427d880d8 100644 --- a/net/minecraft/world/level/chunk/storage/EntityStorage.java +++ b/net/minecraft/world/level/chunk/storage/EntityStorage.java -@@ -108,6 +_,7 @@ +@@ -108,6 +108,7 @@ public class EntityStorage implements EntityPersistentStorage { } // Paper end - Entity load/save limit per chunk TagValueOutput tagValueOutput = TagValueOutput.createWithContext(scopedCollector.forChild(entity.problemPath()), entity.registryAccess()); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch similarity index 68% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch index 8f5ddb2d7..6bdf03243 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..77db68349aa73d33b86a867099c9395c96d5a02d 100644 --- a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +++ b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -@@ -308,7 +_,7 @@ +@@ -308,7 +308,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise // Paper start private static void printOversizedLog(String msg, Path file, int x, int z) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch similarity index 63% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch index 51e0ad919..849d2689b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/levelgen/DensityFunctions.java b/net/minecraft/world/level/levelgen/DensityFunctions.java +index 04527a5c65ad630f794fed9071d485aedd02257a..77731406cb3dc417aa2fe1cb4352f3d2d7d498aa 100644 --- a/net/minecraft/world/level/levelgen/DensityFunctions.java +++ b/net/minecraft/world/level/levelgen/DensityFunctions.java -@@ -528,7 +_,7 @@ +@@ -528,7 +528,7 @@ public final class DensityFunctions { int i1 = z / 2; int i2 = x % 2; int i3 = z % 2; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch similarity index 85% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch index 5652d79c6..b80a7c82d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/levelgen/PhantomSpawner.java b/net/minecraft/world/level/levelgen/PhantomSpawner.java +index d2e674b046bcf82a239b4706c3b89197ec6749c8..73c038c026b20af3d8719b42470ee006d8ec5896 100644 --- a/net/minecraft/world/level/levelgen/PhantomSpawner.java +++ b/net/minecraft/world/level/levelgen/PhantomSpawner.java -@@ -38,13 +_,13 @@ +@@ -38,13 +38,13 @@ public class PhantomSpawner implements CustomSpawner { int spawnAttemptMaxSeconds = level.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 +25,7 @@ ServerStatsCounter stats = serverPlayer.getStats(); int i = Mth.clamp(stats.getValue(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE); int i1 = 24000; -@@ -56,7 +_,7 @@ +@@ -56,7 +56,7 @@ public class PhantomSpawner implements CustomSpawner { FluidState fluidState = level.getFluidState(blockPos1); if (NaturalSpawner.isValidEmptySpawnBlock(level, blockPos1, blockState, fluidState, EntityType.PHANTOM)) { SpawnGroupData spawnGroupData = null; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/FlowingFluid.java.patch similarity index 62% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/FlowingFluid.java.patch index 78e131bae..9a8b61875 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/FlowingFluid.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/material/FlowingFluid.java b/net/minecraft/world/level/material/FlowingFluid.java +index ace1099a12c762b2e73b71dd3551cf351fedf067..1b06e44a267d2d4af844997ac0c557f30aaf9b15 100644 --- a/net/minecraft/world/level/material/FlowingFluid.java +++ b/net/minecraft/world/level/material/FlowingFluid.java -@@ -232,7 +_,7 @@ +@@ -232,7 +232,7 @@ public abstract class FlowingFluid extends Fluid { } } @@ -9,16 +17,16 @@ BlockState blockState1 = level.getBlockState(mutableBlockPos.setWithOffset(pos, Direction.DOWN)); FluidState fluidState1 = blockState1.getFluidState(); if (blockState1.isSolid() || this.isSourceBlockOfThisType(fluidState1)) { -@@ -319,6 +_,12 @@ - } +@@ -320,6 +320,12 @@ public abstract class FlowingFluid extends Fluid { protected abstract boolean canConvertToSource(ServerLevel level); -+ + + // Purpur start - Implement infinite liquids + protected int getRequiredSources(Level level) { + return 2; + } + // Purpur end - Implement infinite liquids - ++ protected void spreadTo(LevelAccessor level, BlockPos pos, BlockState blockState, Direction direction, FluidState fluidState) { if (blockState.getBlock() instanceof LiquidBlockContainer liquidBlockContainer) { + liquidBlockContainer.placeLiquid(level, pos, blockState, fluidState); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/LavaFluid.java.patch similarity index 57% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/LavaFluid.java.patch index 502b87bdc..bb31a3d7b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/LavaFluid.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/material/LavaFluid.java b/net/minecraft/world/level/material/LavaFluid.java +index 033f252248b671e35135269dd2df6e7ca4585604..43cdc2f8fdfdeb1426e386e0084087779ef62754 100644 --- a/net/minecraft/world/level/material/LavaFluid.java +++ b/net/minecraft/world/level/material/LavaFluid.java -@@ -189,7 +_,7 @@ +@@ -189,7 +189,7 @@ public abstract class LavaFluid extends FlowingFluid { @Override public int getTickDelay(LevelReader level) { @@ -9,17 +17,17 @@ } @Override -@@ -210,6 +_,13 @@ - private void fizz(LevelAccessor level, BlockPos pos) { +@@ -211,6 +211,13 @@ public abstract class LavaFluid extends FlowingFluid { level.levelEvent(1501, pos, 0); } -+ + + // Purpur start - Implement infinite liquids + @Override + protected int getRequiredSources(Level level) { + return level.purpurConfig.lavaInfiniteRequiredSources; + } + // Purpur end - Implement infinite liquids - ++ @Override protected boolean canConvertToSource(ServerLevel level) { + return level.getGameRules().getBoolean(GameRules.RULE_LAVA_SOURCE_CONVERSION); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/WaterFluid.java.patch similarity index 56% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/WaterFluid.java.patch index 3bc14791b..760860c77 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/WaterFluid.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/material/WaterFluid.java b/net/minecraft/world/level/material/WaterFluid.java +index 10e3c644e31650b0e1aad6349a83a763cf744ec8..b248fe1d66940c05d56fc322df61c52ece72e77f 100644 --- a/net/minecraft/world/level/material/WaterFluid.java +++ b/net/minecraft/world/level/material/WaterFluid.java -@@ -78,6 +_,13 @@ +@@ -78,6 +78,13 @@ public abstract class WaterFluid extends FlowingFluid { return level.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch similarity index 70% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch index ef04724ea..cc5ea62e3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +index 9e6b2bbc1f83d32d0332f036be4f1a0e18b826bf..db6baaa698fe93aba3fbd595158b568badd6cb8a 100644 --- a/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -@@ -240,7 +_,7 @@ +@@ -240,7 +240,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { if ((node == null || node.costMalus < 0.0F) && verticalDeltaLimit > 0 && (cachedPathType != PathType.FENCE || this.canWalkOverFences()) @@ -9,7 +17,7 @@ && cachedPathType != PathType.TRAPDOOR && cachedPathType != PathType.POWDER_SNOW) { node = this.tryJumpOn(x, y, z, verticalDeltaLimit, nodeFloorLevel, direction, pathType, mutableBlockPos); -@@ -493,7 +_,7 @@ +@@ -493,7 +493,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { return PathType.TRAPDOOR; } else if (blockState.is(Blocks.POWDER_SNOW)) { return PathType.POWDER_SNOW; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/portal/PortalShape.java.patch similarity index 64% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/portal/PortalShape.java.patch index 925647acc..2037f1181 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/portal/PortalShape.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/portal/PortalShape.java b/net/minecraft/world/level/portal/PortalShape.java +index b19260f442fe272efed8e61d1316bf0d6ff38023..0ecc5a49de322d531c33042858f8420d370f3805 100644 --- a/net/minecraft/world/level/portal/PortalShape.java +++ b/net/minecraft/world/level/portal/PortalShape.java -@@ -28,7 +_,7 @@ +@@ -28,7 +28,7 @@ public class PortalShape { public static final int MAX_WIDTH = 21; private static final int MIN_HEIGHT = 3; public static final int MAX_HEIGHT = 21; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch similarity index 50% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch index 138758dfe..8b3147adb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java +index c8f23011a8942a5be970c606f67142cbd202b97e..7bbeed6c998c91e68376d3f17a510d68e3cd0b27 100644 --- a/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java +++ b/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -@@ -81,6 +_,7 @@ +@@ -81,6 +81,7 @@ public class MapItemSavedData extends SavedData { public final Map decorations = Maps.newLinkedHashMap(); private final Map frameMarkers = Maps.newHashMap(); private int trackedDecorationCount; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch similarity index 64% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch index bc7b09181..493b549da 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java b/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java +index c4f29da30d63deb3f9eabafcf62a946ff148b6b7..f3083702286dfb7932f08e0b811eded7988cbab4 100644 --- a/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java +++ b/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java -@@ -66,6 +_,11 @@ +@@ -66,6 +66,11 @@ public class EnchantedCountIncreaseFunction extends LootItemConditionalFunction Entity entity = context.getOptionalParameter(LootContextParams.ATTACKING_ENTITY); if (entity instanceof LivingEntity livingEntity) { int enchantmentLevel = EnchantmentHelper.getEnchantmentLevel(this.enchantment, livingEntity); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/phys/AABB.java.patch similarity index 54% rename from purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch rename to purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/phys/AABB.java.patch index 1545fd15f..00f46d82d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch +++ b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/phys/AABB.java.patch @@ -1,6 +1,14 @@ +From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 +From: File +Date: Sun, 20 Apr 1997 06:37:42 -0700 +Subject: [PATCH] purpur File Patches + + +diff --git a/net/minecraft/world/phys/AABB.java b/net/minecraft/world/phys/AABB.java +index 84f3073444ae9e11e5d11224d6af6474ced925e2..e53398996bbb278c6e06024d8ca945b364a44c10 100644 --- a/net/minecraft/world/phys/AABB.java +++ b/net/minecraft/world/phys/AABB.java -@@ -476,4 +_,10 @@ +@@ -476,4 +476,10 @@ public class AABB { return new AABB(this.minX, this.minY, this.minZ, this.maxX, this.maxY, this.maxZ); } } From fe7c02ff5a3bc01b4a534d7d7420223cb872f781 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 29 Jun 2025 13:47:51 -0700 Subject: [PATCH 160/289] applied minecraft file patches (only two file patches didn't apply, surprisingly) --- .../main/java/org/bukkit/Material.java.patch | 2 +- .../java/org/bukkit/entity/Player.java.patch | 6 +- purpur-server/build.gradle.kts.patch | 2 +- .../activation/ActivationRange.java.patch | 12 +--- .../net/minecraft/CrashReport.java.patch | 14 +---- .../commands/CommandSourceStack.java.patch | 18 ++---- .../minecraft/commands/Commands.java.patch | 16 ++---- .../selector/EntitySelector.java.patch | 12 +--- .../net/minecraft/core/BlockPos.java.patch | 10 +--- .../dispenser/DispenseItemBehavior.java.patch | 10 +--- .../EquipmentDispenseItemBehavior.java.patch | 10 +--- .../framework/GameTestHelper.java.patch | 11 ++++ .../gametest/framework/TestCommand.java.patch | 10 +--- .../minecraft/network/Connection.java.patch | 10 +--- .../chat/SignedMessageChain.java.patch | 10 +--- .../net/minecraft/server/Main.java.patch | 10 +--- .../server/MinecraftServer.java.patch | 30 ++++------ .../server/PlayerAdvancements.java.patch | 12 +--- .../server/commands/EnchantCommand.java.patch | 12 +--- .../commands/GameModeCommand.java.patch | 10 +--- .../server/commands/GiveCommand.java.patch | 10 +--- .../dedicated/DedicatedServer.java.patch | 16 ++---- .../DedicatedServerProperties.java.patch | 10 +--- .../server/gui/MinecraftServerGui.java.patch | 31 ++++------ .../server/gui/StatsComponent.java.patch | 10 +--- .../server/level/ServerLevel.java.patch | 37 +++++------- .../server/level/ServerPlayer.java.patch | 44 ++++++--------- .../level/ServerPlayerGameMode.java.patch | 16 ++---- .../server/level/WorldGenRegion.java.patch | 10 +--- .../ServerCommonPacketListenerImpl.java.patch | 39 +++---------- .../ServerGamePacketListenerImpl.java.patch | 53 ++++++++++-------- .../ServerLoginPacketListenerImpl.java.patch | 10 +--- .../ServerStatusPacketListenerImpl.java.patch | 10 +--- .../server/players/PlayerList.java.patch | 34 +++++------ .../server/players/SleepStatus.java.patch | 12 +--- .../stats/ServerRecipeBook.java.patch | 10 +--- .../net/minecraft/util/StringUtil.java.patch | 10 +--- .../world/damagesource/CombatRules.java.patch | 12 +--- .../damagesource/CombatTracker.java.patch | 12 +--- .../damagesource/DamageSource.java.patch | 21 ++----- .../damagesource/DamageSources.java.patch | 20 ++----- .../world/effect/HungerMobEffect.java.patch | 10 +--- .../world/effect/PoisonMobEffect.java.patch | 10 +--- .../effect/RegenerationMobEffect.java.patch | 10 +--- .../effect/SaturationMobEffect.java.patch | 10 +--- .../world/effect/WitherMobEffect.java.patch | 10 +--- .../minecraft/world/entity/Entity.java.patch | 53 ++++++++++-------- .../world/entity/EntitySelector.java.patch | 10 +--- .../world/entity/EntityType.java.patch | 23 ++++---- .../world/entity/ExperienceOrb.java.patch | 12 +--- .../world/entity/GlowSquid.java.patch | 10 +--- .../world/entity/LivingEntity.java.patch | 56 ++++++++++--------- .../net/minecraft/world/entity/Mob.java.patch | 30 ++++------ .../ai/attributes/RangedAttribute.java.patch | 10 ++++ .../entity/ai/behavior/AcquirePoi.java.patch | 10 +--- .../ai/behavior/InteractWithDoor.java.patch | 14 +---- .../ai/behavior/ShowTradesToPlayer.java.patch | 10 +--- .../ai/goal/LlamaFollowCaravanGoal.java.patch | 12 +--- .../ai/goal/RangedBowAttackGoal.java.patch | 10 +--- .../ai/goal/RunAroundLikeCrazyGoal.java.patch | 10 +--- .../world/entity/ai/goal/SwellGoal.java.patch | 10 +--- .../ai/sensing/NearestBedSensor.java.patch | 10 +--- .../targeting/TargetingConditions.java.patch | 10 +--- .../world/entity/ambient/Bat.java.patch | 12 +--- .../entity/animal/AbstractCow.java.patch | 14 +---- .../world/entity/animal/Animal.java.patch | 12 +--- .../world/entity/animal/Bee.java.patch | 22 +++----- .../world/entity/animal/Cat.java.patch | 12 +--- .../world/entity/animal/Dolphin.java.patch | 16 ++---- .../world/entity/animal/Fox.java.patch | 20 ++----- .../world/entity/animal/IronGolem.java.patch | 16 ++---- .../entity/animal/MushroomCow.java.patch | 10 +--- .../world/entity/animal/Ocelot.java.patch | 10 +--- .../world/entity/animal/Parrot.java.patch | 18 ++---- .../world/entity/animal/Pig.java.patch | 10 +--- .../world/entity/animal/PolarBear.java.patch | 14 +---- .../world/entity/animal/Rabbit.java.patch | 10 +--- .../world/entity/animal/SnowGolem.java.patch | 14 +---- .../world/entity/animal/Squid.java.patch | 14 +---- .../entity/animal/WaterAnimal.java.patch | 10 +--- .../world/entity/animal/goat/Goat.java.patch | 10 +--- .../entity/animal/horse/Llama.java.patch | 18 ++---- .../world/entity/animal/wolf/Wolf.java.patch | 24 +++----- .../boss/enderdragon/EndCrystal.java.patch | 14 +---- .../boss/enderdragon/EnderDragon.java.patch | 12 +--- .../entity/boss/wither/WitherBoss.java.patch | 22 +++----- .../entity/decoration/ArmorStand.java.patch | 14 +---- .../world/entity/item/ItemEntity.java.patch | 14 +---- .../world/entity/item/PrimedTnt.java.patch | 10 +--- .../monster/AbstractSkeleton.java.patch | 12 +--- .../world/entity/monster/Creeper.java.patch | 16 ++---- .../world/entity/monster/Drowned.java.patch | 10 +--- .../world/entity/monster/EnderMan.java.patch | 22 +++----- .../world/entity/monster/Endermite.java.patch | 12 +--- .../world/entity/monster/Monster.java.patch | 10 +--- .../world/entity/monster/Phantom.java.patch | 10 +--- .../world/entity/monster/Ravager.java.patch | 12 +--- .../world/entity/monster/Shulker.java.patch | 23 ++++---- .../world/entity/monster/Skeleton.java.patch | 10 +--- .../world/entity/monster/Strider.java.patch | 10 +--- .../entity/monster/Vindicator.java.patch | 10 +--- .../world/entity/monster/Zombie.java.patch | 12 +--- .../entity/monster/ZombieVillager.java.patch | 10 +--- .../entity/monster/ZombifiedPiglin.java.patch | 18 ++---- .../entity/monster/piglin/PiglinAi.java.patch | 17 ++---- .../world/entity/npc/CatSpawner.java.patch | 14 +---- .../world/entity/npc/Villager.java.patch | 24 +++----- .../entity/npc/WanderingTrader.java.patch | 14 +---- .../npc/WanderingTraderSpawner.java.patch | 10 +--- .../world/entity/player/Player.java.patch | 37 ++++++------ .../projectile/AbstractArrow.java.patch | 20 ++----- .../entity/projectile/Snowball.java.patch | 15 +---- .../projectile/ThrownEnderpearl.java.patch | 12 +--- .../projectile/ThrownTrident.java.patch | 10 +--- .../entity/projectile/WitherSkull.java.patch | 18 ++---- .../world/entity/raid/Raids.java.patch | 14 +---- .../entity/vehicle/AbstractBoat.java.patch | 10 +--- .../vehicle/NewMinecartBehavior.java.patch | 10 +--- .../vehicle/OldMinecartBehavior.java.patch | 10 +--- .../minecraft/world/food/FoodData.java.patch | 12 +--- .../world/food/FoodProperties.java.patch | 10 +--- .../AbstractContainerMenu.java.patch | 10 ++++ .../inventory/AbstractFurnaceMenu.java.patch | 10 +--- .../world/inventory/AnvilMenu.java.patch | 26 +++------ .../world/inventory/ArmorSlot.java.patch | 10 +--- .../inventory/EnchantmentMenu.java.patch | 14 +---- .../world/inventory/GrindstoneMenu.java.patch | 18 ++---- .../inventory/ItemCombinerMenu.java.patch | 12 ++++ .../minecraft/world/item/AxeItem.java.patch | 14 +---- .../minecraft/world/item/BlockItem.java.patch | 14 +---- .../minecraft/world/item/BowItem.java.patch | 14 +---- .../world/item/BucketItem.java.patch | 12 +--- .../world/item/CrossbowItem.java.patch | 10 +--- .../minecraft/world/item/DyeColor.java.patch | 10 +--- .../minecraft/world/item/EggItem.java.patch | 10 +--- .../world/item/EndCrystalItem.java.patch | 10 +--- .../world/item/EnderpearlItem.java.patch | 12 +--- .../minecraft/world/item/HoeItem.java.patch | 10 +--- .../minecraft/world/item/ItemStack.java.patch | 22 +++----- .../net/minecraft/world/item/Items.java.patch | 12 +--- .../minecraft/world/item/MapItem.java.patch | 10 +--- .../world/item/NameTagItem.java.patch | 10 +--- .../item/ProjectileWeaponItem.java.patch | 11 ++++ .../world/item/ShovelItem.java.patch | 10 +--- .../world/item/SnowballItem.java.patch | 10 +--- .../world/item/SpawnEggItem.java.patch | 10 +--- .../world/item/ThrowablePotionItem.java.patch | 10 +--- .../world/item/TridentItem.java.patch | 12 +--- ...arAllStatusEffectsConsumeEffect.java.patch | 10 +--- .../world/item/crafting/Ingredient.java.patch | 12 +--- .../enchantment/EnchantmentHelper.java.patch | 10 +--- .../enchantment/ItemEnchantments.java.patch | 14 +---- .../item/trading/MerchantOffer.java.patch | 10 +--- .../world/level/BaseSpawner.java.patch | 10 +--- .../world/level/EntityGetter.java.patch | 10 +--- .../minecraft/world/level/Level.java.patch | 14 +---- .../world/level/NaturalSpawner.java.patch | 10 +--- .../world/level/ServerExplosion.java.patch | 10 +--- .../world/level/block/AnvilBlock.java.patch | 10 +--- .../world/level/block/AzaleaBlock.java.patch | 10 +--- .../block/BaseCoralPlantTypeBlock.java.patch | 10 ++++ .../world/level/block/BedBlock.java.patch | 14 +---- .../level/block/BigDripleafBlock.java.patch | 11 ++++ .../world/level/block/Block.java.patch | 23 +++----- .../world/level/block/Blocks.java.patch | 12 +--- .../level/block/BubbleColumnBlock.java.patch | 10 +--- .../world/level/block/CactusBlock.java.patch | 14 +---- .../world/level/block/CakeBlock.java.patch | 10 +--- .../level/block/CampfireBlock.java.patch | 10 +--- .../level/block/CarvedPumpkinBlock.java.patch | 12 +--- .../level/block/CauldronBlock.java.patch | 10 +--- .../level/block/CaveVinesBlock.java.patch | 10 +--- .../block/ChangeOverTimeBlock.java.patch | 10 +--- .../world/level/block/ChestBlock.java.patch | 10 +--- .../level/block/ComposterBlock.java.patch | 20 ++----- .../world/level/block/CoralBlock.java.patch | 10 +--- .../world/level/block/CropBlock.java.patch | 12 +--- .../world/level/block/DoorBlock.java.patch | 12 +--- .../level/block/DragonEggBlock.java.patch | 10 ++++ .../block/EnchantingTableBlock.java.patch | 10 +--- .../world/level/block/FarmBlock.java.patch | 14 +---- .../block/GrowingPlantHeadBlock.java.patch | 18 ++---- .../world/level/block/HayBlock.java.patch | 10 ++++ .../world/level/block/IceBlock.java.patch | 12 +--- .../world/level/block/KelpBlock.java.patch | 14 +++++ .../world/level/block/LiquidBlock.java.patch | 14 +---- .../world/level/block/MagmaBlock.java.patch | 10 +--- .../level/block/NetherPortalBlock.java.patch | 12 +--- .../level/block/NetherWartBlock.java.patch | 12 +--- .../world/level/block/NoteBlock.java.patch | 10 +--- .../level/block/ObserverBlock.java.patch | 10 +--- .../block/PointedDripstoneBlock.java.patch | 10 +--- .../level/block/PoweredRailBlock.java.patch | 10 +--- .../level/block/RespawnAnchorBlock.java.patch | 10 +--- .../level/block/SculkShriekerBlock.java.patch | 10 +--- .../world/level/block/SlabBlock.java.patch | 10 +--- .../level/block/SnowLayerBlock.java.patch | 10 +--- .../world/level/block/SpawnerBlock.java.patch | 14 +---- .../world/level/block/SpongeBlock.java.patch | 14 +---- .../level/block/StonecutterBlock.java.patch | 10 +--- .../level/block/SugarCaneBlock.java.patch | 12 +--- .../level/block/TurtleEggBlock.java.patch | 12 +--- .../level/block/TwistingVinesBlock.java.patch | 10 +--- .../level/block/VegetationBlock.java.patch | 10 +--- .../level/block/WeepingVinesBlock.java.patch | 10 +--- .../level/block/WitherSkullBlock.java.patch | 10 +--- .../AbstractFurnaceBlockEntity.java.patch | 12 +--- .../block/entity/BeaconBlockEntity.java.patch | 16 ++---- .../entity/BeehiveBlockEntity.java.patch | 14 +---- .../level/block/entity/BlockEntity.java.patch | 14 +---- .../entity/ConduitBlockEntity.java.patch | 16 ++---- .../EnchantingTableBlockEntity.java.patch | 14 +---- .../level/block/entity/FuelValues.java.patch | 11 ++++ .../block/entity/SignBlockEntity.java.patch | 18 ++---- .../piston/PistonStructureResolver.java.patch | 14 +---- .../block/state/BlockBehaviour.java.patch | 11 ++++ .../chunk/storage/EntityStorage.java.patch | 10 +--- .../storage/RegionFileStorage.java.patch | 10 +--- .../levelgen/DensityFunctions.java.patch | 10 +--- .../level/levelgen/PhantomSpawner.java.patch | 12 +--- .../level/material/FlowingFluid.java.patch | 18 ++---- .../world/level/material/LavaFluid.java.patch | 18 ++---- .../level/material/WaterFluid.java.patch | 10 +--- .../pathfinder/WalkNodeEvaluator.java.patch | 12 +--- .../world/level/portal/PortalShape.java.patch | 10 +--- .../maps/MapItemSavedData.java.patch | 10 +--- .../EnchantedCountIncreaseFunction.java.patch | 10 +--- .../net/minecraft/world/phys/AABB.java.patch | 10 +--- .../framework/GameTestHelper.java.patch | 19 ------- .../ai/attributes/RangedAttribute.java.patch | 18 ------ .../AbstractContainerMenu.java.patch | 18 ------ .../inventory/ItemCombinerMenu.java.patch | 20 ------- .../item/ProjectileWeaponItem.java.patch | 19 ------- .../block/BaseCoralPlantTypeBlock.java.patch | 18 ------ .../level/block/BigDripleafBlock.java.patch | 19 ------- .../level/block/DragonEggBlock.java.patch | 18 ------ .../world/level/block/HayBlock.java.patch | 18 ------ .../world/level/block/KelpBlock.java.patch | 22 -------- .../features/0002-Ridables.patch | 6 +- ...0004-Add-EntityTeleportHinderedEvent.patch | 6 +- .../craftbukkit/entity/CraftPlayer.java.patch | 10 ++-- 241 files changed, 805 insertions(+), 2517 deletions(-) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/io/papermc/paper/entity/activation/ActivationRange.java.patch (67%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/CrashReport.java.patch (67%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/commands/CommandSourceStack.java.patch (74%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/commands/Commands.java.patch (83%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/commands/arguments/selector/EntitySelector.java.patch (85%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/core/BlockPos.java.patch (53%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch (77%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch (62%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/gametest/framework/TestCommand.java.patch (54%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/network/Connection.java.patch (71%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/network/chat/SignedMessageChain.java.patch (68%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/Main.java.patch (72%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/MinecraftServer.java.patch (83%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/PlayerAdvancements.java.patch (73%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/commands/EnchantCommand.java.patch (75%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/commands/GameModeCommand.java.patch (69%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/commands/GiveCommand.java.patch (59%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/dedicated/DedicatedServer.java.patch (81%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch (56%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/gui/MinecraftServerGui.java.patch (84%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/gui/StatsComponent.java.patch (63%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/level/ServerLevel.java.patch (88%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/level/ServerPlayer.java.patch (87%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/level/ServerPlayerGameMode.java.patch (83%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/level/WorldGenRegion.java.patch (50%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch (69%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch (90%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch (70%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch (59%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/players/PlayerList.java.patch (63%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/server/players/SleepStatus.java.patch (73%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/stats/ServerRecipeBook.java.patch (60%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/util/StringUtil.java.patch (52%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/damagesource/CombatRules.java.patch (69%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/damagesource/CombatTracker.java.patch (79%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/damagesource/DamageSource.java.patch (85%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/damagesource/DamageSources.java.patch (73%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/effect/HungerMobEffect.java.patch (62%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/effect/PoisonMobEffect.java.patch (63%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/effect/RegenerationMobEffect.java.patch (57%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/effect/SaturationMobEffect.java.patch (67%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/effect/WitherMobEffect.java.patch (51%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/Entity.java.patch (82%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/EntitySelector.java.patch (62%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/EntityType.java.patch (72%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ExperienceOrb.java.patch (77%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/GlowSquid.java.patch (50%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/LivingEntity.java.patch (85%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/Mob.java.patch (71%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch (73%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch (80%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch (52%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch (63%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch (53%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch (71%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch (66%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch (68%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch (59%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/ambient/Bat.java.patch (67%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/AbstractCow.java.patch (89%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Animal.java.patch (82%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Bee.java.patch (79%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Cat.java.patch (70%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Dolphin.java.patch (81%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Fox.java.patch (75%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/IronGolem.java.patch (75%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/MushroomCow.java.patch (67%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Ocelot.java.patch (56%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Parrot.java.patch (74%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Pig.java.patch (69%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/PolarBear.java.patch (78%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Rabbit.java.patch (73%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/SnowGolem.java.patch (81%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/Squid.java.patch (80%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/WaterAnimal.java.patch (64%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/goat/Goat.java.patch (57%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/horse/Llama.java.patch (67%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/animal/wolf/Wolf.java.patch (89%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch (84%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch (58%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch (76%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/decoration/ArmorStand.java.patch (76%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/item/ItemEntity.java.patch (81%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/item/PrimedTnt.java.patch (78%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch (75%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Creeper.java.patch (86%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Drowned.java.patch (83%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/EnderMan.java.patch (81%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Endermite.java.patch (74%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Monster.java.patch (68%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Phantom.java.patch (62%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Ravager.java.patch (73%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Shulker.java.patch (83%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Skeleton.java.patch (87%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Strider.java.patch (68%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Vindicator.java.patch (58%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/Zombie.java.patch (82%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/ZombieVillager.java.patch (68%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch (66%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch (72%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/npc/CatSpawner.java.patch (77%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/npc/Villager.java.patch (85%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/npc/WanderingTrader.java.patch (69%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch (72%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/player/Player.java.patch (85%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/projectile/AbstractArrow.java.patch (69%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/projectile/Snowball.java.patch (85%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch (76%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/projectile/ThrownTrident.java.patch (63%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/projectile/WitherSkull.java.patch (64%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/raid/Raids.java.patch (80%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch (51%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch (62%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch (65%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/food/FoodData.java.patch (75%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/food/FoodProperties.java.patch (66%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch (64%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/inventory/AnvilMenu.java.patch (92%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/inventory/ArmorSlot.java.patch (62%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/inventory/EnchantmentMenu.java.patch (79%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/inventory/GrindstoneMenu.java.patch (89%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/AxeItem.java.patch (90%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/BlockItem.java.patch (79%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/BowItem.java.patch (78%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/BucketItem.java.patch (69%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/CrossbowItem.java.patch (63%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/DyeColor.java.patch (55%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/EggItem.java.patch (72%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/EndCrystalItem.java.patch (60%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/EnderpearlItem.java.patch (78%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/HoeItem.java.patch (82%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/ItemStack.java.patch (78%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/Items.java.patch (78%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/MapItem.java.patch (54%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/NameTagItem.java.patch (64%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/ShovelItem.java.patch (74%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/SnowballItem.java.patch (72%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/SpawnEggItem.java.patch (84%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/ThrowablePotionItem.java.patch (71%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/TridentItem.java.patch (75%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch (62%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/crafting/Ingredient.java.patch (60%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch (84%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch (78%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/item/trading/MerchantOffer.java.patch (59%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/BaseSpawner.java.patch (53%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/EntityGetter.java.patch (58%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/Level.java.patch (85%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/NaturalSpawner.java.patch (65%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/ServerExplosion.java.patch (80%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/AnvilBlock.java.patch (89%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/AzaleaBlock.java.patch (70%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/BedBlock.java.patch (73%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/Block.java.patch (85%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/Blocks.java.patch (59%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/BubbleColumnBlock.java.patch (67%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/CactusBlock.java.patch (80%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/CakeBlock.java.patch (59%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/CampfireBlock.java.patch (52%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch (78%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/CauldronBlock.java.patch (60%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/CaveVinesBlock.java.patch (52%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch (52%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/ChestBlock.java.patch (50%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/ComposterBlock.java.patch (81%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/CoralBlock.java.patch (54%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/CropBlock.java.patch (78%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/DoorBlock.java.patch (74%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/EnchantingTableBlock.java.patch (68%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/FarmBlock.java.patch (83%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch (77%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/IceBlock.java.patch (65%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/LiquidBlock.java.patch (71%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/MagmaBlock.java.patch (57%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/NetherPortalBlock.java.patch (66%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/NetherWartBlock.java.patch (81%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/NoteBlock.java.patch (59%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/ObserverBlock.java.patch (54%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch (73%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/PoweredRailBlock.java.patch (51%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch (62%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/SculkShriekerBlock.java.patch (57%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/SlabBlock.java.patch (73%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/SnowLayerBlock.java.patch (56%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/SpawnerBlock.java.patch (90%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/SpongeBlock.java.patch (80%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/StonecutterBlock.java.patch (63%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/SugarCaneBlock.java.patch (78%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/TurtleEggBlock.java.patch (82%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/TwistingVinesBlock.java.patch (50%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/VegetationBlock.java.patch (78%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/WeepingVinesBlock.java.patch (50%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/WitherSkullBlock.java.patch (59%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch (71%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch (73%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch (76%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/entity/BlockEntity.java.patch (74%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch (85%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch (67%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/FuelValues.java.patch rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch (88%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch (65%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/state/BlockBehaviour.java.patch rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch (56%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch (68%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/levelgen/DensityFunctions.java.patch (63%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch (85%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/material/FlowingFluid.java.patch (62%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/material/LavaFluid.java.patch (57%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/material/WaterFluid.java.patch (56%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch (70%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/portal/PortalShape.java.patch (64%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch (50%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch (64%) rename purpur-server/minecraft-patches/{unapplied-sources => sources}/net/minecraft/world/phys/AABB.java.patch (54%) delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/GameTestHelper.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DragonEggBlock.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/HayBlock.java.patch delete mode 100644 purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/KelpBlock.java.patch diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch index b215cf7e2..790b50108 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -3636,4 +_,40 @@ +@@ -3637,4 +_,40 @@ return this.asItemType().getDefaultDataTypes(); } // Paper end - data component API diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch index 9b55c4223..d2b5497b8 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch @@ -1,9 +1,9 @@ --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3925,4 +_,123 @@ - * @param score New death screen score of player +@@ -3934,4 +_,123 @@ */ - void setDeathScreenScore(int score); + @ApiStatus.Experimental + PlayerGameConnection getConnection(); + + // Purpur start + /** diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index e714e5418..310153de9 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -25,7 +25,7 @@ + // Purpur end - Rebrand + spigot { - enabled = true + enabled = false buildDataRef = "281ac0de7a76d808753ede97d11b034bc801b63d" @@ -107,7 +_,21 @@ } diff --git a/purpur-server/minecraft-patches/unapplied-sources/io/papermc/paper/entity/activation/ActivationRange.java.patch b/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch similarity index 67% rename from purpur-server/minecraft-patches/unapplied-sources/io/papermc/paper/entity/activation/ActivationRange.java.patch rename to purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch index b54f0f43d..e0eadeef9 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/io/papermc/paper/entity/activation/ActivationRange.java.patch +++ b/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/io/papermc/paper/entity/activation/ActivationRange.java b/io/papermc/paper/entity/activation/ActivationRange.java -index ae2bb9a73106febfe5f0d090abd4252bbb5fd27e..ca21597263cb430e2a5ae07e8cecfb0d53a270d2 100644 --- a/io/papermc/paper/entity/activation/ActivationRange.java +++ b/io/papermc/paper/entity/activation/ActivationRange.java -@@ -147,6 +147,8 @@ public final class ActivationRange { +@@ -147,6 +_,8 @@ continue; } @@ -17,7 +9,7 @@ index ae2bb9a73106febfe5f0d090abd4252bbb5fd27e..ca21597263cb430e2a5ae07e8cecfb0d final int worldHeight = world.getHeight(); ActivationRange.maxBB = player.getBoundingBox().inflate(maxRange, worldHeight, maxRange); ActivationType.MISC.boundingBox = player.getBoundingBox().inflate(miscActivationRange, worldHeight, miscActivationRange); -@@ -288,6 +290,7 @@ public final class ActivationRange { +@@ -288,6 +_,7 @@ * @return */ public static boolean checkIfActive(final Entity entity) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/CrashReport.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch similarity index 67% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/CrashReport.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch index 4304eaae7..52cafd0d1 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/CrashReport.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/CrashReport.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/CrashReport.java b/net/minecraft/CrashReport.java -index 3e0e88afcf010d9a3d46e48bca5cbdf98fe97544..394443d00e661715439be1e56dddc129947699a4 100644 --- a/net/minecraft/CrashReport.java +++ b/net/minecraft/CrashReport.java -@@ -30,6 +30,7 @@ public class CrashReport { +@@ -30,6 +_,7 @@ private boolean trackingStackTrace = true; private StackTraceElement[] uncategorizedStackTrace = new StackTraceElement[0]; private final SystemReport systemReport = new SystemReport(); @@ -16,7 +8,7 @@ index 3e0e88afcf010d9a3d46e48bca5cbdf98fe97544..394443d00e661715439be1e56dddc129 public CrashReport(String title, Throwable exception) { io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(exception); // Paper -@@ -130,7 +131,7 @@ public class CrashReport { +@@ -130,7 +_,7 @@ } public String getFriendlyReport(ReportType type) { @@ -25,7 +17,7 @@ index 3e0e88afcf010d9a3d46e48bca5cbdf98fe97544..394443d00e661715439be1e56dddc129 } @Nullable -@@ -161,7 +162,7 @@ public class CrashReport { +@@ -161,7 +_,7 @@ } public boolean saveToFile(Path path, ReportType type) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/CommandSourceStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch similarity index 74% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/CommandSourceStack.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch index 545ded085..007fa82c9 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/CommandSourceStack.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/commands/CommandSourceStack.java b/net/minecraft/commands/CommandSourceStack.java -index 3acfb2a78845dd8081dc3c01d653034232c76e60..51caf352e77df49fc04bf84f1fab29b6f4f4fc14 100644 --- a/net/minecraft/commands/CommandSourceStack.java +++ b/net/minecraft/commands/CommandSourceStack.java -@@ -447,6 +447,19 @@ public class CommandSourceStack implements ExecutionCommandSource io.papermc.paper.adventure.PaperAdventure.asVanilla(message), broadcastToOps); + } + // Purpur end - Purpur config files -+ + public void sendSuccess(Supplier messageSupplier, boolean allowLogging) { boolean flag = this.source.acceptsSuccess() && !this.silent; - boolean flag1 = allowLogging && this.source.shouldInformAdmins() && !this.silent; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/Commands.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch similarity index 83% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/Commands.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch index 8734631f9..8824ef4bc 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/Commands.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/Commands.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java -index ec1cced129ef42be65d7b2b622638bfae8bd895e..c638d30ba12bde2ae9d55b1c579129d40bcc8b1e 100644 --- a/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java -@@ -252,7 +252,7 @@ public class Commands { +@@ -252,7 +_,7 @@ JfrCommand.register(this.dispatcher); } @@ -17,7 +9,7 @@ index ec1cced129ef42be65d7b2b622638bfae8bd895e..c638d30ba12bde2ae9d55b1c579129d4 RaidCommand.register(this.dispatcher, context); DebugPathCommand.register(this.dispatcher); DebugMobSpawningCommand.register(this.dispatcher); -@@ -280,6 +280,14 @@ public class Commands { +@@ -280,6 +_,14 @@ StopCommand.register(this.dispatcher); TransferCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); @@ -32,7 +24,7 @@ index ec1cced129ef42be65d7b2b622638bfae8bd895e..c638d30ba12bde2ae9d55b1c579129d4 } if (selection.includeIntegrated) { -@@ -504,6 +512,7 @@ public class Commands { +@@ -504,6 +_,7 @@ private void runSync(ServerPlayer player, java.util.Collection bukkit, RootCommandNode rootCommandNode) { // Paper end - Perf: Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootCommandNode, true).callEvent(); // Paper - Brigadier API @@ -40,7 +32,7 @@ index ec1cced129ef42be65d7b2b622638bfae8bd895e..c638d30ba12bde2ae9d55b1c579129d4 org.bukkit.event.player.PlayerCommandSendEvent event = new org.bukkit.event.player.PlayerCommandSendEvent(player.getBukkitEntity(), new java.util.LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -514,6 +523,8 @@ public class Commands { +@@ -514,6 +_,8 @@ } } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch similarity index 85% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch index 37f7c2689..c89e997d6 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/arguments/selector/EntitySelector.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/commands/arguments/selector/EntitySelector.java b/net/minecraft/commands/arguments/selector/EntitySelector.java -index 514f8fbdeb776087608665c35de95294aadf5cf0..b305ba9bab617bf4e52d0e6ddf160bacc5751a94 100644 --- a/net/minecraft/commands/arguments/selector/EntitySelector.java +++ b/net/minecraft/commands/arguments/selector/EntitySelector.java -@@ -192,26 +192,27 @@ public class EntitySelector { +@@ -192,26 +_,27 @@ this.checkPermissions(source); if (this.playerName != null) { ServerPlayer playerByName = source.getServer().getPlayerList().getPlayerByName(this.playerName); @@ -40,7 +32,7 @@ index 514f8fbdeb776087608665c35de95294aadf5cf0..b305ba9bab617bf4e52d0e6ddf160bac players.add(serverPlayer1); if (players.size() >= resultLimit) { return players; -@@ -270,4 +271,10 @@ public class EntitySelector { +@@ -270,4 +_,10 @@ public static Component joinNames(List names) { return ComponentUtils.formatList(names, Entity::getDisplayName); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/BlockPos.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch similarity index 53% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/BlockPos.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch index 69749240b..8b669b1d6 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/BlockPos.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/core/BlockPos.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/core/BlockPos.java b/net/minecraft/core/BlockPos.java -index a81694a22e94cca6f7110f7d5b205d1303f4e071..6518d3fff6daf331b24a7bf5b39fa1920b73711d 100644 --- a/net/minecraft/core/BlockPos.java +++ b/net/minecraft/core/BlockPos.java -@@ -63,6 +63,12 @@ public class BlockPos extends Vec3i { +@@ -63,6 +_,12 @@ public static final int MAX_HORIZONTAL_COORDINATE = 33554431; // Paper end - Optimize Bit Operations by inlining diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch similarity index 77% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch index f90655297..15ad30cf2 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/core/dispenser/DispenseItemBehavior.java b/net/minecraft/core/dispenser/DispenseItemBehavior.java -index ca02c4c71a0a5a1a0ae8bbb40f0b1b7eac64e6fd..582e012222123e5001c34153f2ee1ab1d08935fd 100644 --- a/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/net/minecraft/core/dispenser/DispenseItemBehavior.java -@@ -735,5 +735,22 @@ public interface DispenseItemBehavior { +@@ -735,5 +_,22 @@ DispenserBlock.registerBehavior(Items.TNT_MINECART, new MinecartDispenseItemBehavior(EntityType.TNT_MINECART)); DispenserBlock.registerBehavior(Items.HOPPER_MINECART, new MinecartDispenseItemBehavior(EntityType.HOPPER_MINECART)); DispenserBlock.registerBehavior(Items.COMMAND_BLOCK_MINECART, new MinecartDispenseItemBehavior(EntityType.COMMAND_BLOCK_MINECART)); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch similarity index 62% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch index 8eda4ddcf..9a2c1e083 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java b/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java -index e2d169b45f1dba6559ca337b07a110f79d3db504..727d04a442053f6d0c4df3e744554e2866fa38cd 100644 --- a/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java +++ b/net/minecraft/core/dispenser/EquipmentDispenseItemBehavior.java -@@ -32,7 +32,7 @@ public class EquipmentDispenseItemBehavior extends DefaultDispenseItemBehavior { +@@ -32,7 +_,7 @@ return false; } else { LivingEntity livingEntity = entitiesOfClass.getFirst(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch new file mode 100644 index 000000000..870429942 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/GameTestHelper.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/gametest/framework/GameTestHelper.java ++++ b/net/minecraft/gametest/framework/GameTestHelper.java +@@ -292,6 +_,8 @@ + return gameType; + } + ++ public void setAfk(final boolean afk) {} // Purpur - AFK API ++ + @Override + public boolean isClientAuthoritative() { + return false; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/TestCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/TestCommand.java.patch similarity index 54% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/TestCommand.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/TestCommand.java.patch index 90b63f842..8002c2998 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/TestCommand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/TestCommand.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/gametest/framework/TestCommand.java b/net/minecraft/gametest/framework/TestCommand.java -index 17f33a309ead525975a3090514a6367260f0af09..f4360d9472ba344f2e7afd6d798d313d5423fcb5 100644 --- a/net/minecraft/gametest/framework/TestCommand.java +++ b/net/minecraft/gametest/framework/TestCommand.java -@@ -449,7 +449,7 @@ public class TestCommand { +@@ -449,7 +_,7 @@ ) ) ); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/Connection.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch similarity index 71% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/Connection.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch index 2d523d91e..43b6f15a0 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/Connection.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/network/Connection.java b/net/minecraft/network/Connection.java -index 34524dc5a503bebcec99ada0d9560d6f4df48cdf..1014ab2aeb5e496124c99c938538e88d75561cd5 100644 --- a/net/minecraft/network/Connection.java +++ b/net/minecraft/network/Connection.java -@@ -578,11 +578,20 @@ public class Connection extends SimpleChannelInboundHandler> { +@@ -579,11 +_,20 @@ 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/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/chat/SignedMessageChain.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch similarity index 68% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/chat/SignedMessageChain.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch index 3bffec3df..60c29bda0 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/network/chat/SignedMessageChain.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/network/chat/SignedMessageChain.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/network/chat/SignedMessageChain.java b/net/minecraft/network/chat/SignedMessageChain.java -index f6eed34b2fd72ab74cc9dc4b99ca184d512c0a66..a3e211edd348c0936757de33a74b9456248b3bd2 100644 --- a/net/minecraft/network/chat/SignedMessageChain.java +++ b/net/minecraft/network/chat/SignedMessageChain.java -@@ -45,7 +45,7 @@ public class SignedMessageChain { +@@ -45,7 +_,7 @@ SignedMessageLink signedMessageLink = SignedMessageChain.this.nextLink; if (signedMessageLink == null) { throw new SignedMessageChain.DecodeException(SignedMessageChain.DecodeException.CHAIN_BROKEN); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/Main.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch similarity index 72% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/Main.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch index a043f3d4f..0153677cf 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/Main.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/Main.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/Main.java b/net/minecraft/server/Main.java -index fd3553bdc1c3cdbf6aa3dc00e0a4987f8eaa4fb8..bc3209d3cbe971af74b7856caa6300b59b0bb6bc 100644 --- a/net/minecraft/server/Main.java +++ b/net/minecraft/server/Main.java -@@ -109,6 +109,12 @@ public class Main { +@@ -109,6 +_,12 @@ JvmProfiler.INSTANCE.start(Environment.SERVER); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/MinecraftServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch similarity index 83% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/MinecraftServer.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch index 87f8fcc7c..6cfd1baa6 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/MinecraftServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 52fa5112cd90ba766c94512a02401dd3aee82cc9..ef5c6a760eb6e72beab186a315bd02e804c9ae53 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -284,6 +284,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop processQueue = new java.util.concurrent.ConcurrentLinkedQueue(); public int autosavePeriod; // Paper - don't store the vanilla dispatcher -@@ -294,7 +295,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop pluginsBlockingSleep = new java.util.HashSet<>(); // Paper - API to allow/disallow tick sleeping public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation @@ -34,7 +26,7 @@ index 52fa5112cd90ba766c94512a02401dd3aee82cc9..ef5c6a760eb6e72beab186a315bd02e8 public static S spin(Function threadFunction) { ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system -@@ -996,6 +999,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/PlayerAdvancements.java b/net/minecraft/server/PlayerAdvancements.java -index fdeca41d40705f28864ce4443d01cd872c9d51b0..10e5469df1800bcdfb3f8cb4045ee25a4bafc58c 100644 --- a/net/minecraft/server/PlayerAdvancements.java +++ b/net/minecraft/server/PlayerAdvancements.java -@@ -147,6 +147,7 @@ public class PlayerAdvancements { +@@ -147,6 +_,7 @@ AdvancementHolder advancementHolder = advancementManager.get(path); if (advancementHolder == null) { if (!path.getNamespace().equals(ResourceLocation.DEFAULT_NAMESPACE)) return; // CraftBukkit @@ -16,7 +8,7 @@ index fdeca41d40705f28864ce4443d01cd872c9d51b0..10e5469df1800bcdfb3f8cb4045ee25a LOGGER.warn("Ignored advancement '{}' in progress file {} - it doesn't exist anymore?", path, this.playerSavePath); } else { this.startProgress(advancementHolder, progress); -@@ -194,6 +195,7 @@ public class PlayerAdvancements { +@@ -194,6 +_,7 @@ advancement.value().display().ifPresent(displayInfo -> { // Paper start - Add Adventure message to PlayerAdvancementDoneEvent if (event.message() != null && this.player.level().getGameRules().getBoolean(GameRules.RULE_ANNOUNCE_ADVANCEMENTS)) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/EnchantCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch similarity index 75% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/EnchantCommand.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch index 1c9b808ed..6379c1d94 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/EnchantCommand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/EnchantCommand.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/commands/EnchantCommand.java b/net/minecraft/server/commands/EnchantCommand.java -index 6f4fcee9fdba2248227708fcced1ce0f40aff6af..13f1dbd0d09428e9e0a42f99d0553283e0065f6f 100644 --- a/net/minecraft/server/commands/EnchantCommand.java +++ b/net/minecraft/server/commands/EnchantCommand.java -@@ -70,7 +70,7 @@ public class EnchantCommand { +@@ -70,7 +_,7 @@ private static int enchant(CommandSourceStack source, Collection targets, Holder enchantment, int level) throws CommandSyntaxException { Enchantment enchantment1 = enchantment.value(); @@ -17,7 +9,7 @@ index 6f4fcee9fdba2248227708fcced1ce0f40aff6af..13f1dbd0d09428e9e0a42f99d0553283 throw ERROR_LEVEL_TOO_HIGH.create(level, enchantment1.getMaxLevel()); } else { int i = 0; -@@ -80,7 +80,7 @@ public class EnchantCommand { +@@ -80,7 +_,7 @@ ItemStack mainHandItem = livingEntity.getMainHandItem(); if (!mainHandItem.isEmpty()) { if (enchantment1.canEnchant(mainHandItem) diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GameModeCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch similarity index 69% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GameModeCommand.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch index 92cfc3069..135ee41ef 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GameModeCommand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/commands/GameModeCommand.java b/net/minecraft/server/commands/GameModeCommand.java -index 9da9ab3b835a8dcc7e1da286be1de88a3f0240fa..4b8c9aaf1d143bc38f52f646e4e73b56013eda8c 100644 --- a/net/minecraft/server/commands/GameModeCommand.java +++ b/net/minecraft/server/commands/GameModeCommand.java -@@ -53,6 +53,18 @@ public class GameModeCommand { +@@ -53,6 +_,18 @@ } private static int setMode(CommandContext source, Collection players, GameType gameType) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GiveCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch similarity index 59% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GiveCommand.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch index afdfd8dc3..983f2b9cd 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/commands/GiveCommand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/commands/GiveCommand.java b/net/minecraft/server/commands/GiveCommand.java -index ea9db57a1fe2f11739ceb062ea7cce15776f959a..a919d91eeaaeef0f79190cc5e78e4f8b2fb468dd 100644 --- a/net/minecraft/server/commands/GiveCommand.java +++ b/net/minecraft/server/commands/GiveCommand.java -@@ -69,6 +69,7 @@ public class GiveCommand { +@@ -69,6 +_,7 @@ i1 -= min; ItemStack itemStack1 = item.createItemStack(min, false); boolean flag = serverPlayer.getInventory().add(itemStack1); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch similarity index 81% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServer.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch index 813cd7556..e8a2669b4 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServer.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java -index 98927d4a5fba2a0dcdb147ac10b82c3286ccdc6b..670553243d26e2faab8a21f099a846d4d1df7927 100644 --- a/net/minecraft/server/dedicated/DedicatedServer.java +++ b/net/minecraft/server/dedicated/DedicatedServer.java -@@ -105,6 +105,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -105,6 +_,7 @@ public void run() { if (!org.bukkit.craftbukkit.Main.useConsole) return; // CraftBukkit // Paper start - Use TerminalConsoleAppender @@ -16,7 +8,7 @@ index 98927d4a5fba2a0dcdb147ac10b82c3286ccdc6b..670553243d26e2faab8a21f099a846d4 new com.destroystokyo.paper.console.PaperConsole(DedicatedServer.this).start(); /* BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); -@@ -183,6 +184,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -183,6 +_,15 @@ io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics @@ -32,7 +24,7 @@ index 98927d4a5fba2a0dcdb147ac10b82c3286ccdc6b..670553243d26e2faab8a21f099a846d4 com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now this.setPvpAllowed(properties.pvp); -@@ -230,6 +240,30 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -230,6 +_,30 @@ if (true) throw new IllegalStateException("Failed to bind to port", var10); // Paper - Propagate failed to bind to port error return false; } @@ -63,7 +55,7 @@ index 98927d4a5fba2a0dcdb147ac10b82c3286ccdc6b..670553243d26e2faab8a21f099a846d4 // CraftBukkit start this.server.loadPlugins(); -@@ -308,6 +342,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -308,6 +_,8 @@ LOGGER.info("JMX monitoring enabled"); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch similarity index 56% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch index 83b65bdad..74d774008 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/dedicated/DedicatedServerProperties.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/dedicated/DedicatedServerProperties.java b/net/minecraft/server/dedicated/DedicatedServerProperties.java -index 4a01088da91fc6d620cb804a9ab6d6eb1630b473..b286dc17cda16fca3af9374d2a4a8bd137c24450 100644 --- a/net/minecraft/server/dedicated/DedicatedServerProperties.java +++ b/net/minecraft/server/dedicated/DedicatedServerProperties.java -@@ -51,6 +51,7 @@ public class DedicatedServerProperties extends Settings -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/gui/MinecraftServerGui.java b/net/minecraft/server/gui/MinecraftServerGui.java -index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b3788623900db41 100644 --- a/net/minecraft/server/gui/MinecraftServerGui.java +++ b/net/minecraft/server/gui/MinecraftServerGui.java -@@ -39,6 +39,11 @@ public class MinecraftServerGui extends JComponent { +@@ -39,6 +_,11 @@ private Thread logAppenderThread; private final Collection finalizers = Lists.newArrayList(); final AtomicBoolean isClosing = new AtomicBoolean(); @@ -20,7 +12,7 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 public static MinecraftServerGui showFrameFor(final DedicatedServer server) { try { -@@ -46,7 +51,7 @@ public class MinecraftServerGui extends JComponent { +@@ -46,7 +_,7 @@ } catch (Exception var3) { } @@ -29,7 +21,7 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 final MinecraftServerGui minecraftServerGui = new MinecraftServerGui(server); jFrame.setDefaultCloseOperation(2); jFrame.add(minecraftServerGui); -@@ -54,7 +59,7 @@ public class MinecraftServerGui extends JComponent { +@@ -54,7 +_,7 @@ jFrame.setLocationRelativeTo(null); jFrame.setVisible(true); // Paper start - Improve ServerGUI @@ -38,7 +30,7 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 try { jFrame.setIconImage(javax.imageio.ImageIO.read(java.util.Objects.requireNonNull(MinecraftServerGui.class.getClassLoader().getResourceAsStream("logo.png")))); } catch (java.io.IOException ignore) { -@@ -64,7 +69,7 @@ public class MinecraftServerGui extends JComponent { +@@ -64,7 +_,7 @@ @Override public void windowClosing(WindowEvent event) { if (!minecraftServerGui.isClosing.getAndSet(true)) { @@ -47,7 +39,7 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 server.halt(true); minecraftServerGui.runFinalizers(); } -@@ -112,7 +117,7 @@ public class MinecraftServerGui extends JComponent { +@@ -112,7 +_,7 @@ private JComponent buildChatPanel() { JPanel jPanel = new JPanel(new BorderLayout()); @@ -56,7 +48,7 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 JScrollPane jScrollPane = new JScrollPane(jTextArea, 22, 30); jTextArea.setEditable(false); jTextArea.setFont(MONOSPACED); -@@ -121,10 +126,43 @@ public class MinecraftServerGui extends JComponent { +@@ -121,10 +_,43 @@ String trimmed = jTextField.getText().trim(); if (!trimmed.isEmpty()) { this.server.handleConsoleInput(trimmed, this.server.createCommandSourceStack()); @@ -100,7 +92,7 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 jTextArea.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent event) { -@@ -159,7 +197,7 @@ public class MinecraftServerGui extends JComponent { +@@ -159,7 +_,7 @@ } private static final java.util.regex.Pattern ANSI = java.util.regex.Pattern.compile("\\e\\[[\\d;]*[^\\d;]"); // CraftBukkit // Paper @@ -109,7 +101,7 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 if (!SwingUtilities.isEventDispatchThread()) { SwingUtilities.invokeLater(() -> this.print(textArea, scrollPane, line)); } else { -@@ -170,10 +208,11 @@ public class MinecraftServerGui extends JComponent { +@@ -170,16 +_,29 @@ flag = verticalScrollBar.getValue() + verticalScrollBar.getSize().getHeight() + MONOSPACED.getSize() * 4 > verticalScrollBar.getMaximum(); } @@ -123,10 +115,10 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 if (flag) { verticalScrollBar.setValue(Integer.MAX_VALUE); -@@ -181,6 +220,18 @@ public class MinecraftServerGui extends JComponent { + } } } - ++ + // Purpur start - GUI Improvements + public static class CommandHistory extends java.util.LinkedList { + @Override @@ -138,7 +130,6 @@ index f262a7c5ae4e7d56f16f5c0f4f145a2e428abbe4..614c7d9f673c926562acc8fa3b378862 + } + } + // Purpur end - GUI Improvements -+ + // Paper start - Add onboarding message for initial server start private JComponent buildOnboardingPanel() { - String onboardingLink = "https://docs.papermc.io/paper/next-steps"; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/gui/StatsComponent.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch similarity index 63% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/gui/StatsComponent.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch index ba597593a..a082bca56 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/gui/StatsComponent.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/gui/StatsComponent.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/gui/StatsComponent.java b/net/minecraft/server/gui/StatsComponent.java -index 35fd539eb2bfe60ad17ab1e558a01273666acc54..103ff139dae918c991413ce9df61da3e22ee458a 100644 --- a/net/minecraft/server/gui/StatsComponent.java +++ b/net/minecraft/server/gui/StatsComponent.java -@@ -43,7 +43,7 @@ public class StatsComponent extends JComponent { +@@ -43,7 +_,7 @@ } this.msgs[0] = "Memory use: " + l / 1024L / 1024L + " mb (" + Runtime.getRuntime().freeMemory() * 100L / Runtime.getRuntime().maxMemory() + "% free)"; this.msgs[1] = "Avg tick: " + DECIMAL_FORMAT.format((double)this.server.getAverageTickTimeNanos() / TimeUtil.NANOSECONDS_PER_MILLISECOND) + " ms"; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch similarity index 88% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerLevel.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch index 9a3a7623d..5626a7245 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerLevel.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..83eff33884bffddfafc85eeb4a2900104a396e2e 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -206,6 +206,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -206,6 +_,8 @@ private final StructureManager structureManager; private final StructureCheck structureCheck; private final boolean tickTime; @@ -17,7 +9,7 @@ index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..83eff33884bffddfafc85eeb4a290010 private final RandomSequences randomSequences; // CraftBukkit start -@@ -590,7 +592,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -590,7 +_,24 @@ // CraftBukkit end this.tickTime = tickTime; this.server = server; @@ -43,7 +35,7 @@ index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..83eff33884bffddfafc85eeb4a290010 this.serverLevelData = serverLevelData; ChunkGenerator chunkGenerator = levelStem.generator(); // CraftBukkit start -@@ -675,6 +694,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -675,6 +_,7 @@ this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler); // Paper end - rewrite chunk system this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit @@ -51,7 +43,7 @@ index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..83eff33884bffddfafc85eeb4a290010 } // Paper start -@@ -721,7 +741,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -721,7 +_,7 @@ } int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); @@ -60,7 +52,7 @@ index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..83eff33884bffddfafc85eeb4a290010 // Paper start - create time skip event - move up calculations final long newDayTime = this.levelData.getDayTime() + 24000L; org.bukkit.event.world.TimeSkipEvent event = new org.bukkit.event.world.TimeSkipEvent( -@@ -840,6 +860,13 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -840,6 +_,13 @@ this.serverLevelData.getScheduledEvents().tick(this.server, l); Profiler.get().pop(); if (this.serverLevelData.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) { @@ -74,10 +66,11 @@ index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..83eff33884bffddfafc85eeb4a290010 this.setDayTime(this.levelData.getDayTime() + 1L); } } -@@ -847,7 +874,21 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -847,7 +_,21 @@ public void setDayTime(long time) { this.serverLevelData.setDayTime(time); +- } + // Purpur start - Configurable daylight cycle + this.preciseTime = time; + this.forceTime = false; @@ -91,12 +84,12 @@ index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..83eff33884bffddfafc85eeb4a290010 + // Purpur start - Configurable daylight cycle + public boolean isForceTime() { + return this.forceTime; - } ++ } + // Purpur end - Configurable daylight cycle public void tickCustomSpawners(boolean spawnEnemies, boolean spawnFriendlies) { for (CustomSpawner customSpawner : this.customSpawners) { -@@ -951,9 +992,17 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -951,9 +_,17 @@ && this.random.nextDouble() < currentDifficultyAt.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01) // Paper - Configurable spawn chances for skeleton horses && !this.getBlockState(blockPos.below()).is(Blocks.LIGHTNING_ROD); if (flag) { @@ -116,7 +109,7 @@ index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..83eff33884bffddfafc85eeb4a290010 skeletonHorse.setAge(0); skeletonHorse.setPos(blockPos.getX(), blockPos.getY(), blockPos.getZ()); this.addFreshEntity(skeletonHorse, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit -@@ -988,9 +1037,35 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -988,9 +_,35 @@ if (blockState.is(Blocks.SNOW)) { int layersValue = blockState.getValue(SnowLayerBlock.LAYERS); if (layersValue < Math.min(_int, 8)) { @@ -152,7 +145,7 @@ index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..83eff33884bffddfafc85eeb4a290010 } } else { org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(this, heightmapPos, Blocks.SNOW.defaultBlockState(), 3, null); // CraftBukkit -@@ -1011,7 +1086,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1011,7 +_,7 @@ pointOfInterestType -> pointOfInterestType.is(PoiTypes.LIGHTNING_ROD), blockPos -> blockPos.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockPos.getX(), blockPos.getZ()) - 1, pos, @@ -161,7 +154,7 @@ index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..83eff33884bffddfafc85eeb4a290010 PoiManager.Occupancy.ANY ); return optional.map(blockPos -> blockPos.above(1)); -@@ -1060,8 +1135,26 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1060,8 +_,26 @@ int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); Component component; if (this.sleepStatus.areEnoughSleeping(_int)) { @@ -188,7 +181,7 @@ index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..83eff33884bffddfafc85eeb4a290010 component = Component.translatable("sleep.players_sleeping", this.sleepStatus.amountSleeping(), this.sleepStatus.sleepersNeeded(_int)); } -@@ -1198,6 +1291,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1198,6 +_,7 @@ @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -196,7 +189,7 @@ index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..83eff33884bffddfafc85eeb4a290010 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.... -@@ -1205,6 +1299,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1205,6 +_,7 @@ this.serverLevelData.setRainTime(0); } // CraftBukkit end @@ -204,7 +197,7 @@ index dda8d38ef61672cc714d9e5a475f9b0412ed5ff9..83eff33884bffddfafc85eeb4a290010 this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. -@@ -2727,7 +2822,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2727,7 +_,7 @@ // 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/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch similarity index 87% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayer.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index da3953c95..869dab881 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -1,16 +1,8 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 728fa1210e0fd837e28c48802045dea2ae59f5d6..f292626a6ab2ae3f71f76aebdd2b4cf576183331 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -431,6 +431,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -429,6 +_,10 @@ + public boolean isRealPlayer; // Paper public @Nullable com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent - public @Nullable String clientBrandName = null; // Paper - Brand support public @Nullable 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 - Purpur client support + private boolean tpsBar = false; // Purpur - Implement TPSBar @@ -19,7 +11,7 @@ index 728fa1210e0fd837e28c48802045dea2ae59f5d6..f292626a6ab2ae3f71f76aebdd2b4cf5 // Paper start - rewrite chunk system private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; -@@ -628,6 +632,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -562,6 +_,10 @@ this.respawnConfig = input.read("respawn", ServerPlayer.RespawnConfig.CODEC).orElse(null); this.spawnExtraParticlesOnFall = input.getBooleanOr("spawn_extra_particles_on_fall", false); this.raidOmenPosition = input.read("raid_omen_position", BlockPos.CODEC).orElse(null); @@ -30,7 +22,7 @@ index 728fa1210e0fd837e28c48802045dea2ae59f5d6..f292626a6ab2ae3f71f76aebdd2b4cf5 } @Override -@@ -645,6 +653,9 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -579,6 +_,9 @@ output.storeNullable("raid_omen_position", BlockPos.CODEC, this.raidOmenPosition); this.saveEnderPearls(output); this.getBukkitEntity().setExtraData(output); // CraftBukkit @@ -40,7 +32,7 @@ index 728fa1210e0fd837e28c48802045dea2ae59f5d6..f292626a6ab2ae3f71f76aebdd2b4cf5 } private void saveParentVehicle(ValueOutput output) { -@@ -1141,6 +1152,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1075,6 +_,7 @@ // Paper - moved up to sendClientboundPlayerCombatKillPacket() sendClientboundPlayerCombatKillPacket(event.getShowDeathMessages(), deathScreenMessage); // Paper - Expand PlayerDeathEvent Team team = this.getTeam(); @@ -48,7 +40,7 @@ index 728fa1210e0fd837e28c48802045dea2ae59f5d6..f292626a6ab2ae3f71f76aebdd2b4cf5 if (team == null || team.getDeathMessageVisibility() == Team.Visibility.ALWAYS) { this.server.getPlayerList().broadcastSystemMessage(deathMessage, false); } else if (team.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { -@@ -1247,6 +1259,13 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1181,6 +_,13 @@ if (this.isInvulnerableTo(level, damageSource)) { return false; } else { @@ -62,7 +54,7 @@ index 728fa1210e0fd837e28c48802045dea2ae59f5d6..f292626a6ab2ae3f71f76aebdd2b4cf5 Entity entity = damageSource.getEntity(); if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. !(entity instanceof Player player && !this.canHarmPlayer(player)) -@@ -1491,6 +1510,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1425,6 +_,7 @@ serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -70,7 +62,7 @@ index 728fa1210e0fd837e28c48802045dea2ae59f5d6..f292626a6ab2ae3f71f76aebdd2b4cf5 this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1607,7 +1627,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1541,7 +_,7 @@ new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), monster -> monster.isPreventingPlayerRest(this.level(), this) ); @@ -79,7 +71,7 @@ index 728fa1210e0fd837e28c48802045dea2ae59f5d6..f292626a6ab2ae3f71f76aebdd2b4cf5 return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1644,7 +1664,19 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1578,7 +_,19 @@ CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); if (!this.level().canSleepThroughNights()) { @@ -100,7 +92,7 @@ index 728fa1210e0fd837e28c48802045dea2ae59f5d6..f292626a6ab2ae3f71f76aebdd2b4cf5 } this.level().updateSleepingPlayerList(); -@@ -1736,6 +1768,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1670,6 +_,7 @@ @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -108,7 +100,7 @@ index 728fa1210e0fd837e28c48802045dea2ae59f5d6..f292626a6ab2ae3f71f76aebdd2b4cf5 this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -2045,6 +2078,26 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1979,6 +_,26 @@ this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -135,7 +127,7 @@ index 728fa1210e0fd837e28c48802045dea2ae59f5d6..f292626a6ab2ae3f71f76aebdd2b4cf5 @Override public void displayClientMessage(Component chatComponent, boolean actionBar) { this.sendSystemMessage(chatComponent, actionBar); -@@ -2263,6 +2316,20 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -2197,6 +_,20 @@ ); } @@ -156,13 +148,14 @@ index 728fa1210e0fd837e28c48802045dea2ae59f5d6..f292626a6ab2ae3f71f76aebdd2b4cf5 public void sendSystemMessage(Component mesage) { this.sendSystemMessage(mesage, false); } -@@ -2401,8 +2468,68 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -2335,7 +_,67 @@ public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); +- } + this.setAfk(false); // Purpur - AFK API - } - ++ } ++ + // Purpur start - AFK API + private boolean isAfk = false; + @@ -221,11 +214,10 @@ index 728fa1210e0fd837e28c48802045dea2ae59f5d6..f292626a6ab2ae3f71f76aebdd2b4cf5 + return !this.isAfk() && super.canBeCollidedWith(entity); + } + // Purpur end - AFK API -+ + public ServerStatsCounter getStats() { return this.stats; - } -@@ -3029,4 +3156,56 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -2963,4 +_,56 @@ return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch similarity index 83% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch index 01bc2aa0c..f28a3de6d 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/level/ServerPlayerGameMode.java b/net/minecraft/server/level/ServerPlayerGameMode.java -index 6734756d7a51e635a50a47577f9e6b6f8111db51..c4a4f08272b34f72dea4feaaeb66d153b2aab8c8 100644 --- a/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -348,6 +348,7 @@ public class ServerPlayerGameMode { +@@ -348,6 +_,7 @@ } return false; } @@ -16,7 +8,7 @@ index 6734756d7a51e635a50a47577f9e6b6f8111db51..c4a4f08272b34f72dea4feaaeb66d153 } // CraftBukkit end -@@ -461,6 +462,7 @@ public class ServerPlayerGameMode { +@@ -461,6 +_,7 @@ public InteractionHand interactHand; public ItemStack interactItemStack; public InteractionResult useItemOn(ServerPlayer player, Level level, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) { @@ -24,7 +16,7 @@ index 6734756d7a51e635a50a47577f9e6b6f8111db51..c4a4f08272b34f72dea4feaaeb66d153 BlockPos blockPos = hitResult.getBlockPos(); BlockState blockState = level.getBlockState(blockPos); boolean cancelledBlock = false; -@@ -503,7 +505,7 @@ public class ServerPlayerGameMode { +@@ -503,7 +_,7 @@ boolean flag = !player.getMainHandItem().isEmpty() || !player.getOffhandItem().isEmpty(); boolean flag1 = player.isSecondaryUseActive() && flag; ItemStack itemStack = stack.copy(); @@ -33,7 +25,7 @@ index 6734756d7a51e635a50a47577f9e6b6f8111db51..c4a4f08272b34f72dea4feaaeb66d153 InteractionResult interactionResult = blockState.useItemOn(player.getItemInHand(hand), level, player, hand, hitResult); if (interactionResult.consumesAction()) { CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger(player, blockPos, itemStack); -@@ -549,4 +551,18 @@ public class ServerPlayerGameMode { +@@ -549,4 +_,18 @@ public void setLevel(ServerLevel serverLevel) { this.level = serverLevel; } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/WorldGenRegion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch similarity index 50% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/WorldGenRegion.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch index 4dae8f3a1..ab71931ac 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/level/WorldGenRegion.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/WorldGenRegion.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/level/WorldGenRegion.java b/net/minecraft/server/level/WorldGenRegion.java -index 11fed81a4696ba18440e755c3b8a5ca39ed8a6b1..18367ee56288c4cc60b66555583a8900e7a47daf 100644 --- a/net/minecraft/server/level/WorldGenRegion.java +++ b/net/minecraft/server/level/WorldGenRegion.java -@@ -314,6 +314,7 @@ public class WorldGenRegion implements WorldGenLevel { +@@ -314,6 +_,7 @@ return true; } else { // Paper start - Buffer OOB setBlock calls diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch similarity index 69% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch index cbeae0729..5b4381b51 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 43f70a5561d6cc62aaeba6d1e39598ecb382e369..f6a04a4b0a06c2fbb3b6aac4ec3e162f6c39b2a2 100644 --- a/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -39,10 +39,11 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -39,10 +_,11 @@ public final Connection connection; // Paper private final boolean transferred; //private long keepAliveTime; // Paper - improve keepalives @@ -19,20 +11,20 @@ index 43f70a5561d6cc62aaeba6d1e39598ecb382e369..f6a04a4b0a06c2fbb3b6aac4ec3e162f private boolean closed = false; + private it.unimi.dsi.fastutil.longs.LongList keepAlives = new it.unimi.dsi.fastutil.longs.LongArrayList(); // Purpur - Alternative Keepalive Handling private volatile int latency; // Paper - improve keepalives - make volatile + private final io.papermc.paper.util.KeepAlive keepAlive; // Paper - improve keepalives private volatile boolean suspendFlushingOnServerThread = false; - // CraftBukkit start -@@ -53,6 +54,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -53,6 +_,7 @@ 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 net.minecraft.resources.ResourceLocation MINECRAFT_BRAND = net.minecraft.resources.ResourceLocation.withDefaultNamespace("brand"); // Paper - Brand support + protected static final net.minecraft.resources.ResourceLocation PURPUR_CLIENT = net.minecraft.resources.ResourceLocation.fromNamespaceAndPath("purpur", "client"); // Purpur - Purpur client support + public @Nullable String playerBrand; // Paper - public ServerCommonPacketListenerImpl(MinecraftServer server, Connection connection, CommonListenerCookie cookie, net.minecraft.server.level.ServerPlayer player) { // CraftBukkit - this.server = server; -@@ -123,6 +125,18 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack + public ServerCommonPacketListenerImpl(MinecraftServer server, Connection connection, CommonListenerCookie cookie) { +@@ -94,6 +_,18 @@ // Paper start - improve keepalives long now = System.nanoTime(); - net.minecraft.server.level.ServerPlayer.PendingKeepAlive pending = this.player.pendingKeepAlives.peek(); + io.papermc.paper.util.KeepAlive.PendingKeepAlive pending = this.keepAlive.pendingKeepAlives.peek(); + // Purpur start - Alternative Keepalive Handling + if (org.purpurmc.purpur.PurpurConfig.useAlternateKeepAlive) { + if (this.keepAlivePending && !keepAlives.isEmpty() && keepAlives.contains(packet.getId())) { @@ -46,22 +38,9 @@ index 43f70a5561d6cc62aaeba6d1e39598ecb382e369..f6a04a4b0a06c2fbb3b6aac4ec3e162f + } else + // Purpur end - Alternative Keepalive Handling if (pending != null && pending.challengeId() == packet.getId()) { - this.player.pendingKeepAlives.remove(pending); + this.keepAlive.pendingKeepAlives.remove(pending); -@@ -199,6 +213,12 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack - return; - } - -+ // Purpur start - Purpur client support -+ if (identifier.equals(PURPUR_CLIENT)) { -+ this.player.purpurClient = true; -+ } -+ // Purpur end - Purpur client support -+ - if (identifier.equals(MINECRAFT_BRAND)) { - this.player.clientBrandName = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256); - } -@@ -276,6 +296,23 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -179,6 +_,23 @@ Profiler.get().push("keepAlive"); long millis = Util.getMillis(); // Paper start - improve keepalives diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch similarity index 90% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index 9ade22f8a..4051d03b5 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -1,15 +1,7 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12b1e10766 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -324,6 +324,20 @@ public class ServerGamePacketListenerImpl - this.tickEndEvent = new io.papermc.paper.event.packet.ClientTickEndEvent(player.getBukkitEntity()); // Paper - add client tick end event +@@ -326,6 +_,20 @@ + this.playerGameConnection = new io.papermc.paper.connection.PaperPlayerGameConnection(this); // Paper } + // Purpur start - AFK API @@ -29,7 +21,7 @@ index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12 @Override public void tick() { if (this.ackBlockChangesUpTo > -1) { -@@ -382,6 +396,12 @@ public class ServerGamePacketListenerImpl +@@ -384,6 +_,12 @@ if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits @@ -42,7 +34,7 @@ index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12 this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854 this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause } -@@ -651,6 +671,8 @@ public class ServerGamePacketListenerImpl +@@ -653,6 +_,8 @@ this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -51,7 +43,7 @@ index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12 Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -730,6 +752,7 @@ public class ServerGamePacketListenerImpl +@@ -732,6 +_,7 @@ PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); if (packet.getId() == this.awaitingTeleport) { if (this.awaitingPositionFromClient == null) { @@ -59,7 +51,7 @@ index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12 this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause return; } -@@ -1263,6 +1286,10 @@ public class ServerGamePacketListenerImpl +@@ -1265,6 +_,10 @@ final int maxBookPageSize = pageMax.intValue(); final double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D); long byteAllowed = maxBookPageSize; @@ -70,7 +62,7 @@ index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12 for (final String page : pageList) { final int byteLength = page.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; byteTotal += byteLength; -@@ -1287,7 +1314,8 @@ public class ServerGamePacketListenerImpl +@@ -1289,7 +_,8 @@ } if (byteTotal > byteAllowed) { @@ -80,7 +72,7 @@ index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12 this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect return; } -@@ -1306,31 +1334,45 @@ public class ServerGamePacketListenerImpl +@@ -1308,31 +_,45 @@ Optional optional = packet.title(); optional.ifPresent(list::add); list.addAll(packet.pages()); @@ -130,7 +122,7 @@ index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12 itemStack.set( DataComponents.WRITTEN_BOOK_CONTENT, new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list, true) -@@ -1344,6 +1386,16 @@ public class ServerGamePacketListenerImpl +@@ -1346,6 +_,16 @@ return this.player.isTextFilteringEnabled() ? Filterable.passThrough(filteredText.filteredOrEmpty()) : Filterable.from(filteredText); } @@ -147,7 +139,7 @@ index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12 @Override public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); -@@ -1383,7 +1435,15 @@ public class ServerGamePacketListenerImpl +@@ -1385,7 +_,15 @@ @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); @@ -164,7 +156,7 @@ index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12 this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause } else { ServerLevel serverLevel = this.player.level(); -@@ -1565,7 +1625,7 @@ public class ServerGamePacketListenerImpl +@@ -1567,7 +_,7 @@ movedWrongly = true; if (event.getLogWarning()) // Paper end @@ -173,7 +165,7 @@ index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12 } // Paper } -@@ -1630,6 +1690,8 @@ public class ServerGamePacketListenerImpl +@@ -1632,6 +_,8 @@ this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -182,7 +174,7 @@ index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12 Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -1685,6 +1747,13 @@ public class ServerGamePacketListenerImpl +@@ -1687,6 +_,13 @@ this.player.tryResetCurrentImpulseContext(); } @@ -196,7 +188,7 @@ index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12 this.player.checkMovementStatistics(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1702,6 +1771,17 @@ public class ServerGamePacketListenerImpl +@@ -1704,6 +_,17 @@ } } @@ -214,7 +206,7 @@ index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12 private boolean shouldCheckPlayerMovement(boolean isElytraMovement) { if (this.isSingleplayerOwner()) { return false; -@@ -2099,6 +2179,7 @@ public class ServerGamePacketListenerImpl +@@ -2101,6 +_,7 @@ boolean cancelled; if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) { @@ -222,7 +214,7 @@ index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12 org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { -@@ -2750,6 +2831,7 @@ public class ServerGamePacketListenerImpl +@@ -2748,6 +_,7 @@ AABB boundingBox = target.getBoundingBox(); if (this.player.canInteractWithEntity(boundingBox, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience value for interact range @@ -230,3 +222,16 @@ index 625eae18ab13ae27949128f6325b3608a557cf1f..8a04052908fa53028b7d5a4619908d12 packet.dispatch( new ServerboundInteractPacket.Handler() { private void performInteraction(InteractionHand hand, ServerGamePacketListenerImpl.EntityInteraction entityInteraction, PlayerInteractEntityEvent event) { // CraftBukkit +@@ -3745,6 +_,12 @@ + readChannelIdentifier(data, startIndex, data.length, registerChannel); + return; + } ++ ++ // Purpur start - Purpur client support ++ if (identifier.equals(PURPUR_CLIENT)) { ++ this.player.purpurClient = true; ++ } ++ // Purpur end - Purpur client support + + if (identifier.equals(MINECRAFT_BRAND)) { + this.player.connection.playerBrand = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch similarity index 70% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch index f3e28edaf..5dc2e1705 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index 7950f4f88d8a83ed5610b7af4e134557d32da3f0..637b2eb7104cb0bc7f314ad6eea11a432e899861 100644 --- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -306,7 +306,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, +@@ -273,7 +_,7 @@ ServerLoginPacketListenerImpl.LOGGER.warn("Failed to verify username but will let them in anyway!"); ServerLoginPacketListenerImpl.this.startClientVerification(ServerLoginPacketListenerImpl.this.createOfflineProfile(string1)); // Spigot } else { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch similarity index 59% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch index 5d2a5a854..3fc9d014a 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerStatusPacketListenerImpl.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/network/ServerStatusPacketListenerImpl.java b/net/minecraft/server/network/ServerStatusPacketListenerImpl.java -index 465559113071a47e706f77a5b0996597ee986b3d..1b966dc52b067cd9d1fa9f500b692e3f75f1cc90 100644 --- a/net/minecraft/server/network/ServerStatusPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerStatusPacketListenerImpl.java -@@ -37,6 +37,7 @@ public class ServerStatusPacketListenerImpl implements ServerStatusPacketListene +@@ -37,6 +_,7 @@ } else { this.hasRequestedStatus = true; // this.connection.send(new ClientboundStatusResponsePacket(this.status)); // Paper diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/PlayerList.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch similarity index 63% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/PlayerList.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch index bd91ee894..c7474212e 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/PlayerList.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index b1524279c02cd3be82338a6bd0320cb125a134d5..cc26f97e1e72eb077dc60691dadbcd5a52235c0d 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -401,6 +401,7 @@ public abstract class PlayerList { +@@ -401,6 +_,7 @@ scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam); } // Paper end - Configurable player collision @@ -16,7 +8,7 @@ index b1524279c02cd3be82338a6bd0320cb125a134d5..cc26f97e1e72eb077dc60691dadbcd5a PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), loggableAddress, player.getId(), serverLevel.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ()); // Paper start - Send empty chunk, so players aren't stuck in the world loading screen with our chunk system not sending chunks when dead if (player.isDeadOrDying()) { -@@ -508,6 +509,7 @@ public abstract class PlayerList { +@@ -508,6 +_,7 @@ } public @Nullable net.kyori.adventure.text.Component remove(ServerPlayer player, net.kyori.adventure.text.Component leaveMessage) { // Paper end - Fix kick event leave message not being sent @@ -24,16 +16,7 @@ index b1524279c02cd3be82338a6bd0320cb125a134d5..cc26f97e1e72eb077dc60691dadbcd5a ServerLevel serverLevel = player.level(); player.awardStat(Stats.LEAVE_GAME); // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it -@@ -666,7 +668,7 @@ public abstract class PlayerList { - // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameProfile) - // ? Component.translatable("multiplayer.disconnect.server_full") - // : null; -- if (this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameProfile)) { -+ if (this.players.size() >= this.maxPlayers && !(player.hasPermission("purpur.joinfullserver") || this.canBypassPlayerLimit(gameProfile))) { // Purpur - Allow player join full server by permission - event.disallow(org.bukkit.event.player.PlayerLoginEvent.Result.KICK_FULL, net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(org.spigotmc.SpigotConfig.serverFullMessage)); // Spigot // Paper - Adventure - } - } -@@ -928,6 +930,20 @@ public abstract class PlayerList { +@@ -895,6 +_,20 @@ } } @@ -54,7 +37,7 @@ index b1524279c02cd3be82338a6bd0320cb125a134d5..cc26f97e1e72eb077dc60691dadbcd5a public void broadcastAll(Packet packet, ResourceKey dimension) { for (ServerPlayer serverPlayer : this.players) { if (serverPlayer.level().dimension() == dimension) { -@@ -1012,6 +1028,7 @@ public abstract class PlayerList { +@@ -979,6 +_,7 @@ } else { b = (byte)(24 + permLevel); } @@ -62,3 +45,12 @@ index b1524279c02cd3be82338a6bd0320cb125a134d5..cc26f97e1e72eb077dc60691dadbcd5a player.connection.send(new ClientboundEntityEventPacket(player, b)); } +@@ -991,7 +_,7 @@ + + // Paper start - whitelist verify event / login event + public LoginResult canBypassFullServerLogin(final GameProfile profile, final LoginResult currentResult) { +- final boolean shouldKick = this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(profile); ++ final boolean shouldKick = this.players.size() >= this.maxPlayers && !(/*player.hasPermission("purpur.joinfullserver") || */this.canBypassPlayerLimit(profile)); // Purpur - Allow player join full server by permission TODO: this hasn't worked for a while, so comment it out until we can reliably check perms of the player joining + final io.papermc.paper.event.player.PlayerServerFullCheckEvent fullCheckEvent = new io.papermc.paper.event.player.PlayerServerFullCheckEvent( + com.destroystokyo.paper.profile.CraftPlayerProfile.asBukkitMirror(profile), + io.papermc.paper.adventure.PaperAdventure.asAdventure(currentResult.message), diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/SleepStatus.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch similarity index 73% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/SleepStatus.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch index ff0d76835..998d2f057 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/server/players/SleepStatus.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/SleepStatus.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/server/players/SleepStatus.java b/net/minecraft/server/players/SleepStatus.java -index 2a7ae521654ad5c9f392baa5562e64bb71b13097..3a3e6992563236141db687084aeec9684437a7db 100644 --- a/net/minecraft/server/players/SleepStatus.java +++ b/net/minecraft/server/players/SleepStatus.java -@@ -15,7 +15,7 @@ public class SleepStatus { +@@ -15,7 +_,7 @@ public boolean areEnoughDeepSleeping(int requiredSleepPercentage, List sleepingPlayers) { // CraftBukkit start @@ -17,7 +9,7 @@ index 2a7ae521654ad5c9f392baa5562e64bb71b13097..3a3e6992563236141db687084aeec968 boolean anyDeepSleep = sleepingPlayers.stream().anyMatch(Player::isSleepingLongEnough); return anyDeepSleep && i >= this.sleepersNeeded(requiredSleepPercentage); // CraftBukkit end -@@ -43,7 +43,7 @@ public class SleepStatus { +@@ -43,7 +_,7 @@ for (ServerPlayer serverPlayer : players) { if (!serverPlayer.isSpectator()) { this.activePlayers++; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/stats/ServerRecipeBook.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch similarity index 60% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/stats/ServerRecipeBook.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch index 700962fa2..7fb3454f4 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/stats/ServerRecipeBook.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/stats/ServerRecipeBook.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/stats/ServerRecipeBook.java b/net/minecraft/stats/ServerRecipeBook.java -index 7e1a06b97ab0c744e910df1c82454ce5686c1870..a7cf3d2dbc3bb8db49629ec5ba049e196af836b7 100644 --- a/net/minecraft/stats/ServerRecipeBook.java +++ b/net/minecraft/stats/ServerRecipeBook.java -@@ -102,6 +102,7 @@ public class ServerRecipeBook extends RecipeBook { +@@ -102,6 +_,7 @@ private void loadRecipes(List>> recipes, Consumer>> output, Predicate>> isRecognized) { for (ResourceKey> resourceKey : recipes) { if (!isRecognized.test(resourceKey)) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/util/StringUtil.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch similarity index 52% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/util/StringUtil.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch index 9f781aab3..b8d231182 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/util/StringUtil.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/util/StringUtil.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/util/StringUtil.java b/net/minecraft/util/StringUtil.java -index 77947e6915facee44588943fcd3e5b513de37e77..c3a99fe7b49858bc0ca9a7f800b0db40465f6901 100644 --- a/net/minecraft/util/StringUtil.java +++ b/net/minecraft/util/StringUtil.java -@@ -87,6 +87,7 @@ public class StringUtil { +@@ -87,6 +_,7 @@ // Paper start - Username validation public static boolean isReasonablePlayerName(final String name) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatRules.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch similarity index 69% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatRules.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch index 8651bf6ab..a70c7a253 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatRules.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/damagesource/CombatRules.java b/net/minecraft/world/damagesource/CombatRules.java -index d5524038314591a10c9f08a68e2ac91f6079a897..bf82de45bf98e8605a1fdb69803f75f471c4af43 100644 --- a/net/minecraft/world/damagesource/CombatRules.java +++ b/net/minecraft/world/damagesource/CombatRules.java -@@ -15,7 +15,7 @@ public class CombatRules { +@@ -15,7 +_,7 @@ public static float getDamageAfterAbsorb(LivingEntity entity, float damage, DamageSource damageSource, float armorValue, float armorToughness) { float f = 2.0F + armorToughness / 4.0F; @@ -17,7 +9,7 @@ index d5524038314591a10c9f08a68e2ac91f6079a897..bf82de45bf98e8605a1fdb69803f75f4 float f2 = f1 / 25.0F; ItemStack weaponItem = damageSource.getWeaponItem(); float f3; -@@ -30,7 +30,7 @@ public class CombatRules { +@@ -30,7 +_,7 @@ } public static float getDamageAfterMagicAbsorb(float damage, float enchantModifiers) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatTracker.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch similarity index 79% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatTracker.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch index bb60965ca..2bc01f621 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/CombatTracker.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatTracker.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/damagesource/CombatTracker.java b/net/minecraft/world/damagesource/CombatTracker.java -index 4cec197634fac341cca1ed108f1ecb0561f72461..aa6213ca382e4901363317df1e30332c5166f271 100644 --- a/net/minecraft/world/damagesource/CombatTracker.java +++ b/net/minecraft/world/damagesource/CombatTracker.java -@@ -64,7 +64,7 @@ public class CombatTracker { +@@ -64,7 +_,7 @@ private Component getMessageForAssistedFall(Entity entity, Component entityDisplayName, String hasWeaponTranslationKey, String noWeaponTranslationKey) { ItemStack itemStack = entity instanceof LivingEntity livingEntity ? livingEntity.getMainHandItem() : ItemStack.EMPTY; @@ -17,7 +9,7 @@ index 4cec197634fac341cca1ed108f1ecb0561f72461..aa6213ca382e4901363317df1e30332c ? Component.translatable(hasWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName, itemStack.getDisplayName()) : Component.translatable(noWeaponTranslationKey, this.mob.getDisplayName(), entityDisplayName); } -@@ -108,6 +108,15 @@ public class CombatTracker { +@@ -108,6 +_,15 @@ 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/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSource.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch similarity index 85% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSource.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch index 993047adb..581f8d027 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSource.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/damagesource/DamageSource.java b/net/minecraft/world/damagesource/DamageSource.java -index bb021fc9de91f8c4f79e6a753d57fa157efbbda7..5fa92eef9c6b88cf96d3fe427e4d4f16953e8094 100644 --- a/net/minecraft/world/damagesource/DamageSource.java +++ b/net/minecraft/world/damagesource/DamageSource.java -@@ -30,6 +30,8 @@ public class DamageSource { +@@ -30,6 +_,8 @@ @Nullable private org.bukkit.block.BlockState fromBlockSnapshot; // Captured block snapshot when the eventBlockDamager is not relevant (e.g. for bad respawn point explosions the block is already removed) private boolean critical; // Supports arrows and sweeping damage @@ -17,7 +9,7 @@ index bb021fc9de91f8c4f79e6a753d57fa157efbbda7..5fa92eef9c6b88cf96d3fe427e4d4f16 public DamageSource knownCause(final org.bukkit.event.entity.EntityDamageEvent.DamageCause cause) { final DamageSource damageSource = this.copy(); -@@ -42,6 +44,30 @@ public class DamageSource { +@@ -42,6 +_,30 @@ return this.knownCause; } @@ -48,7 +40,7 @@ index bb021fc9de91f8c4f79e6a753d57fa157efbbda7..5fa92eef9c6b88cf96d3fe427e4d4f16 @Nullable public Entity eventEntityDamager() { return this.eventEntityDamager; -@@ -103,6 +129,8 @@ public class DamageSource { +@@ -103,6 +_,8 @@ damageSource.eventBlockDamager = this.eventBlockDamager; damageSource.fromBlockSnapshot = this.fromBlockSnapshot; damageSource.critical = this.critical; @@ -57,7 +49,7 @@ index bb021fc9de91f8c4f79e6a753d57fa157efbbda7..5fa92eef9c6b88cf96d3fe427e4d4f16 return damageSource; } // CraftBukkit end -@@ -169,12 +197,21 @@ public class DamageSource { +@@ -169,11 +_,20 @@ } else { Component component = this.causingEntity == null ? this.directEntity.getDisplayName() : this.causingEntity.getDisplayName(); ItemStack itemStack = this.causingEntity instanceof LivingEntity livingEntity1 ? livingEntity1.getMainHandItem() : ItemStack.EMPTY; @@ -67,7 +59,7 @@ index bb021fc9de91f8c4f79e6a753d57fa157efbbda7..5fa92eef9c6b88cf96d3fe427e4d4f16 : Component.translatable(string, livingEntity.getDisplayName(), component); } } - ++ + // Purpur start - Component related conveniences + public Component getLocalizedDeathMessage(String str, LivingEntity entity) { + net.kyori.adventure.text.Component name = io.papermc.paper.adventure.PaperAdventure.asAdventure(entity.getDisplayName()); @@ -76,7 +68,6 @@ index bb021fc9de91f8c4f79e6a753d57fa157efbbda7..5fa92eef9c6b88cf96d3fe427e4d4f16 + return io.papermc.paper.adventure.PaperAdventure.asVanilla(component); + } + // Purpur end - Component related conveniences -+ + public String getMsgId() { return this.type().msgId(); - } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSources.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch similarity index 73% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSources.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch index 0d722223f..29006dbaf 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/damagesource/DamageSources.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSources.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/damagesource/DamageSources.java b/net/minecraft/world/damagesource/DamageSources.java -index cc206ecff2d95f0398ca424c178a336ad80cc396..7afad362801082e5f2e3aceda864ad2a7d4e5ebb 100644 --- a/net/minecraft/world/damagesource/DamageSources.java +++ b/net/minecraft/world/damagesource/DamageSources.java -@@ -42,6 +42,8 @@ public class DamageSources { +@@ -42,6 +_,8 @@ private final DamageSource stalagmite; private final DamageSource outsideBorder; private final DamageSource genericKill; @@ -17,7 +9,7 @@ index cc206ecff2d95f0398ca424c178a336ad80cc396..7afad362801082e5f2e3aceda864ad2a public DamageSources(RegistryAccess registry) { this.damageTypes = registry.lookupOrThrow(Registries.DAMAGE_TYPE); -@@ -70,6 +72,8 @@ public class DamageSources { +@@ -70,6 +_,8 @@ this.stalagmite = this.source(DamageTypes.STALAGMITE); this.outsideBorder = this.source(DamageTypes.OUTSIDE_BORDER); this.genericKill = this.source(DamageTypes.GENERIC_KILL); @@ -26,10 +18,11 @@ index cc206ecff2d95f0398ca424c178a336ad80cc396..7afad362801082e5f2e3aceda864ad2a } private DamageSource source(ResourceKey damageTypeKey) { -@@ -84,6 +88,18 @@ public class DamageSources { +@@ -83,6 +_,18 @@ + private DamageSource source(ResourceKey damageTypeKey, @Nullable Entity causingEntity, @Nullable Entity directEntity) { return new DamageSource(this.damageTypes.getOrThrow(damageTypeKey), causingEntity, directEntity); } - ++ + // Purpur start - Dont run with scissor + public DamageSource scissors() { + return this.scissors; @@ -41,7 +34,6 @@ index cc206ecff2d95f0398ca424c178a336ad80cc396..7afad362801082e5f2e3aceda864ad2a + return this.stonecutter; + } + // Purpur end - Stonecutter damage -+ + public DamageSource inFire() { return this.inFire; - } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/HungerMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch similarity index 62% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/HungerMobEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch index 5f0d43e75..ea284de7b 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/HungerMobEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/HungerMobEffect.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/effect/HungerMobEffect.java b/net/minecraft/world/effect/HungerMobEffect.java -index 0890694ae96b6cd60079c34066e7a6e288f038e8..6c0e6bd2a171edc57dec71af178764454de73313 100644 --- a/net/minecraft/world/effect/HungerMobEffect.java +++ b/net/minecraft/world/effect/HungerMobEffect.java -@@ -12,7 +12,7 @@ class HungerMobEffect extends MobEffect { +@@ -12,7 +_,7 @@ @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { if (entity instanceof Player player) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/PoisonMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch similarity index 63% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/PoisonMobEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch index 732885e5d..0e8d7e3f7 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/PoisonMobEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/PoisonMobEffect.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/effect/PoisonMobEffect.java b/net/minecraft/world/effect/PoisonMobEffect.java -index 75327fd96858fd508ea63a6983e5cbc655a8800f..73cfc61ac3f8e33e6b9f4fd08a292266c0adb535 100644 --- a/net/minecraft/world/effect/PoisonMobEffect.java +++ b/net/minecraft/world/effect/PoisonMobEffect.java -@@ -12,8 +12,8 @@ public class PoisonMobEffect extends MobEffect { +@@ -12,8 +_,8 @@ @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch similarity index 57% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch index 9e3889987..f19f319af 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/RegenerationMobEffect.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/effect/RegenerationMobEffect.java b/net/minecraft/world/effect/RegenerationMobEffect.java -index 76cffa4d4d18d6c04749d941dbdf5eb60aed4095..81481267a1577721dcc405f39a4c350bd59ac9a2 100644 --- a/net/minecraft/world/effect/RegenerationMobEffect.java +++ b/net/minecraft/world/effect/RegenerationMobEffect.java -@@ -11,7 +11,7 @@ class RegenerationMobEffect extends MobEffect { +@@ -11,7 +_,7 @@ @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { if (entity.getHealth() < entity.getMaxHealth()) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/SaturationMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch similarity index 67% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/SaturationMobEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch index 27fca132e..f2d21d380 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/SaturationMobEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/SaturationMobEffect.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/effect/SaturationMobEffect.java b/net/minecraft/world/effect/SaturationMobEffect.java -index c192165910f6b139df6f604d0bce989061efa9cb..622c23f4570d07de8bee9623bf900aabb3331ded 100644 --- a/net/minecraft/world/effect/SaturationMobEffect.java +++ b/net/minecraft/world/effect/SaturationMobEffect.java -@@ -16,7 +16,8 @@ class SaturationMobEffect extends InstantenousMobEffect { +@@ -16,7 +_,8 @@ int oldFoodLevel = player.getFoodData().foodLevel; org.bukkit.event.entity.FoodLevelChangeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(player, amplifier + 1 + oldFoodLevel); if (!event.isCancelled()) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/WitherMobEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch similarity index 51% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/WitherMobEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch index 9d523a26c..767637659 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/effect/WitherMobEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/effect/WitherMobEffect.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/effect/WitherMobEffect.java b/net/minecraft/world/effect/WitherMobEffect.java -index 1fc9e1ad541c46124183a401b2a7d99aea69cecf..881271f0bc77a8a8a7d31daad9a8188bebaca67b 100644 --- a/net/minecraft/world/effect/WitherMobEffect.java +++ b/net/minecraft/world/effect/WitherMobEffect.java -@@ -12,7 +12,7 @@ public class WitherMobEffect extends MobEffect { +@@ -12,7 +_,7 @@ @Override public boolean applyEffectTick(ServerLevel level, LivingEntity entity, int amplifier) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch similarity index 82% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Entity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index a9964746d..331145e19 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index c6f1dd8b22156c8e2707c06c0ebe53f22913c31b..1d8ba25d542c49a687414a8b6d1d2fa16ca695d5 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -148,6 +148,7 @@ import org.jetbrains.annotations.Contract; +@@ -148,6 +_,7 @@ import org.slf4j.Logger; public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, ScoreHolder, DataComponentGetter, ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity, ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerEntity { // Paper - rewrite chunk system // Paper - optimise entity tracker @@ -16,7 +8,7 @@ index c6f1dd8b22156c8e2707c06c0ebe53f22913c31b..1d8ba25d542c49a687414a8b6d1d2fa1 // 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 snapTo -@@ -280,8 +281,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -280,8 +_,9 @@ public double xOld; public double yOld; public double zOld; @@ -27,7 +19,7 @@ index c6f1dd8b22156c8e2707c06c0ebe53f22913c31b..1d8ba25d542c49a687414a8b6d1d2fa1 public int tickCount; private int remainingFireTicks; public boolean wasTouchingWater; -@@ -315,8 +317,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -315,13 +_,13 @@ public PortalProcessor portalProcess; public int portalCooldown; private boolean invulnerable; @@ -38,7 +30,13 @@ index c6f1dd8b22156c8e2707c06c0ebe53f22913c31b..1d8ba25d542c49a687414a8b6d1d2fa1 private boolean hasGlowingTag; private final Set tags = new io.papermc.paper.util.SizeLimitedSet<>(new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(), MAX_ENTITY_TAG_COUNT); // Paper - fully limit tag size - replace set impl private final double[] pistonDeltas = new double[]{0.0, 0.0, 0.0}; -@@ -371,6 +373,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + private long pistonDeltasGameTime; +- protected EntityDimensions dimensions; ++ private EntityDimensions dimensions; + private float eyeHeight; + public boolean isInPowderSnow; + public boolean wasInPowderSnow; +@@ -371,6 +_,7 @@ public long activatedTick = Integer.MIN_VALUE; public boolean isTemporarilyActive; public long activatedImmunityTick = Integer.MIN_VALUE; @@ -46,7 +44,7 @@ index c6f1dd8b22156c8e2707c06c0ebe53f22913c31b..1d8ba25d542c49a687414a8b6d1d2fa1 public void inactiveTick() { } -@@ -533,10 +536,21 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -533,10 +_,21 @@ } // Paper end - optimise entity tracker @@ -68,7 +66,7 @@ index c6f1dd8b22156c8e2707c06c0ebe53f22913c31b..1d8ba25d542c49a687414a8b6d1d2fa1 this.position = Vec3.ZERO; this.blockPosition = BlockPos.ZERO; this.chunkPosition = ChunkPos.ZERO; -@@ -911,6 +925,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -911,6 +_,7 @@ && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage @@ -76,7 +74,7 @@ index c6f1dd8b22156c8e2707c06c0ebe53f22913c31b..1d8ba25d542c49a687414a8b6d1d2fa1 this.onBelowWorld(); } } -@@ -1889,7 +1904,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1889,7 +_,7 @@ } public boolean fireImmune() { @@ -85,7 +83,16 @@ index c6f1dd8b22156c8e2707c06c0ebe53f22913c31b..1d8ba25d542c49a687414a8b6d1d2fa1 } public boolean causeFallDamage(double fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2585,6 +2600,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1964,7 +_,7 @@ + return this.isInWater() || flag; + } + +- public void updateInWaterStateAndDoWaterCurrentPushing() { ++ void updateInWaterStateAndDoWaterCurrentPushing() { + if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { + this.wasTouchingWater = false; + } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) { +@@ -2585,6 +_,11 @@ output.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -97,7 +104,7 @@ index c6f1dd8b22156c8e2707c06c0ebe53f22913c31b..1d8ba25d542c49a687414a8b6d1d2fa1 } catch (Throwable var7) { CrashReport crashReport = CrashReport.forThrowable(var7, "Saving entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being saved"); -@@ -2705,6 +2725,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2705,6 +_,9 @@ } freezeLocked = input.getBooleanOr("Paper.FreezeLock", false); // Paper end @@ -107,7 +114,7 @@ index c6f1dd8b22156c8e2707c06c0ebe53f22913c31b..1d8ba25d542c49a687414a8b6d1d2fa1 } catch (Throwable var7) { CrashReport crashReport = CrashReport.forThrowable(var7, "Loading entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); -@@ -2983,6 +3006,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2983,6 +_,7 @@ if (this.isAlive() && this instanceof Leashable leashable2) { if (leashable2.getLeashHolder() == player) { if (!this.level().isClientSide()) { @@ -115,7 +122,7 @@ index c6f1dd8b22156c8e2707c06c0ebe53f22913c31b..1d8ba25d542c49a687414a8b6d1d2fa1 // Paper start - EntityUnleashEvent if (!org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerUnleashEntityEvent( leashable2, player, hand, !player.hasInfiniteMaterials(), true -@@ -3389,15 +3413,18 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3389,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } @@ -135,7 +142,7 @@ index c6f1dd8b22156c8e2707c06c0ebe53f22913c31b..1d8ba25d542c49a687414a8b6d1d2fa1 } } } -@@ -3602,7 +3629,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3602,7 +_,7 @@ } public int getMaxAirSupply() { @@ -144,7 +151,7 @@ index c6f1dd8b22156c8e2707c06c0ebe53f22913c31b..1d8ba25d542c49a687414a8b6d1d2fa1 } public int getAirSupply() { -@@ -4156,7 +4183,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4156,7 +_,7 @@ // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -153,7 +160,7 @@ index c6f1dd8b22156c8e2707c06c0ebe53f22913c31b..1d8ba25d542c49a687414a8b6d1d2fa1 } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4681,6 +4708,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4681,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -166,7 +173,7 @@ index c6f1dd8b22156c8e2707c06c0ebe53f22913c31b..1d8ba25d542c49a687414a8b6d1d2fa1 // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { -@@ -5107,7 +5140,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5107,7 +_,7 @@ } public float maxUpStep() { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntitySelector.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch similarity index 62% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntitySelector.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch index 68fa69d86..ff1e039a1 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntitySelector.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntitySelector.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/EntitySelector.java b/net/minecraft/world/entity/EntitySelector.java -index 15daba9062d54a5bdf335c3645a3227ccb5a8e06..1842cbe25cc0f9be937caf0a78e915bd3d6ea1e5 100644 --- a/net/minecraft/world/entity/EntitySelector.java +++ b/net/minecraft/world/entity/EntitySelector.java -@@ -28,6 +28,8 @@ public final class EntitySelector { +@@ -28,6 +_,8 @@ 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 - Ability to control player's insomnia and phantoms diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntityType.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch similarity index 72% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntityType.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch index d285b4e61..6bd4281b3 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/EntityType.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch @@ -1,14 +1,15 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/EntityType.java b/net/minecraft/world/entity/EntityType.java -index 96e1f8f40a0af4350155f192ac2126b523c9f0f5..9950fccc0a708e701b81fcabc9e8f370e6d3a19d 100644 --- a/net/minecraft/world/entity/EntityType.java +++ b/net/minecraft/world/entity/EntityType.java -@@ -1105,6 +1105,16 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -1089,7 +_,7 @@ + @Nullable + private Component description; + private final Optional> lootTable; +- public EntityDimensions dimensions; ++ private final EntityDimensions dimensions; + private final float spawnDimensionsScale; + private final FeatureFlagSet requiredFeatures; + +@@ -1105,6 +_,16 @@ return register(vanillaEntityId(key), builder); } @@ -25,7 +26,7 @@ index 96e1f8f40a0af4350155f192ac2126b523c9f0f5..9950fccc0a708e701b81fcabc9e8f370 public static ResourceLocation getKey(EntityType entityType) { return BuiltInRegistries.ENTITY_TYPE.getKey(entityType); } -@@ -1335,6 +1345,16 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -1335,6 +_,16 @@ return this.category; } @@ -42,7 +43,7 @@ index 96e1f8f40a0af4350155f192ac2126b523c9f0f5..9950fccc0a708e701b81fcabc9e8f370 public String getDescriptionId() { return this.descriptionId; } -@@ -1394,7 +1414,11 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -1394,7 +_,11 @@ entity.load(input); }, // Paper end - Don't fire sync event during generation diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ExperienceOrb.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch similarity index 77% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ExperienceOrb.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch index f29255be9..9a0b557e5 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ExperienceOrb.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ExperienceOrb.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ExperienceOrb.java b/net/minecraft/world/entity/ExperienceOrb.java -index a62edee768c30c99213baa6bd736d67ae52b558c..c8354d46ed909090f7c15f396863bf7d73afcefa 100644 --- a/net/minecraft/world/entity/ExperienceOrb.java +++ b/net/minecraft/world/entity/ExperienceOrb.java -@@ -358,7 +358,7 @@ public class ExperienceOrb extends Entity { +@@ -358,7 +_,7 @@ public void playerTouch(Player entity) { if (entity instanceof ServerPlayer serverPlayer) { if (entity.takeXpDelay == 0 && new com.destroystokyo.paper.event.player.PlayerPickupExperienceEvent(serverPlayer.getBukkitEntity(), (org.bukkit.entity.ExperienceOrb) this.getBukkitEntity()).callEvent()) { // Paper - PlayerPickupExperienceEvent @@ -17,7 +9,7 @@ index a62edee768c30c99213baa6bd736d67ae52b558c..c8354d46ed909090f7c15f396863bf7d entity.take(this, 1); int i = this.repairPlayerItems(serverPlayer, this.getValue()); if (i > 0) { -@@ -374,7 +374,7 @@ public class ExperienceOrb extends Entity { +@@ -374,7 +_,7 @@ } private int repairPlayerItems(ServerPlayer player, int value) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/GlowSquid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch similarity index 50% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/GlowSquid.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch index 74e8e4466..384908afc 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/GlowSquid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java -index aab9adb8313c4b18279c7fd7500ef04bda09c6c1..f0c452ddc4b299a930de261722cc41a89aa78eeb 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java -@@ -27,6 +27,13 @@ public class GlowSquid extends Squid { +@@ -27,6 +_,13 @@ super(entityType, level); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch similarity index 85% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/LivingEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch index 31d06d740..59427016b 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/LivingEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 35d71978a3d360eed97feb66d1048bee337ef2b9..96e47e6145a4cce8c154a05f9b155c1ba74bfa6a 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -444,6 +444,12 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -444,6 +_,12 @@ if (d < 0.0) { double damagePerBlock = serverLevel1.getWorldBorder().getDamagePerBlock(); if (damagePerBlock > 0.0) { @@ -21,7 +13,7 @@ index 35d71978a3d360eed97feb66d1048bee337ef2b9..96e47e6145a4cce8c154a05f9b155c1b this.hurtServer(serverLevel1, this.damageSources().outOfBorder(), Math.max(1, Mth.floor(-d * damagePerBlock))); } } -@@ -456,10 +462,10 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -456,10 +_,10 @@ && (!flag || !((Player)this).getAbilities().invulnerable); if (flag1) { this.setAirSupply(this.decreaseAirSupply(this.getAirSupply())); @@ -34,7 +26,7 @@ index 35d71978a3d360eed97feb66d1048bee337ef2b9..96e47e6145a4cce8c154a05f9b155c1b } } else if (this.getAirSupply() < this.getMaxAirSupply()) { this.setAirSupply(this.increaseAirSupply(this.getAirSupply())); -@@ -1039,15 +1045,33 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -1039,14 +_,32 @@ if (lookingEntity != null) { ItemStack itemBySlot = this.getItemBySlot(EquipmentSlot.HEAD); EntityType type = lookingEntity.getType(); @@ -44,13 +36,15 @@ index 35d71978a3d360eed97feb66d1048bee337ef2b9..96e47e6145a4cce8c154a05f9b155c1b - || type == EntityType.PIGLIN_BRUTE && itemBySlot.is(Items.PIGLIN_HEAD) - || type == EntityType.CREEPER && itemBySlot.is(Items.CREEPER_HEAD)) { - d *= 0.5; +- } +- } + // Purpur start - Mob head visibility percent + if (type == EntityType.SKELETON && itemBySlot.is(Items.SKELETON_SKULL)) { + d *= lookingEntity.level().purpurConfig.skeletonHeadVisibilityPercent; + } + else if (type == EntityType.ZOMBIE && itemBySlot.is(Items.ZOMBIE_HEAD)) { + d *= lookingEntity.level().purpurConfig.zombieHeadVisibilityPercent; - } ++ } + else if ((type == EntityType.PIGLIN || type == EntityType.PIGLIN_BRUTE) && itemBySlot.is(Items.PIGLIN_HEAD)) { + d *= lookingEntity.level().purpurConfig.piglinHeadVisibilityPercent; + } @@ -58,8 +52,8 @@ index 35d71978a3d360eed97feb66d1048bee337ef2b9..96e47e6145a4cce8c154a05f9b155c1b + d *= lookingEntity.level().purpurConfig.creeperHeadVisibilityPercent; + } + // Purpur end - Mob head visibility percent - } - ++ } ++ + // Purpur start - Configurable mob blindness + if (lookingEntity instanceof LivingEntity entityliving) { + if (entityliving.hasEffect(MobEffects.BLINDNESS)) { @@ -70,11 +64,10 @@ index 35d71978a3d360eed97feb66d1048bee337ef2b9..96e47e6145a4cce8c154a05f9b155c1b + } + } + // Purpur end - Configurable mob blindness -+ + return d; } - -@@ -1093,6 +1117,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -1093,6 +_,7 @@ Iterator iterator = this.activeEffects.values().iterator(); while (iterator.hasNext()) { MobEffectInstance effect = iterator.next(); @@ -82,7 +75,7 @@ index 35d71978a3d360eed97feb66d1048bee337ef2b9..96e47e6145a4cce8c154a05f9b155c1b EntityPotionEffectEvent event = CraftEventFactory.callEntityPotionEffectChangeEvent(this, effect, null, cause, EntityPotionEffectEvent.Action.CLEARED); if (event.isCancelled()) { continue; -@@ -1417,6 +1442,24 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -1417,6 +_,24 @@ this.stopSleeping(); } @@ -107,7 +100,7 @@ index 35d71978a3d360eed97feb66d1048bee337ef2b9..96e47e6145a4cce8c154a05f9b155c1b this.noActionTime = 0; if (amount < 0.0F) { amount = 0.0F; -@@ -1678,10 +1721,10 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -1678,10 +_,10 @@ protected Player resolvePlayerResponsibleForDamage(DamageSource damageSource) { Entity entity = damageSource.getEntity(); if (entity instanceof Player player) { @@ -120,7 +113,7 @@ index 35d71978a3d360eed97feb66d1048bee337ef2b9..96e47e6145a4cce8c154a05f9b155c1b } else { this.lastHurtByPlayer = null; this.lastHurtByPlayerMemoryTime = 0; -@@ -1732,6 +1775,18 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -1732,6 +_,18 @@ } } @@ -139,7 +132,7 @@ index 35d71978a3d360eed97feb66d1048bee337ef2b9..96e47e6145a4cce8c154a05f9b155c1b final org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null; final EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemStack == null); -@@ -1907,6 +1962,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -1907,6 +_,7 @@ boolean flag = this.lastHurtByPlayerMemoryTime > 0; this.dropEquipment(level); // CraftBukkit - from below if (this.shouldDropLoot() && level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -147,7 +140,7 @@ index 35d71978a3d360eed97feb66d1048bee337ef2b9..96e47e6145a4cce8c154a05f9b155c1b this.dropFromLootTable(level, damageSource, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1915,6 +1971,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -1915,6 +_,7 @@ // Paper end this.dropCustomDeathLoot(level, damageSource, flag); this.clearEquipmentSlots = prev; // Paper @@ -155,7 +148,7 @@ index 35d71978a3d360eed97feb66d1048bee337ef2b9..96e47e6145a4cce8c154a05f9b155c1b } // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment -@@ -3109,6 +3166,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3109,6 +_,7 @@ float f = (float)(d * 10.0 - 3.0); if (f > 0.0F) { this.playSound(this.getFallDamageSound((int)f), 1.0F, 1.0F); @@ -163,16 +156,25 @@ index 35d71978a3d360eed97feb66d1048bee337ef2b9..96e47e6145a4cce8c154a05f9b155c1b this.hurt(this.damageSources().flyIntoWall(), f); } } -@@ -4508,6 +4566,12 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin - : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType()); +@@ -3628,7 +_,7 @@ + } } +- public boolean canGlide() { ++ protected boolean canGlide() { + if (!this.onGround() && !this.isPassenger() && !this.hasEffect(MobEffects.LEVITATION)) { + for (EquipmentSlot equipmentSlot : EquipmentSlot.VALUES) { + if (canGlideUsing(this.getItemBySlot(equipmentSlot), equipmentSlot)) { +@@ -4507,6 +_,12 @@ + ? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND) + : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType()); + } ++ + // Purpur start - Dispenser curse of binding protection + public @Nullable EquipmentSlot getEquipmentSlotForDispenserItem(ItemStack itemstack) { + return EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.BINDING_CURSE, itemstack) > 0 ? null : this.getEquipmentSlotForItem(itemstack); + } + // Purpur end - Dispenser curse of binding protection -+ + private static SlotAccess createEquipmentSlotAccess(LivingEntity entity, EquipmentSlot slot) { return slot != EquipmentSlot.HEAD && slot != EquipmentSlot.MAINHAND && slot != EquipmentSlot.OFFHAND - ? SlotAccess.forEquipmentSlot(entity, slot, itemStack -> itemStack.isEmpty() || entity.getEquipmentSlotForItem(itemStack) == slot) diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Mob.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch similarity index 71% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Mob.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch index 866f257ce..e8ab66d11 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/Mob.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index 0470c4bbf8be7e48ce8dfa4910c3b9f5ebb23360..9784ae86390748bf72e2cc75d67b99f766335ee8 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -139,6 +139,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -139,6 +_,7 @@ private BlockPos homePosition = BlockPos.ZERO; private int homeRadius = -1; public boolean aware = true; // CraftBukkit @@ -16,7 +8,7 @@ index 0470c4bbf8be7e48ce8dfa4910c3b9f5ebb23360..9784ae86390748bf72e2cc75d67b99f7 protected Mob(EntityType entityType, Level level) { super(entityType, level); -@@ -284,6 +285,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -284,6 +_,7 @@ target = null; } } @@ -24,13 +16,14 @@ index 0470c4bbf8be7e48ce8dfa4910c3b9f5ebb23360..9784ae86390748bf72e2cc75d67b99f7 this.target = target; return true; // CraftBukkit end -@@ -327,8 +329,28 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -327,7 +_,27 @@ } profilerFiller.pop(); +- } + incrementTicksSinceLastInteraction(); // Purpur - Entity lifespan - } - ++ } ++ + // Purpur start - Entity lifespan + private void incrementTicksSinceLastInteraction() { + ++this.ticksSinceLastInteraction; @@ -49,11 +42,10 @@ index 0470c4bbf8be7e48ce8dfa4910c3b9f5ebb23360..9784ae86390748bf72e2cc75d67b99f7 + } + } + // Purpur end - Entity lifespan -+ + @Override protected void playHurtSound(DamageSource source) { - this.resetAmbientSoundTime(); -@@ -427,6 +449,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -427,6 +_,7 @@ output.putBoolean("NoAI", this.isNoAi()); } output.putBoolean("Bukkit.Aware", this.aware); // CraftBukkit @@ -61,7 +53,7 @@ index 0470c4bbf8be7e48ce8dfa4910c3b9f5ebb23360..9784ae86390748bf72e2cc75d67b99f7 } @Override -@@ -454,6 +477,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -454,6 +_,7 @@ this.lootTableSeed = input.getLongOr("DeathLootTableSeed", 0L); this.setNoAi(input.getBooleanOr("NoAI", false)); this.aware = input.getBooleanOr("Bukkit.Aware", true); // CraftBukkit @@ -69,7 +61,7 @@ index 0470c4bbf8be7e48ce8dfa4910c3b9f5ebb23360..9784ae86390748bf72e2cc75d67b99f7 } @Override -@@ -1188,7 +1212,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1188,7 +_,7 @@ ); } @@ -78,7 +70,7 @@ index 0470c4bbf8be7e48ce8dfa4910c3b9f5ebb23360..9784ae86390748bf72e2cc75d67b99f7 return spawnGroupData; } -@@ -1525,6 +1549,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1525,6 +_,7 @@ this.playAttackSound(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch new file mode 100644 index 000000000..4cd99d012 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch @@ -0,0 +1,10 @@ +--- a/net/minecraft/world/entity/ai/attributes/RangedAttribute.java ++++ b/net/minecraft/world/entity/ai/attributes/RangedAttribute.java +@@ -29,6 +_,7 @@ + + @Override + public double sanitizeValue(double value) { ++ if (!org.purpurmc.purpur.PurpurConfig.clampAttributes) return Double.isNaN(value) ? this.minValue : value; // Purpur - Add attribute clamping and armor limit config + return Double.isNaN(value) ? this.minValue : Mth.clamp(value, this.minValue, this.maxValue); + } + } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch similarity index 73% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch index 74b7ad1fb..c457ae742 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/AcquirePoi.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -index b9174ae7e3a3e2de2d570b95ab5012ac3c3a2eda..67cbf9f5760fae5db6f31e64095cd1b6be6ade8e 100644 --- a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +++ b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -@@ -86,7 +86,7 @@ public class AcquirePoi { +@@ -86,7 +_,7 @@ }; // Paper start - optimise POI access final java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch similarity index 80% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch index 86393eba0..f90e63ebd 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java b/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java -index 296ecffbbce931b42c67ea523373a61cea23acf4..b2eec24be3635f2c19da9b147211fe6cb454c780 100644 --- a/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java +++ b/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java -@@ -55,7 +55,7 @@ public class InteractWithDoor { +@@ -55,7 +_,7 @@ Node nextNode = path.getNextNode(); BlockPos blockPos = previousNode.asBlockPos(); BlockState blockState = level.getBlockState(blockPos); @@ -17,7 +9,7 @@ index 296ecffbbce931b42c67ea523373a61cea23acf4..b2eec24be3635f2c19da9b147211fe6c DoorBlock doorBlock = (DoorBlock)blockState.getBlock(); if (!doorBlock.isOpen(blockState)) { // CraftBukkit start - entities opening doors -@@ -72,7 +72,7 @@ public class InteractWithDoor { +@@ -72,7 +_,7 @@ BlockPos blockPos1 = nextNode.asBlockPos(); BlockState blockState1 = level.getBlockState(blockPos1); @@ -26,7 +18,7 @@ index 296ecffbbce931b42c67ea523373a61cea23acf4..b2eec24be3635f2c19da9b147211fe6c DoorBlock doorBlock1 = (DoorBlock)blockState1.getBlock(); if (!doorBlock1.isOpen(blockState1)) { // CraftBukkit start - entities opening doors -@@ -118,7 +118,7 @@ public class InteractWithDoor { +@@ -118,7 +_,7 @@ iterator.remove(); } else { BlockState blockState = level.getBlockState(blockPos); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch similarity index 52% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch index 14a0a889d..2bbc2776e 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java b/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java -index 400e6d49144b3e5803901938dcd2ac4e52e9c131..45c45afeffcfba3558bdf46cbe39ff60004ffc01 100644 --- a/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java +++ b/net/minecraft/world/entity/ai/behavior/ShowTradesToPlayer.java -@@ -46,6 +46,7 @@ public class ShowTradesToPlayer extends Behavior { +@@ -46,6 +_,7 @@ @Override public boolean canStillUse(ServerLevel level, Villager entity, long gameTime) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch similarity index 63% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch index 2bff0ce20..6fbb7bf98 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java b/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java -index 6eaf0bd944349cd0c6084462ac385fa2caafe933..be59d0c27a83b329ec3f97c029cfb9c114e22472 100644 --- a/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java +++ b/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java -@@ -22,6 +22,7 @@ public class LlamaFollowCaravanGoal extends Goal { +@@ -22,6 +_,7 @@ @Override public boolean canUse() { @@ -16,7 +8,7 @@ index 6eaf0bd944349cd0c6084462ac385fa2caafe933..be59d0c27a83b329ec3f97c029cfb9c1 if (!this.llama.isLeashed() && !this.llama.inCaravan()) { List entities = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0, 4.0, 9.0), entity1 -> { EntityType type = entity1.getType(); -@@ -71,6 +72,7 @@ public class LlamaFollowCaravanGoal extends Goal { +@@ -71,6 +_,7 @@ @Override public boolean canContinueToUse() { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch similarity index 53% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch index 02b67d3bb..f623c03a9 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java b/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java -index 722f378bb3726200b6fe88948bf1e1d3514a7b5c..e337e22c2cf82b0c1cab3fe0a9ff894c0c718716 100644 --- a/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java +++ b/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java -@@ -116,9 +116,9 @@ public class RangedBowAttackGoal extends Go +@@ -116,9 +_,9 @@ } this.mob.lookAt(target, 30.0F, 30.0F); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch similarity index 71% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch index 98ef84e68..cb39bb4e0 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java b/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java -index 878d7813b3f2f52bef336c6d855d738bc2f83491..d0f94f065d2ecf6ca6b47ac49422ffa656a18f55 100644 --- a/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java +++ b/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java -@@ -58,7 +58,7 @@ public class RunAroundLikeCrazyGoal extends Goal { +@@ -58,7 +_,7 @@ if (firstPassenger instanceof Player player) { int temper = this.horse.getTemper(); int maxTemper = this.horse.getMaxTemper(); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch similarity index 66% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch index 812ee0dc0..b072c14f4 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/goal/SwellGoal.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/goal/SwellGoal.java b/net/minecraft/world/entity/ai/goal/SwellGoal.java -index 243a552f6f0c8c2bd25c0209c95e3bca08734711..38fd0196a0f5a90e39fa4eb8592f89bf6b88ccf5 100644 --- a/net/minecraft/world/entity/ai/goal/SwellGoal.java +++ b/net/minecraft/world/entity/ai/goal/SwellGoal.java -@@ -55,6 +55,14 @@ public class SwellGoal extends Goal { +@@ -55,6 +_,14 @@ this.creeper.setSwellDir(-1); } else { this.creeper.setSwellDir(1); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch similarity index 68% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch index d60183d9f..7e2366a32 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -index 066faa704338c573472381e1ebd063e0d52aaaa4..1f96fd5085bacb4c584576c7cb9f51e7898e9b03 100644 --- a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +++ b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -@@ -56,7 +56,7 @@ public class NearestBedSensor extends Sensor { +@@ -56,7 +_,7 @@ // Paper start - optimise POI access java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); // don't ask me why it's unbounded. ask mojang. diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch similarity index 59% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch index 5178b7d6b..df5fd519b 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ai/targeting/TargetingConditions.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -index 2f8920d8ee765d057a22d76f24f7d7dc1b0b17ca..6f0fcaeaba2fec2ad944d63550f0c3e29bd9133c 100644 --- a/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -@@ -64,6 +64,10 @@ public class TargetingConditions { +@@ -64,6 +_,10 @@ return false; } else if (this.selector != null && !this.selector.test(target, level)) { return false; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ambient/Bat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch similarity index 67% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ambient/Bat.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch index f768c9dbf..d6070948c 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ambient/Bat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/ambient/Bat.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java -index 912b099a51269f92f250c7d6094ad41817749f93..c1c9d056f5c78d26c777728c09b2481f9ccd1c3b 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java -@@ -233,7 +233,7 @@ public class Bat extends AmbientCreature { +@@ -233,7 +_,7 @@ } else { int maxLocalRawBrightness = level.getMaxLocalRawBrightness(pos); int i = 4; @@ -17,7 +9,7 @@ index 912b099a51269f92f250c7d6094ad41817749f93..c1c9d056f5c78d26c777728c09b2481f i = 7; } else if (randomSource.nextBoolean()) { return false; -@@ -245,6 +245,11 @@ public class Bat extends AmbientCreature { +@@ -245,6 +_,11 @@ } } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/AbstractCow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch similarity index 89% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/AbstractCow.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch index 44d2fd86d..3c0826a05 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/AbstractCow.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/AbstractCow.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/AbstractCow.java b/net/minecraft/world/entity/animal/AbstractCow.java -index dd8ea03ba823996a5c97562e357650ab34d0e32e..4e81bc7215c845b316bcd46ce29f49af7f986088 100644 --- a/net/minecraft/world/entity/animal/AbstractCow.java +++ b/net/minecraft/world/entity/animal/AbstractCow.java -@@ -39,7 +39,7 @@ public abstract class AbstractCow extends Animal { +@@ -39,7 +_,7 @@ this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(1, new PanicGoal(this, 2.0)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0)); @@ -17,7 +9,7 @@ index dd8ea03ba823996a5c97562e357650ab34d0e32e..4e81bc7215c845b316bcd46ce29f49af this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); -@@ -95,6 +95,10 @@ public abstract class AbstractCow extends Animal { +@@ -95,6 +_,10 @@ ItemStack itemStack = ItemUtils.createFilledResult(itemInHand, player, org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getItemStack())); // CraftBukkit player.setItemInHand(hand, itemStack); return InteractionResult.SUCCESS; @@ -28,7 +20,7 @@ index dd8ea03ba823996a5c97562e357650ab34d0e32e..4e81bc7215c845b316bcd46ce29f49af } else { return super.mobInteract(player, hand); } -@@ -104,4 +108,67 @@ public abstract class AbstractCow extends Animal { +@@ -104,4 +_,67 @@ public EntityDimensions getDefaultDimensions(Pose pose) { return this.isBaby() ? BABY_DIMENSIONS : super.getDefaultDimensions(pose); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Animal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch similarity index 82% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Animal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch index a639fe758..e8f8ff304 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Animal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Animal.java b/net/minecraft/world/entity/animal/Animal.java -index cdf44c2586db396f1afdcbae4174b8b4fb00f48e..235f6514328338d28c2bf967bcd06f1413f12c65 100644 --- a/net/minecraft/world/entity/animal/Animal.java +++ b/net/minecraft/world/entity/animal/Animal.java -@@ -143,7 +143,7 @@ public abstract class Animal extends AgeableMob { +@@ -143,7 +_,7 @@ ItemStack itemInHand = player.getItemInHand(hand); if (this.isFood(itemInHand)) { int age = this.getAge(); @@ -17,7 +9,7 @@ index cdf44c2586db396f1afdcbae4174b8b4fb00f48e..235f6514328338d28c2bf967bcd06f14 final ItemStack breedCopy = itemInHand.copy(); // Paper - Fix EntityBreedEvent copying this.usePlayerItem(player, hand, itemInHand); this.setInLove(serverPlayer, breedCopy); // Paper - Fix EntityBreedEvent copying -@@ -235,10 +235,20 @@ public abstract class Animal extends AgeableMob { +@@ -235,10 +_,20 @@ public void spawnChildFromBreeding(ServerLevel level, Animal mate) { AgeableMob breedOffspring = this.getBreedOffspring(level, mate); if (breedOffspring != null) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Bee.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch similarity index 79% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Bee.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch index 6fa75eacc..41eefdb1a 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Bee.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index d40954f03c865bfbc5beb308bbcf7b7c9ac48eb9..5588eb85a101f118fcaeb0a085f4d3b69498c72d 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -168,7 +168,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -168,7 +_,7 @@ // Paper end - Fix MC-167279 this.lookControl = new Bee.BeeLookControl(this); this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F); @@ -17,7 +9,7 @@ index d40954f03c865bfbc5beb308bbcf7b7c9ac48eb9..5588eb85a101f118fcaeb0a085f4d3b6 this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F); this.setPathfindingMalus(PathType.COCOA, -1.0F); this.setPathfindingMalus(PathType.FENCE, -1.0F); -@@ -366,7 +366,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -366,7 +_,7 @@ } public static boolean isNightOrRaining(Level level) { @@ -26,7 +18,7 @@ index d40954f03c865bfbc5beb308bbcf7b7c9ac48eb9..5588eb85a101f118fcaeb0a085f4d3b6 } public void setStayOutOfHiveCountdown(int stayOutOfHiveCountdown) { -@@ -389,7 +389,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -389,7 +_,7 @@ @Override protected void customServerAiStep(ServerLevel level) { boolean hasStung = this.hasStung(); @@ -35,7 +27,7 @@ index d40954f03c865bfbc5beb308bbcf7b7c9ac48eb9..5588eb85a101f118fcaeb0a085f4d3b6 this.underWaterTicks++; } else { this.underWaterTicks = 0; -@@ -399,6 +399,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -399,6 +_,7 @@ this.hurtServer(level, this.damageSources().drown(), 1.0F); } @@ -43,7 +35,7 @@ index d40954f03c865bfbc5beb308bbcf7b7c9ac48eb9..5588eb85a101f118fcaeb0a085f4d3b6 if (hasStung) { this.timeSinceSting++; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { -@@ -1133,6 +1134,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -1133,6 +_,7 @@ Bee.this.savedFlowerPos = optional.get(); Bee.this.navigation .moveTo(Bee.this.savedFlowerPos.getX() + 0.5, Bee.this.savedFlowerPos.getY() + 0.5, Bee.this.savedFlowerPos.getZ() + 0.5, 1.2F); @@ -51,7 +43,7 @@ index d40954f03c865bfbc5beb308bbcf7b7c9ac48eb9..5588eb85a101f118fcaeb0a085f4d3b6 return true; } else { Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60); -@@ -1179,6 +1181,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -1179,6 +_,7 @@ this.pollinating = false; Bee.this.navigation.stop(); Bee.this.remainingCooldownBeforeLocatingNewFlower = 200; @@ -59,7 +51,7 @@ index d40954f03c865bfbc5beb308bbcf7b7c9ac48eb9..5588eb85a101f118fcaeb0a085f4d3b6 } @Override -@@ -1225,6 +1228,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -1225,6 +_,7 @@ this.setWantedPos(); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Cat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch similarity index 70% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Cat.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch index 9eae81c68..b8bee71f9 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Cat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index 7d20de1741e5e9219dea84fe5692f31c05fa82a2..5b9d8c85f91396287b0deb4deac30e2c136cc461 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java -@@ -354,6 +354,14 @@ public class Cat extends TamableAnimal { +@@ -354,6 +_,14 @@ return this.isTame() && otherAnimal instanceof Cat cat && cat.isTame() && super.canMate(otherAnimal); } @@ -23,7 +15,7 @@ index 7d20de1741e5e9219dea84fe5692f31c05fa82a2..5b9d8c85f91396287b0deb4deac30e2c @Nullable @Override public SpawnGroupData finalizeSpawn( -@@ -452,7 +460,7 @@ public class Cat extends TamableAnimal { +@@ -452,7 +_,7 @@ } private void tryToTame(Player player) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Dolphin.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch similarity index 81% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Dolphin.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch index fd769ca9c..0e09ac94d 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Dolphin.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java -index 4bb273b11dbfbc6557c6771f79aa63f5f69d03cf..f4a6f17bb158146e7287ab46930cd57c0ffb9454 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java -@@ -74,6 +74,7 @@ public class Dolphin extends AgeableWaterCreature { +@@ -74,6 +_,7 @@ private static final boolean DEFAULT_GOT_FISH = false; @Nullable public BlockPos treasurePos; @@ -16,7 +8,7 @@ index 4bb273b11dbfbc6557c6771f79aa63f5f69d03cf..f4a6f17bb158146e7287ab46930cd57c public Dolphin(EntityType entityType, Level level) { super(entityType, level); -@@ -90,6 +91,7 @@ public class Dolphin extends AgeableWaterCreature { +@@ -90,6 +_,7 @@ this.setAirSupply(this.getMaxAirSupply()); this.setXRot(0.0F); SpawnGroupData spawnGroupData1 = Objects.requireNonNullElseGet(spawnGroupData, () -> new AgeableMob.AgeableMobGroupData(0.1F)); @@ -24,7 +16,7 @@ index 4bb273b11dbfbc6557c6771f79aa63f5f69d03cf..f4a6f17bb158146e7287ab46930cd57c return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData1); } -@@ -156,17 +158,19 @@ public class Dolphin extends AgeableWaterCreature { +@@ -156,17 +_,19 @@ protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); @@ -45,7 +37,7 @@ index 4bb273b11dbfbc6557c6771f79aa63f5f69d03cf..f4a6f17bb158146e7287ab46930cd57c } public static AttributeSupplier.Builder createAttributes() { -@@ -399,6 +403,7 @@ public class Dolphin extends AgeableWaterCreature { +@@ -399,6 +_,7 @@ @Override public boolean canUse() { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Fox.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch similarity index 75% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Fox.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch index 963475b67..134e6108c 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Fox.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Fox.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 517c546cfc8eca2191df57289e6a22ac64fc867c..354c7a41407fc6518965d09bfe3089676b6da794 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java -@@ -346,6 +346,11 @@ public class Fox extends Animal { +@@ -346,6 +_,11 @@ } private void setTargetGoals() { @@ -20,7 +12,7 @@ index 517c546cfc8eca2191df57289e6a22ac64fc867c..354c7a41407fc6518965d09bfe308967 if (this.getVariant() == Fox.Variant.RED) { this.targetSelector.addGoal(4, this.landTargetGoal); this.targetSelector.addGoal(4, this.turtleEggTargetGoal); -@@ -373,6 +378,7 @@ public class Fox extends Animal { +@@ -373,6 +_,7 @@ public void setVariant(Fox.Variant variant) { this.entityData.set(DATA_TYPE_ID, variant.getId()); @@ -28,10 +20,11 @@ index 517c546cfc8eca2191df57289e6a22ac64fc867c..354c7a41407fc6518965d09bfe308967 } @Nullable -@@ -703,6 +709,29 @@ public class Fox extends Animal { +@@ -702,6 +_,29 @@ + return slot == EquipmentSlot.MAINHAND; } // Paper end - ++ + // Purpur start - Tulips change fox type + @Override + public net.minecraft.world.InteractionResult mobInteract(Player player, net.minecraft.world.InteractionHand hand) { @@ -54,7 +47,6 @@ index 517c546cfc8eca2191df57289e6a22ac64fc867c..354c7a41407fc6518965d09bfe308967 + return super.mobInteract(player, hand); + } + // Purpur end - Tulips change fox type -+ + @Override // Paper start - Cancellable death event - protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(ServerLevel level, DamageSource damageSource) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/IronGolem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch similarity index 75% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/IronGolem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch index 0ed2f8b7c..322e86a71 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/IronGolem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java -index db309a1261778cc65da9b4bf5a962a372b83bba6..25e0438e1a98dc5f6aaabba8af2295cec871d6f1 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java -@@ -58,13 +58,26 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -58,13 +_,26 @@ private int remainingPersistentAngerTime; @Nullable private UUID persistentAngerTarget; @@ -35,7 +27,7 @@ index db309a1261778cc65da9b4bf5a962a372b83bba6..25e0438e1a98dc5f6aaabba8af2295ce this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9, 32.0F)); this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6, false)); -@@ -142,6 +155,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -142,6 +_,7 @@ protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); output.putBoolean("PlayerCreated", this.isPlayerCreated()); @@ -43,7 +35,7 @@ index db309a1261778cc65da9b4bf5a962a372b83bba6..25e0438e1a98dc5f6aaabba8af2295ce this.addPersistentAngerSaveData(output); } -@@ -149,6 +163,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -149,6 +_,7 @@ protected void readAdditionalSaveData(ValueInput input) { super.readAdditionalSaveData(input); this.setPlayerCreated(input.getBooleanOr("PlayerCreated", false)); @@ -51,7 +43,7 @@ index db309a1261778cc65da9b4bf5a962a372b83bba6..25e0438e1a98dc5f6aaabba8af2295ce this.readPersistentAngerSaveData(this.level(), input); } -@@ -268,6 +283,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -268,6 +_,7 @@ float f = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; this.playSound(SoundEvents.IRON_GOLEM_REPAIR, 1.0F, f); itemInHand.consume(1, player); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/MushroomCow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch similarity index 67% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/MushroomCow.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch index 1daf7b722..0666bfab4 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/MushroomCow.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index 1f82848c97c5b52d6c4225b07a895f00d20c7d6c..32f3d5f66fb61074a2f9db751c0b3e16af9cf3ce 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -199,6 +199,13 @@ public class MushroomCow extends AbstractCow implements Shearable { +@@ -199,6 +_,13 @@ level.playSound(null, this, SoundEvents.MOOSHROOM_SHEAR, soundSource, 1.0F, 1.0F); this.convertTo(EntityType.COW, ConversionParams.single(this, false, false), cow -> { level.sendParticles(ParticleTypes.EXPLOSION, this.getX(), this.getY(0.5), this.getZ(), 1, 0.0, 0.0, 0.0, 0.0); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Ocelot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch similarity index 56% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Ocelot.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch index 588499745..48b3a30ef 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Ocelot.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Ocelot.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index e8b184f2e1a98e565a50ce6ae6cab248d5a6e89b..a304a09eb20b84033ea9b84cf577749fe842fc57 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java -@@ -234,7 +234,7 @@ public class Ocelot extends Animal { +@@ -234,7 +_,7 @@ public boolean checkSpawnObstruction(LevelReader level) { if (level.isUnobstructed(this) && !level.containsAnyLiquid(this.getBoundingBox())) { BlockPos blockPos = this.blockPosition(); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Parrot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch similarity index 74% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Parrot.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch index 4c6ec70ad..aa96df2cb 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Parrot.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java -index 22d1e36dadd6a8cbf615335074426aaab6ea7d01..50d836960e6b2d7dae760ac648b5999d8c58b785 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java -@@ -159,6 +159,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -159,6 +_,7 @@ protected void registerGoals() { this.goalSelector.addGoal(0, new TamableAnimal.TamableAnimalPanicGoal(1.25)); this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -16,7 +8,7 @@ index 22d1e36dadd6a8cbf615335074426aaab6ea7d01..50d836960e6b2d7dae760ac648b5999d this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0, 5.0F, 1.0F)); -@@ -264,7 +265,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -264,7 +_,7 @@ } if (!this.level().isClientSide) { @@ -25,7 +17,7 @@ index 22d1e36dadd6a8cbf615335074426aaab6ea7d01..50d836960e6b2d7dae760ac648b5999d this.tame(player); this.level().broadcastEntityEvent(this, (byte)7); } else { -@@ -272,6 +273,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -272,6 +_,7 @@ } } @@ -33,7 +25,7 @@ index 22d1e36dadd6a8cbf615335074426aaab6ea7d01..50d836960e6b2d7dae760ac648b5999d return InteractionResult.SUCCESS; } else if (!itemInHand.is(ItemTags.PARROT_POISONOUS_FOOD)) { if (!this.isFlying() && this.isTame() && this.isOwnedBy(player)) { -@@ -296,7 +298,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -296,7 +_,7 @@ @Override public boolean isFood(ItemStack stack) { @@ -42,7 +34,7 @@ index 22d1e36dadd6a8cbf615335074426aaab6ea7d01..50d836960e6b2d7dae760ac648b5999d } public static boolean checkParrotSpawnRules( -@@ -311,13 +313,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -311,13 +_,13 @@ @Override public boolean canMate(Animal otherAnimal) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Pig.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch similarity index 69% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Pig.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch index 891c399f5..3758d8143 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Pig.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Pig.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index 155a51233895955d01c2ee73416e2daefc4dfd0f..858913db98c6f46867e5f5d3d1231e7f94b669ab 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java -@@ -142,6 +142,19 @@ public class Pig extends Animal implements ItemSteerable { +@@ -142,6 +_,19 @@ @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { boolean isFood = this.isFood(player.getItemInHand(hand)); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/PolarBear.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch similarity index 78% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/PolarBear.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch index d97ee5600..869d2910f 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/PolarBear.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java -index d727e8e93e466b9bb91cbb43b9c1bbbccc56d486..0cbe162c952fe3cba5c33284d766aea514d6a40b 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java -@@ -65,6 +65,29 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -65,6 +_,29 @@ super(entityType, level); } @@ -38,7 +30,7 @@ index d727e8e93e466b9bb91cbb43b9c1bbbccc56d486..0cbe162c952fe3cba5c33284d766aea5 @Nullable @Override public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { -@@ -73,7 +96,7 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -73,7 +_,7 @@ @Override public boolean isFood(ItemStack stack) { @@ -47,7 +39,7 @@ index d727e8e93e466b9bb91cbb43b9c1bbbccc56d486..0cbe162c952fe3cba5c33284d766aea5 } @Override -@@ -82,6 +105,12 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -82,6 +_,12 @@ this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(1, new PolarBear.PolarBearMeleeAttackGoal()); this.goalSelector.addGoal(1, new PanicGoal(this, 2.0, mob -> mob.isBaby() ? DamageTypeTags.PANIC_CAUSES : DamageTypeTags.PANIC_ENVIRONMENTAL_CAUSES)); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Rabbit.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch similarity index 73% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Rabbit.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch index 77dcd5136..ea0874b61 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Rabbit.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Rabbit.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index ac99590dad689f2cfffb9b9e2465f6a252d41e9c..880cb3bdbd389a798c202c4dd572bf2b74bc0847 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java -@@ -404,10 +404,23 @@ public class Rabbit extends Animal { +@@ -404,10 +_,23 @@ } this.setVariant(randomRabbitVariant); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/SnowGolem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch similarity index 81% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/SnowGolem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch index c038f3596..a3cb9e147 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/SnowGolem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index 1b3a020e35fb2f9a28be718415c51fde5b52d399..1a7c14f9307629386af0a62b3e19545728fa3a8d 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java -@@ -46,15 +46,27 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -46,15 +_,27 @@ private static final EntityDataAccessor DATA_PUMPKIN_ID = SynchedEntityData.defineId(SnowGolem.class, EntityDataSerializers.BYTE); private static final byte PUMPKIN_FLAG = 16; private static final boolean DEFAULT_PUMPKIN = true; @@ -38,7 +30,7 @@ index 1b3a020e35fb2f9a28be718415c51fde5b52d399..1a7c14f9307629386af0a62b3e195457 this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Mob.class, 10, true, false, (entity, level) -> entity instanceof Enemy)); -@@ -74,12 +86,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -74,12 +_,14 @@ protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); output.putBoolean("Pumpkin", this.hasPumpkin()); @@ -53,7 +45,7 @@ index 1b3a020e35fb2f9a28be718415c51fde5b52d399..1a7c14f9307629386af0a62b3e195457 } @Override -@@ -153,6 +167,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -153,6 +_,14 @@ } return InteractionResult.SUCCESS; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Squid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch similarity index 80% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Squid.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch index f5e33088d..83c0aed86 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/Squid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index 58e1bc90cbc32669fa6c66d214119f0c459ff38c..2e51e64991d326fc055520b6fefc76e80f7c2d97 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java -@@ -46,10 +46,29 @@ public class Squid extends AgeableWaterCreature { +@@ -46,10 +_,29 @@ public Squid(EntityType entityType, Level level) { super(entityType, level); @@ -39,7 +31,7 @@ index 58e1bc90cbc32669fa6c66d214119f0c459ff38c..2e51e64991d326fc055520b6fefc76e8 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); -@@ -127,6 +146,7 @@ public class Squid extends AgeableWaterCreature { +@@ -127,6 +_,7 @@ } if (this.isInWater()) { @@ -47,7 +39,7 @@ index 58e1bc90cbc32669fa6c66d214119f0c459ff38c..2e51e64991d326fc055520b6fefc76e8 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; -@@ -308,7 +328,7 @@ public class Squid extends AgeableWaterCreature { +@@ -308,7 +_,7 @@ int noActionTime = this.squid.getNoActionTime(); if (noActionTime > 100) { this.squid.movementVector = Vec3.ZERO; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch similarity index 64% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch index 1574db276..3552d2bfc 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/WaterAnimal.java b/net/minecraft/world/entity/animal/WaterAnimal.java -index 2b5e091b6ebe17e30d8d0e73999e19eed49e9a9f..6ff9ca735eba1c3376f3bc4916d5ab76af782de1 100644 --- a/net/minecraft/world/entity/animal/WaterAnimal.java +++ b/net/minecraft/world/entity/animal/WaterAnimal.java -@@ -76,8 +76,7 @@ public abstract class WaterAnimal extends PathfinderMob { +@@ -76,8 +_,7 @@ seaLevel = level.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(seaLevel); i = level.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(i); // Paper end - Make water animal spawn height configurable diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/goat/Goat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch similarity index 57% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/goat/Goat.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch index 458800dbc..71d967ea2 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/goat/Goat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/goat/Goat.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index 75af1b92a0a60cffa3317d83bd599a3d4d26f93c..d5e5ea2a20739b81742b1a5323d19f2d01baec25 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -396,6 +396,7 @@ public class Goat extends Animal { +@@ -396,6 +_,7 @@ // Paper start - Goat ram API public void ram(net.minecraft.world.entity.LivingEntity entity) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/horse/Llama.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch similarity index 67% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/horse/Llama.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch index 0a2a5671c..3a614d8c8 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/horse/Llama.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index 1e2b629641e5fa1040307461dbbf03ad2d75ba00..5e3382351b1b5728750534f64babc85c4da3ac54 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -78,6 +78,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -78,6 +_,7 @@ private Llama caravanHead; @Nullable public Llama caravanTail; // Paper @@ -16,7 +8,7 @@ index 1e2b629641e5fa1040307461dbbf03ad2d75ba00..5e3382351b1b5728750534f64babc85c public Llama(EntityType entityType, Level level) { super(entityType, level); -@@ -112,6 +113,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -112,6 +_,7 @@ super.addAdditionalSaveData(output); output.store("Variant", Llama.Variant.LEGACY_CODEC, this.getVariant()); output.putInt("Strength", this.getStrength()); @@ -24,7 +16,7 @@ index 1e2b629641e5fa1040307461dbbf03ad2d75ba00..5e3382351b1b5728750534f64babc85c } @Override -@@ -119,6 +121,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -119,6 +_,7 @@ this.setStrength(input.getIntOr("Strength", 0)); super.readAdditionalSaveData(input); this.setVariant(input.read("Variant", Llama.Variant.LEGACY_CODEC).orElse(Llama.Variant.DEFAULT)); @@ -32,7 +24,7 @@ index 1e2b629641e5fa1040307461dbbf03ad2d75ba00..5e3382351b1b5728750534f64babc85c } @Override -@@ -400,6 +403,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -400,6 +_,7 @@ public void leaveCaravan() { if (this.caravanHead != null) { @@ -40,7 +32,7 @@ index 1e2b629641e5fa1040307461dbbf03ad2d75ba00..5e3382351b1b5728750534f64babc85c this.caravanHead.caravanTail = null; } -@@ -407,6 +411,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -407,6 +_,7 @@ } public void joinCaravan(Llama caravanHead) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch similarity index 89% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch index d967009f9..a696b0e4b 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/wolf/Wolf.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java -index dca01e7e6af74bc6e26d4968ccdf0c34f8707b94..6fc2d5d558832dd55479deb9ad5984fbe81c9bee 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java -@@ -99,6 +99,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -99,6 +_,37 @@ EntityType type = entity.getType(); return type == EntityType.SHEEP || type == EntityType.RABBIT || type == EntityType.FOX; }; @@ -46,7 +38,7 @@ index dca01e7e6af74bc6e26d4968ccdf0c34f8707b94..6fc2d5d558832dd55479deb9ad5984fb 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; -@@ -121,12 +152,47 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -121,12 +_,47 @@ this.setPathfindingMalus(PathType.DANGER_POWDER_SNOW, -1.0F); } @@ -94,7 +86,7 @@ index dca01e7e6af74bc6e26d4968ccdf0c34f8707b94..6fc2d5d558832dd55479deb9ad5984fb this.goalSelector.addGoal(4, new LeapAtTargetGoal(this, 0.4F)); this.goalSelector.addGoal(5, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(6, new FollowOwnerGoal(this, 1.0, 10.0F, 2.0F)); -@@ -139,7 +205,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -139,7 +_,7 @@ this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, new HurtByTargetGoal(this).setAlertOthers()); this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); @@ -103,7 +95,7 @@ index dca01e7e6af74bc6e26d4968ccdf0c34f8707b94..6fc2d5d558832dd55479deb9ad5984fb 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)); -@@ -230,6 +296,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -230,6 +_,7 @@ protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); output.store("CollarColor", DyeColor.LEGACY_ID_CODEC, this.getCollarColor()); @@ -111,7 +103,7 @@ index dca01e7e6af74bc6e26d4968ccdf0c34f8707b94..6fc2d5d558832dd55479deb9ad5984fb VariantUtils.writeVariant(output, this.getVariant()); this.addPersistentAngerSaveData(output); this.getSoundVariant() -@@ -244,6 +311,10 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -244,6 +_,10 @@ super.readAdditionalSaveData(input); VariantUtils.readVariant(input, Registries.WOLF_VARIANT).ifPresent(this::setVariant); this.setCollarColor(input.read("CollarColor", DyeColor.LEGACY_ID_CODEC).orElse(DEFAULT_COLLAR_COLOR)); @@ -122,7 +114,7 @@ index dca01e7e6af74bc6e26d4968ccdf0c34f8707b94..6fc2d5d558832dd55479deb9ad5984fb this.readPersistentAngerSaveData(this.level(), input); input.read("sound_variant", ResourceKey.codec(Registries.WOLF_SOUND_VARIANT)) .flatMap(resourceKey -> this.registryAccess().lookupOrThrow(Registries.WOLF_SOUND_VARIANT).get((ResourceKey)resourceKey)) -@@ -268,6 +339,10 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -268,6 +_,10 @@ } this.setSoundVariant(WolfSoundVariants.pickRandomSoundVariant(this.registryAccess(), level.getRandom())); @@ -133,7 +125,7 @@ index dca01e7e6af74bc6e26d4968ccdf0c34f8707b94..6fc2d5d558832dd55479deb9ad5984fb return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData); } -@@ -318,6 +393,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -318,6 +_,11 @@ public void tick() { super.tick(); if (this.isAlive()) { @@ -145,7 +137,7 @@ index dca01e7e6af74bc6e26d4968ccdf0c34f8707b94..6fc2d5d558832dd55479deb9ad5984fb this.interestedAngleO = this.interestedAngle; if (this.isInterested()) { this.interestedAngle = this.interestedAngle + (1.0F - this.interestedAngle) * 0.4F; -@@ -519,13 +599,27 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -519,13 +_,27 @@ itemInHand.consume(1, player); this.tryToTame(player); return InteractionResult.SUCCESS_SERVER; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch similarity index 84% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch index 1ccac2db6..b58f13a85 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index a0e0fad40838fa7d835f31e5ce4ae3ab40e0bfa4..5bff703ae4f95091620dec5347246d7c0cbe5d5e 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -@@ -39,6 +39,24 @@ public class EndCrystal extends Entity { +@@ -39,6 +_,24 @@ this.setPos(x, y, z); } @@ -33,7 +25,7 @@ index a0e0fad40838fa7d835f31e5ce4ae3ab40e0bfa4..5bff703ae4f95091620dec5347246d7c @Override protected Entity.MovementEmission getMovementEmission() { return Entity.MovementEmission.NONE; -@@ -75,6 +93,8 @@ public class EndCrystal extends Entity { +@@ -75,6 +_,8 @@ } } // Paper end - Fix invulnerable end crystals @@ -42,7 +34,7 @@ index a0e0fad40838fa7d835f31e5ce4ae3ab40e0bfa4..5bff703ae4f95091620dec5347246d7c } @Override -@@ -115,15 +135,17 @@ public class EndCrystal extends Entity { +@@ -115,15 +_,17 @@ } // CraftBukkit end if (!damageSource.is(DamageTypeTags.IS_EXPLOSION)) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch similarity index 58% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch index 69d7a4e02..8d855a599 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 84d215a498d9bf6f1232bf4af5a4a98d3ba9b131..3389c79e18601d582f95fe3765c291d46706d015 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -961,6 +961,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -961,6 +_,7 @@ @Override protected boolean canRide(Entity entity) { @@ -16,7 +8,7 @@ index 84d215a498d9bf6f1232bf4af5a4a98d3ba9b131..3389c79e18601d582f95fe3765c291d4 return false; } -@@ -996,7 +997,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -996,7 +_,7 @@ boolean flag = level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT); int i = 500; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch similarity index 76% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch index 1ffd9cbe5..ae41b8b7c 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 787b74c5aa02afc4ba95fa1cdaf6cc21b6554b56..c4a2fb6f08e5d6d69571f448c6ac9defaac3fcd3 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -79,6 +79,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -79,6 +_,7 @@ private static final TargetingConditions.Selector LIVING_ENTITY_SELECTOR = (entity, level) -> !entity.getType().is(EntityTypeTags.WITHER_FRIENDS) && entity.attackable(); private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0).selector(LIVING_ENTITY_SELECTOR); @@ -16,7 +8,7 @@ index 787b74c5aa02afc4ba95fa1cdaf6cc21b6554b56..c4a2fb6f08e5d6d69571f448c6ac9def public WitherBoss(EntityType entityType, Level level) { super(entityType, level); -@@ -87,6 +88,17 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -87,6 +_,17 @@ this.xpReward = 50; } @@ -34,7 +26,7 @@ index 787b74c5aa02afc4ba95fa1cdaf6cc21b6554b56..c4a2fb6f08e5d6d69571f448c6ac9def @Override protected PathNavigation createNavigation(Level level) { FlyingPathNavigation flyingPathNavigation = new FlyingPathNavigation(this, level); -@@ -119,6 +131,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -119,6 +_,7 @@ protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); output.putInt("Invul", this.getInvulnerableTicks()); @@ -42,7 +34,7 @@ index 787b74c5aa02afc4ba95fa1cdaf6cc21b6554b56..c4a2fb6f08e5d6d69571f448c6ac9def } @Override -@@ -128,6 +141,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -128,6 +_,7 @@ if (this.hasCustomName()) { this.bossEvent.setName(this.getDisplayName()); } @@ -50,7 +42,7 @@ index 787b74c5aa02afc4ba95fa1cdaf6cc21b6554b56..c4a2fb6f08e5d6d69571f448c6ac9def } @Override -@@ -271,7 +285,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -271,7 +_,7 @@ level.explode(this, this.getX(), this.getEyeY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); } // CraftBukkit end @@ -59,7 +51,7 @@ index 787b74c5aa02afc4ba95fa1cdaf6cc21b6554b56..c4a2fb6f08e5d6d69571f448c6ac9def // CraftBukkit start - Use relative location for far away sounds // level.globalLevelEvent(1023, this.blockPosition(), 0); int viewDistance = level.getCraftServer().getViewDistance() * 16; -@@ -378,8 +392,10 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -378,8 +_,10 @@ } } @@ -72,7 +64,7 @@ index 787b74c5aa02afc4ba95fa1cdaf6cc21b6554b56..c4a2fb6f08e5d6d69571f448c6ac9def } this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); -@@ -576,6 +592,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { +@@ -576,6 +_,7 @@ @Override protected boolean canRide(Entity entity) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch similarity index 76% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch index 04c01ec2a..8a3b604f5 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java -index 46369e554be8c72e6fc2e6d58374dbfc77d94879..e2ffc9b4a95a7684a28b47ad93644c95f9eb5ec8 100644 --- a/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -91,10 +91,13 @@ public class ArmorStand extends LivingEntity { +@@ -91,10 +_,13 @@ public boolean canTickSetByAPI = false; private boolean noTickEquipmentDirty = false; // Paper end - Allow ArmorStands not to tick @@ -22,7 +14,7 @@ index 46369e554be8c72e6fc2e6d58374dbfc77d94879..e2ffc9b4a95a7684a28b47ad93644c95 } public ArmorStand(Level level, double x, double y, double z) { -@@ -521,6 +524,7 @@ public class ArmorStand extends LivingEntity { +@@ -521,6 +_,7 @@ // Paper start - Allow ArmorStands not to tick @Override public void tick() { @@ -30,7 +22,7 @@ index 46369e554be8c72e6fc2e6d58374dbfc77d94879..e2ffc9b4a95a7684a28b47ad93644c95 if (!this.canTick) { if (this.noTickEquipmentDirty) { this.noTickEquipmentDirty = false; -@@ -811,4 +815,18 @@ public class ArmorStand extends LivingEntity { +@@ -811,4 +_,18 @@ } } // Paper end diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/ItemEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch similarity index 81% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/ItemEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch index b4b1c6486..4ed5565e9 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/ItemEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java -index 51804b611f469f2ab53e455e8c633b867b00cc88..d650d4f34fde0682ab76360408f7ff6a7d4b4c3a 100644 --- a/net/minecraft/world/entity/item/ItemEntity.java +++ b/net/minecraft/world/entity/item/ItemEntity.java -@@ -56,6 +56,12 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -56,6 +_,12 @@ 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 @@ -21,7 +13,7 @@ index 51804b611f469f2ab53e455e8c633b867b00cc88..d650d4f34fde0682ab76360408f7ff6a public ItemEntity(EntityType entityType, Level level) { super(entityType, level); -@@ -342,7 +348,16 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -342,7 +_,16 @@ @Override public final boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) { @@ -39,7 +31,7 @@ index 51804b611f469f2ab53e455e8c633b867b00cc88..d650d4f34fde0682ab76360408f7ff6a return false; } else if (!level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && damageSource.getEntity() instanceof Mob) { return false; -@@ -521,6 +536,12 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -521,6 +_,12 @@ public void setItem(ItemStack stack) { this.getEntityData().set(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/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/PrimedTnt.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch similarity index 78% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/PrimedTnt.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch index 8c3893b63..39c0e7d9d 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/item/PrimedTnt.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/PrimedTnt.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java -index 17d54d38dcec39eefeb989cd576cc640a36e82f5..ef070f8a9ab3a4676e2141f7c0bc20a000d0cc3a 100644 --- a/net/minecraft/world/entity/item/PrimedTnt.java +++ b/net/minecraft/world/entity/item/PrimedTnt.java -@@ -238,4 +238,32 @@ public class PrimedTnt extends Entity implements TraceableEntity { +@@ -238,4 +_,32 @@ return !this.level().paperConfig().fixes.preventTntFromMovingInWater && super.isPushedByFluid(); } // Paper end - Option to prevent TNT from moving in water diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch similarity index 75% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch index a62e45dcf..10ddc966a 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 894a3d988d0530d42d3a282b61cdb445a0f820ad..4e14f1a9ee22d08065a3e971c2aecc9363ebff13 100644 --- a/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java -@@ -158,10 +158,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -158,10 +_,7 @@ this.reassessWeaponGoal(); this.setCanPickUpLoot(this.level().paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.skeletons || random.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper - Add world settings for mobs picking up loot if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { @@ -20,7 +12,7 @@ index 894a3d988d0530d42d3a282b61cdb445a0f820ad..4e14f1a9ee22d08065a3e971c2aecc93 this.setItemSlot(EquipmentSlot.HEAD, new ItemStack(random.nextFloat() < 0.1F ? Blocks.JACK_O_LANTERN : Blocks.CARVED_PUMPKIN)); this.setDropChance(EquipmentSlot.HEAD, 0.0F); } -@@ -209,7 +206,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -209,7 +_,7 @@ double squareRoot = Math.sqrt(d * d + d2 * d2); if (this.level() instanceof ServerLevel serverLevel) { Projectile.Delayed delayedEntity = Projectile.spawnProjectileUsingShootDelayed( // Paper - delayed diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Creeper.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch similarity index 86% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Creeper.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch index 50e684451..b31fc41ee 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Creeper.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java -index eabc778ba06c14f3020391b9850ae1a283ecf106..d82fe9db4d074a0484d8c5e2998ff9faf87dfd6e 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java -@@ -55,6 +55,7 @@ public class Creeper extends Monster { +@@ -55,6 +_,7 @@ public int explosionRadius = 3; private int droppedSkulls; public @Nullable Entity entityIgniter; // CraftBukkit @@ -16,7 +8,7 @@ index eabc778ba06c14f3020391b9850ae1a283ecf106..d82fe9db4d074a0484d8c5e2998ff9fa public Creeper(EntityType entityType, Level level) { super(entityType, level); -@@ -158,6 +159,27 @@ public class Creeper extends Monster { +@@ -158,6 +_,27 @@ return false; // CraftBukkit } @@ -44,7 +36,7 @@ index eabc778ba06c14f3020391b9850ae1a283ecf106..d82fe9db4d074a0484d8c5e2998ff9fa @Override public SoundEvent getHurtSound(DamageSource damageSource) { return SoundEvents.CREEPER_HURT; -@@ -240,14 +262,16 @@ public class Creeper extends Monster { +@@ -240,14 +_,16 @@ } public void explodeCreeper() { @@ -63,7 +55,7 @@ index eabc778ba06c14f3020391b9850ae1a283ecf106..d82fe9db4d074a0484d8c5e2998ff9fa this.spawnLingeringCloud(); this.triggerOnDeathMobEffects(serverLevel, Entity.RemovalReason.KILLED); this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.EXPLODE); // CraftBukkit - add Bukkit remove cause -@@ -258,6 +282,7 @@ public class Creeper extends Monster { +@@ -258,6 +_,7 @@ } // CraftBukkit end } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Drowned.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch similarity index 83% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Drowned.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch index f5e0859ce..89708242d 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Drowned.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Drowned.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java -index f42f9c232fa588835654de0fdea36b9cdfa34571..84c6b5552f2b408b7b9f24a85b8c4fd54310c349 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java -@@ -83,10 +83,23 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -83,10 +_,23 @@ this.goalSelector.addGoal(2, new Drowned.DrownedAttackGoal(this, 1.0, false)); this.goalSelector.addGoal(5, new Drowned.DrownedGoToBeachGoal(this, 1.0)); this.goalSelector.addGoal(6, new Drowned.DrownedSwimUpGoal(this, 1.0, this.level().getSeaLevel())); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/EnderMan.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch similarity index 81% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/EnderMan.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch index c0f00350f..10b7ca4d0 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/EnderMan.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/EnderMan.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index 4edd94ac765d2ab107612504b67e6e07da609313..ddb916856cff7179eca474738dfbba910408434c 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -101,7 +101,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -101,7 +_,7 @@ this.goalSelector.addGoal(11, new EnderMan.EndermanTakeBlockGoal(this)); this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); @@ -17,7 +9,7 @@ index 4edd94ac765d2ab107612504b67e6e07da609313..ddb916856cff7179eca474738dfbba91 this.targetSelector.addGoal(4, new ResetUniversalAngerTargetGoal<>(this, false)); } -@@ -216,7 +216,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -216,7 +_,7 @@ boolean isBeingStaredBy(Player player) { // Paper start - EndermanAttackPlayerEvent @@ -26,7 +18,7 @@ index 4edd94ac765d2ab107612504b67e6e07da609313..ddb916856cff7179eca474738dfbba91 final com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent event = new com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent((org.bukkit.entity.Enderman) getBukkitEntity(), (org.bukkit.entity.Player) player.getBukkitEntity()); event.setCancelled(!shouldAttack); return event.callEvent(); -@@ -372,6 +372,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -372,6 +_,7 @@ public boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) { if (this.isInvulnerableTo(level, damageSource)) { return false; @@ -34,7 +26,7 @@ index 4edd94ac765d2ab107612504b67e6e07da609313..ddb916856cff7179eca474738dfbba91 } else { AbstractThrownPotion abstractThrownPotion1 = damageSource.getDirectEntity() instanceof AbstractThrownPotion abstractThrownPotion ? abstractThrownPotion -@@ -388,6 +389,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -388,6 +_,7 @@ } else { boolean flag = abstractThrownPotion1 != null && this.hurtWithCleanWater(level, damageSource, abstractThrownPotion1, amount); @@ -42,7 +34,7 @@ index 4edd94ac765d2ab107612504b67e6e07da609313..ddb916856cff7179eca474738dfbba91 if (this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.INDIRECT)) { // Paper - EndermanEscapeEvent for (int i = 0; i < 64; i++) { if (this.teleport()) { -@@ -431,7 +433,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -431,7 +_,7 @@ @Override public boolean requiresCustomPersistence() { @@ -51,7 +43,7 @@ index 4edd94ac765d2ab107612504b67e6e07da609313..ddb916856cff7179eca474738dfbba91 } static class EndermanFreezeWhenLookedAt extends Goal { -@@ -475,6 +477,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -475,6 +_,7 @@ @Override public boolean canUse() { @@ -59,7 +51,7 @@ index 4edd94ac765d2ab107612504b67e6e07da609313..ddb916856cff7179eca474738dfbba91 return this.enderman.getCarriedBlock() != null && getServerLevel(this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0; -@@ -624,6 +627,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -624,6 +_,7 @@ @Override public boolean canUse() { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Endermite.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch similarity index 74% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Endermite.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch index 004f95aaa..b8e9ee681 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Endermite.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java -index f448aac89c6125246c730a71e7ee21c8168d7003..50eefb77a6c346b2643324f526c5c01d5e667ce4 100644 --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java -@@ -30,12 +30,23 @@ public class Endermite extends Monster { +@@ -30,12 +_,23 @@ private static final int MAX_LIFE = 2400; private static final int DEFAULT_LIFE = 0; public int life = 0; @@ -32,7 +24,7 @@ index f448aac89c6125246c730a71e7ee21c8168d7003..50eefb77a6c346b2643324f526c5c01d @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); -@@ -81,12 +92,14 @@ public class Endermite extends Monster { +@@ -81,12 +_,14 @@ protected void readAdditionalSaveData(ValueInput input) { super.readAdditionalSaveData(input); this.life = input.getIntOr("Lifetime", 0); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Monster.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch similarity index 68% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Monster.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch index 0636327b8..c833d4fc6 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Monster.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Monster.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Monster.java b/net/minecraft/world/entity/monster/Monster.java -index 5ef9566b16a4d0300ee45a993c46e734db156416..04d5910d736dee2a88a2602f4a98495459277157 100644 --- a/net/minecraft/world/entity/monster/Monster.java +++ b/net/minecraft/world/entity/monster/Monster.java -@@ -88,6 +88,14 @@ public abstract class Monster extends PathfinderMob implements Enemy { +@@ -88,6 +_,14 @@ } public static boolean isDarkEnoughToSpawn(ServerLevelAccessor level, BlockPos pos, RandomSource random) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Phantom.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch similarity index 62% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Phantom.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch index 01b01b218..e09de7e71 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Phantom.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Phantom.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..2abb55d84507fd29817760cb0068dd083f7f1c37 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java -@@ -174,7 +174,11 @@ public class Phantom extends Mob implements Enemy { +@@ -174,7 +_,11 @@ ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData ) { this.anchorPoint = this.blockPosition().above(5); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Ravager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch similarity index 73% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Ravager.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch index b8168f8a8..e15c2cd73 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Ravager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index 9d84bf2cffee25404eebbefdc9cc3f37ebc386b0..2b9a72b8742bf13c69df5ce0c905d47a92b9d8bc 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java -@@ -74,6 +74,7 @@ public class Ravager extends Raider { +@@ -74,6 +_,7 @@ protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -16,7 +8,7 @@ index 9d84bf2cffee25404eebbefdc9cc3f37ebc386b0..2b9a72b8742bf13c69df5ce0c905d47a this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); -@@ -154,7 +155,7 @@ public class Ravager extends Raider { +@@ -154,7 +_,7 @@ )) { BlockState blockState = serverLevel.getBlockState(blockPos); Block block = blockState.getBlock(); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Shulker.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch similarity index 83% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Shulker.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch index 33f98754a..e98033505 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Shulker.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch @@ -1,14 +1,15 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index f667fc5ff1ea4149cb25608e0d12f9f73f86095e..ff16e0dd78687f4c9a0bce5ede4eda30e2a06263 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -94,6 +94,21 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -80,7 +_,7 @@ + Vec3i unitVec3i = Direction.SOUTH.getUnitVec3i(); + return new Vector3f(unitVec3i.getX(), unitVec3i.getY(), unitVec3i.getZ()); + }); +- public static final float MAX_SCALE = 3.0F; ++ private static final float MAX_SCALE = 3.0F; + private float currentPeekAmountO; + private float currentPeekAmount; + @Nullable +@@ -94,6 +_,21 @@ this.lookControl = new Shulker.ShulkerLookControl(this); } @@ -30,7 +31,7 @@ index f667fc5ff1ea4149cb25608e0d12f9f73f86095e..ff16e0dd78687f4c9a0bce5ede4eda30 @Override protected void registerGoals() { this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F, 0.02F, true)); -@@ -461,11 +476,21 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -461,11 +_,21 @@ private void hitByShulkerBullet() { Vec3 vec3 = this.position(); AABB boundingBox = this.getBoundingBox(); @@ -56,7 +57,7 @@ index f667fc5ff1ea4149cb25608e0d12f9f73f86095e..ff16e0dd78687f4c9a0bce5ede4eda30 if (shulker != null) { shulker.setVariant(this.getVariant()); shulker.snapTo(vec3); -@@ -573,7 +598,7 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -573,7 +_,7 @@ } public Optional getVariant() { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Skeleton.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch similarity index 87% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Skeleton.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch index 0f671c3ec..5cc1ae280 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Skeleton.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Skeleton.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java -index 743bc2986b962d4aaef00d2e457117f375ca65c7..d53364e33bd9e15ad419f306d7cc2e09c9de242c 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -140,4 +140,64 @@ public class Skeleton extends AbstractSkeleton { +@@ -140,4 +_,64 @@ this.spawnAtLocation(level, Items.SKELETON_SKULL); } } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Strider.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch similarity index 68% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Strider.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch index 3eeaefcf1..9d99390b1 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Strider.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Strider.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java -index afa584e2aba6bebfb2dd343215b043c983281853..4b9e60d930bc3a4bfe9aad2e81391e57cfc45d40 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java -@@ -392,6 +392,19 @@ public class Strider extends Animal implements ItemSteerable { +@@ -392,6 +_,19 @@ @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { boolean isFood = this.isFood(player.getItemInHand(hand)); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Vindicator.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch similarity index 58% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Vindicator.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch index 8ce49b799..26ace8b3e 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Vindicator.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Vindicator.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index e12643c0a1aa9608c34cab96d5c04abc60428322..86886889f4a2859eaf35c57b5130b2b10143a368 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -132,6 +132,11 @@ public class Vindicator extends AbstractIllager { +@@ -131,6 +_,11 @@ RandomSource random = level.getRandom(); this.populateDefaultEquipmentSlots(random, difficulty); this.populateDefaultEquipmentEnchantments(level, random, difficulty); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Zombie.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch similarity index 82% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Zombie.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch index 25de0174e..c07653823 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/Zombie.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Zombie.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index a23607874a72723914cbfeea0ad1c51236c044d8..e8f54f358b0af0a6755912df7cceb2909da9f0a9 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java -@@ -117,7 +117,19 @@ public class Zombie extends Monster { +@@ -117,7 +_,19 @@ this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0)); this.targetSelector.addGoal(1, new HurtByTargetGoal(this).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); @@ -29,7 +21,7 @@ index a23607874a72723914cbfeea0ad1c51236c044d8..e8f54f358b0af0a6755912df7cceb290 this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } -@@ -551,10 +563,7 @@ public class Zombie extends Monster { +@@ -551,10 +_,7 @@ } if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch similarity index 68% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch index 5484ae239..44370007d 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index bc80d5b302f24974ce89db502b41d659457dd98c..75a8f3ecaec5cdfe98aa8363326a8a2047ea75b1 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -129,10 +129,10 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -129,10 +_,10 @@ public InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); if (itemInHand.is(Items.GOLDEN_APPLE)) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch similarity index 66% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch index 0566e3306..cd7502ad9 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 822712eaff2f6c579d982734ab14a00c02182770..1be7c756d56cca63347d97f7896b491f3a343fa4 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -113,6 +113,12 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -113,6 +_,12 @@ this.maybeAlertOthers(); } @@ -21,16 +13,16 @@ index 822712eaff2f6c579d982734ab14a00c02182770..1be7c756d56cca63347d97f7896b491f super.customServerAiStep(level); } -@@ -160,6 +166,12 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -159,6 +_,12 @@ + this.playFirstAngerSoundIn = FIRST_ANGER_SOUND_DELAY.sample(this.random); this.ticksUntilNextAlert = ALERT_INTERVAL.sample(this.random); } - ++ + // Purpur start - Toggle for Zombified Piglin death always counting as player kill when angry + if (livingEntity instanceof Player player && this.level().purpurConfig.zombifiedPiglinCountAsPlayerKillWhenAngry) { + this.setLastHurtByPlayer(player, this.tickCount); + } + // Purpur end - Toggle for Zombified Piglin death always counting as player kill when angry -+ + return super.setTarget(livingEntity, reason); // CraftBukkit } - diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch similarity index 72% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch index cd5ce9108..ae53e80fd 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/monster/piglin/PiglinAi.java b/net/minecraft/world/entity/monster/piglin/PiglinAi.java -index 4b1a3772f9e6b9e4efcf11e14b0fb882512ec86d..2841c765b2bd804f08bd0e603b4b29cf8a801fab 100644 --- a/net/minecraft/world/entity/monster/piglin/PiglinAi.java +++ b/net/minecraft/world/entity/monster/piglin/PiglinAi.java -@@ -661,7 +661,10 @@ public class PiglinAi { +@@ -661,13 +_,23 @@ public static boolean isWearingSafeArmor(LivingEntity entity) { for (EquipmentSlot equipmentSlot : EquipmentSlotGroup.ARMOR) { @@ -20,17 +12,16 @@ index 4b1a3772f9e6b9e4efcf11e14b0fb882512ec86d..2841c765b2bd804f08bd0e603b4b29cf return true; } } -@@ -669,6 +672,13 @@ public class PiglinAi { + return false; } - ++ + // Purpur start - piglins ignore gold-trimmed armor + private static boolean isWearingGoldTrim(net.minecraft.world.item.ItemStack itemstack) { + net.minecraft.world.item.equipment.trim.ArmorTrim armorTrim = itemstack.getComponents().get(net.minecraft.core.component.DataComponents.TRIM); + return armorTrim != null && armorTrim.material().is(net.minecraft.world.item.equipment.trim.TrimMaterials.GOLD); + } + // Purpur end - piglins ignore gold-trimmed armor -+ + private static void stopWalking(Piglin piglin) { piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); - piglin.getNavigation().stop(); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/CatSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch similarity index 77% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/CatSpawner.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch index c8617abd0..9df36fcd7 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/CatSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/CatSpawner.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/npc/CatSpawner.java b/net/minecraft/world/entity/npc/CatSpawner.java -index e282b6ab6d0d1c11ee40f5f436bd50fa90ddc88b..d6ae13c19481ce33bfa0b6c9db63283009339d8c 100644 --- a/net/minecraft/world/entity/npc/CatSpawner.java +++ b/net/minecraft/world/entity/npc/CatSpawner.java -@@ -25,7 +25,7 @@ public class CatSpawner implements CustomSpawner { +@@ -25,7 +_,7 @@ if (spawnFriendlies && level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) { this.nextTick--; if (this.nextTick <= 0) { @@ -17,7 +9,7 @@ index e282b6ab6d0d1c11ee40f5f436bd50fa90ddc88b..d6ae13c19481ce33bfa0b6c9db632830 Player randomPlayer = level.getRandomPlayer(); if (randomPlayer != null) { RandomSource randomSource = level.random; -@@ -48,9 +48,12 @@ public class CatSpawner implements CustomSpawner { +@@ -48,9 +_,12 @@ } private void spawnInVillage(ServerLevel level, BlockPos pos) { @@ -33,7 +25,7 @@ index e282b6ab6d0d1c11ee40f5f436bd50fa90ddc88b..d6ae13c19481ce33bfa0b6c9db632830 if (entitiesOfClass.size() < 5) { this.spawnCat(pos, level, false); } -@@ -58,8 +61,11 @@ public class CatSpawner implements CustomSpawner { +@@ -58,8 +_,11 @@ } private void spawnInHut(ServerLevel level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/Villager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch similarity index 85% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/Villager.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch index 36b2c5fcf..d87abdef5 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/Villager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 43f16df230f87a43e249a58fc10ef2da517f22ee..ff4b73b83e96e0ac0b63922e6f72445cd96d2305 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -179,6 +179,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -178,6 +_,8 @@ MemoryModuleType.MEETING_POINT, (villager, poiType) -> poiType.is(PoiTypes.MEETING) ); @@ -17,7 +9,7 @@ index 43f16df230f87a43e249a58fc10ef2da517f22ee..ff4b73b83e96e0ac0b63922e6f72445c public Villager(EntityType entityType, Level level) { this(entityType, level, VillagerType.PLAINS); -@@ -197,6 +199,57 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -196,6 +_,57 @@ this.setVillagerData(this.getVillagerData().withType(villagerType).withProfession(level.registryAccess(), VillagerProfession.NONE)); } @@ -75,7 +67,7 @@ index 43f16df230f87a43e249a58fc10ef2da517f22ee..ff4b73b83e96e0ac0b63922e6f72445c @Override public Brain getBrain() { return (Brain)super.getBrain(); -@@ -293,11 +346,24 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -292,11 +_,24 @@ // Paper start - EAR 2 this.customServerAiStep(level, false); } @@ -102,7 +94,7 @@ index 43f16df230f87a43e249a58fc10ef2da517f22ee..ff4b73b83e96e0ac0b63922e6f72445c profilerFiller.pop(); if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; -@@ -369,6 +435,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -368,6 +_,7 @@ return InteractionResult.CONSUME; } @@ -110,7 +102,7 @@ index 43f16df230f87a43e249a58fc10ef2da517f22ee..ff4b73b83e96e0ac0b63922e6f72445c this.startTrading(player); } -@@ -505,7 +572,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -504,7 +_,7 @@ public void updateDemand() { for (MerchantOffer merchantOffer : this.getOffers()) { @@ -119,7 +111,7 @@ index 43f16df230f87a43e249a58fc10ef2da517f22ee..ff4b73b83e96e0ac0b63922e6f72445c } } -@@ -698,7 +765,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -697,7 +_,7 @@ @Override public boolean canBreed() { @@ -128,7 +120,7 @@ index 43f16df230f87a43e249a58fc10ef2da517f22ee..ff4b73b83e96e0ac0b63922e6f72445c } private boolean hungry() { -@@ -920,6 +987,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -919,6 +_,7 @@ } public void spawnGolemIfNeeded(ServerLevel serverLevel, long gameTime, int minVillagerAmount) { @@ -136,7 +128,7 @@ index 43f16df230f87a43e249a58fc10ef2da517f22ee..ff4b73b83e96e0ac0b63922e6f72445c if (this.wantsToSpawnGolem(gameTime)) { AABB aabb = this.getBoundingBox().inflate(10.0, 10.0, 10.0); List entitiesOfClass = serverLevel.getEntitiesOfClass(Villager.class, aabb); -@@ -993,6 +1061,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -992,6 +_,12 @@ @Override public void startSleeping(BlockPos pos) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch similarity index 69% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch index 65085d465..0c82ef476 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index c2573946dd1244eb5d1ef2be7823211064daa80d..93ed977260f369677028bbd8396862f344dfeaa3 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -60,6 +60,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -60,6 +_,13 @@ super(entityType, level); } @@ -22,7 +14,7 @@ index c2573946dd1244eb5d1ef2be7823211064daa80d..93ed977260f369677028bbd8396862f3 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -@@ -80,7 +87,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -80,7 +_,7 @@ this, new ItemStack(Items.MILK_BUCKET), SoundEvents.WANDERING_TRADER_REAPPEARED, @@ -31,7 +23,7 @@ index c2573946dd1244eb5d1ef2be7823211064daa80d..93ed977260f369677028bbd8396862f3 ) ); this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); -@@ -124,8 +131,10 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -124,8 +_,10 @@ return InteractionResult.CONSUME; } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch similarity index 72% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch index f6c87b90f..efaa61512 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTraderSpawner.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/npc/WanderingTraderSpawner.java b/net/minecraft/world/entity/npc/WanderingTraderSpawner.java -index fce3f0f81d3195045cdc9ad7320f1d92f033c36d..352f55882ea77e8d89942e6c58ef3b4b78eec887 100644 --- a/net/minecraft/world/entity/npc/WanderingTraderSpawner.java +++ b/net/minecraft/world/entity/npc/WanderingTraderSpawner.java -@@ -137,7 +137,17 @@ public class WanderingTraderSpawner implements CustomSpawner { +@@ -137,7 +_,17 @@ int i1 = pos.getX() + this.random.nextInt(maxDistance * 2) - maxDistance; int i2 = pos.getZ() + this.random.nextInt(maxDistance * 2) - maxDistance; int height = level.getHeight(Heightmap.Types.WORLD_SURFACE, i1, i2); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/player/Player.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch similarity index 85% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/player/Player.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch index f20f715e8..bce3db5c3 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/player/Player.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index abb19f08c736151fa5c6986e31eb4cf545073586..cc29c094f81f16e6b4d74877e31fabd4a0e62435 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java -@@ -219,11 +219,20 @@ public abstract class Player extends LivingEntity { +@@ -219,11 +_,20 @@ private int currentImpulseContextResetGraceTime = 0; 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 @@ -29,7 +21,7 @@ index abb19f08c736151fa5c6986e31eb4cf545073586..cc29c094f81f16e6b4d74877e31fabd4 @Override public org.bukkit.craftbukkit.entity.CraftHumanEntity getBukkitEntity() { return (org.bukkit.craftbukkit.entity.CraftHumanEntity) super.getBukkitEntity(); -@@ -287,6 +296,12 @@ public abstract class Player extends LivingEntity { +@@ -287,6 +_,12 @@ @Override public void tick() { @@ -42,7 +34,7 @@ index abb19f08c736151fa5c6986e31eb4cf545073586..cc29c094f81f16e6b4d74877e31fabd4 this.noPhysics = this.isSpectator(); if (this.isSpectator() || this.isPassenger()) { this.setOnGround(false); -@@ -365,6 +380,17 @@ public abstract class Player extends LivingEntity { +@@ -365,6 +_,17 @@ this.turtleHelmetTick(); } @@ -60,7 +52,7 @@ index abb19f08c736151fa5c6986e31eb4cf545073586..cc29c094f81f16e6b4d74877e31fabd4 this.cooldowns.tick(); this.updatePlayerPose(); if (this.currentImpulseContextResetGraceTime > 0) { -@@ -630,7 +656,7 @@ public abstract class Player extends LivingEntity { +@@ -630,7 +_,7 @@ List list = Lists.newArrayList(); for (Entity entity : entities) { @@ -69,7 +61,7 @@ index abb19f08c736151fa5c6986e31eb4cf545073586..cc29c094f81f16e6b4d74877e31fabd4 list.add(entity); } else if (!entity.isRemoved()) { this.touch(entity); -@@ -1226,7 +1252,7 @@ public abstract class Player extends LivingEntity { +@@ -1226,7 +_,7 @@ flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - Toggleable player crits if (flag2) { damageSource = damageSource.critical(); // Paper - critical damage API @@ -78,7 +70,16 @@ index abb19f08c736151fa5c6986e31eb4cf545073586..cc29c094f81f16e6b4d74877e31fabd4 } float f2 = f + f1; -@@ -1823,7 +1849,23 @@ public abstract class Player extends LivingEntity { +@@ -1579,7 +_,7 @@ + } + + @Override +- public boolean canGlide() { ++ protected boolean canGlide() { + return !this.abilities.flying && super.canGlide(); + } + +@@ -1823,7 +_,23 @@ @Override protected int getBaseExperienceReward(ServerLevel level) { @@ -103,17 +104,17 @@ index abb19f08c736151fa5c6986e31eb4cf545073586..cc29c094f81f16e6b4d74877e31fabd4 } @Override -@@ -1862,6 +1904,13 @@ public abstract class Player extends LivingEntity { +@@ -1861,6 +_,13 @@ + public boolean addItem(ItemStack stack) { return this.inventory.add(stack); } - ++ + // Purpur start - Player ridable in water option + @Override + public boolean dismountsUnderwater() { + return !level().purpurConfig.playerRidableInWater; + } + // Purpur end - Player ridable in water option -+ + public boolean setEntityOnShoulder(CompoundTag entityCompound) { if (this.isPassenger() || !this.onGround() || this.isInWater() || this.isInPowderSnow) { - return false; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch similarity index 69% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch index ed315ff16..de4745d8e 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/projectile/AbstractArrow.java b/net/minecraft/world/entity/projectile/AbstractArrow.java -index 11adb3eacce9d46f15e6c5216e9b2494df158baf..5a27dfa9ea24a93e7bd09cfed8190d7ca772d33e 100644 --- a/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -76,6 +76,7 @@ public abstract class AbstractArrow extends Projectile { +@@ -76,6 +_,7 @@ public ItemStack pickupItemStack = this.getDefaultPickupItem(); @Nullable public ItemStack firedFromWeapon = null; @@ -16,7 +8,7 @@ index 11adb3eacce9d46f15e6c5216e9b2494df158baf..5a27dfa9ea24a93e7bd09cfed8190d7c protected AbstractArrow(EntityType entityType, Level level) { super(entityType, level); -@@ -349,7 +350,7 @@ public abstract class AbstractArrow extends Projectile { +@@ -349,7 +_,7 @@ this.setInGround(false); Vec3 deltaMovement = this.getDeltaMovement(); this.setDeltaMovement(deltaMovement.multiply(this.random.nextFloat() * 0.2F, this.random.nextFloat() * 0.2F, this.random.nextFloat() * 0.2F)); @@ -25,16 +17,16 @@ index 11adb3eacce9d46f15e6c5216e9b2494df158baf..5a27dfa9ea24a93e7bd09cfed8190d7c } public boolean isInGround() { -@@ -573,6 +574,12 @@ public abstract class AbstractArrow extends Projectile { +@@ -572,6 +_,12 @@ + public ItemStack getWeaponItem() { return this.firedFromWeapon; } - ++ + // Purpur start - Add an option to fix MC-3304 projectile looting + public void setActualEnchantments(net.minecraft.world.item.enchantment.ItemEnchantments actualEnchantments) { + this.actualEnchantments = actualEnchantments; + } + // Purpur end - Add an option to fix MC-3304 projectile looting -+ + protected SoundEvent getDefaultHitGroundSoundEvent() { return SoundEvents.ARROW_HIT; - } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/Snowball.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch similarity index 85% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/Snowball.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch index 3554fab9a..7215ffe71 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/Snowball.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Snowball.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/projectile/Snowball.java b/net/minecraft/world/entity/projectile/Snowball.java -index 677b4b681f9c2c09a8ae3cfdec72102265547a7b..d8f9fb603fd2e3e5c1dfc05face7f42b4844daf4 100644 --- a/net/minecraft/world/entity/projectile/Snowball.java +++ b/net/minecraft/world/entity/projectile/Snowball.java -@@ -52,10 +52,40 @@ public class Snowball extends ThrowableItemProjectile { +@@ -52,9 +_,39 @@ protected void onHitEntity(EntityHitResult result) { super.onHitEntity(result); Entity entity = result.getEntity(); @@ -16,7 +8,7 @@ index 677b4b681f9c2c09a8ae3cfdec72102265547a7b..d8f9fb603fd2e3e5c1dfc05face7f42b + int i = entity.level().purpurConfig.snowballDamage >= 0 ? entity.level().purpurConfig.snowballDamage : entity instanceof Blaze ? 3 : 0; // Purpur - Add configurable snowball damage entity.hurt(this.damageSources().thrown(this, this.getOwner()), i); } - ++ + // Purpur start - options to extinguish fire blocks with snowballs - borrowed and modified code from ThrownPotion#onHitBlock and ThrownPotion#dowseFire + @Override + protected void onHitBlock(net.minecraft.world.phys.BlockHitResult blockHitResult) { @@ -46,7 +38,6 @@ index 677b4b681f9c2c09a8ae3cfdec72102265547a7b..d8f9fb603fd2e3e5c1dfc05face7f42b + } + } + // Purpur end - options to extinguish fire blocks with snowballs -+ + @Override protected void onHit(HitResult result) { - super.onHit(result); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch similarity index 76% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch index fa9213bb5..4af6264e9 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -index 4b04ca7d50d7a85827bd89fff24434e603e99579..2258736e6f9f52efe5bd353b8949a7a0b9a4fdb8 100644 --- a/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -@@ -126,9 +126,10 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { +@@ -126,9 +_,10 @@ return; } // CraftBukkit end @@ -20,7 +12,7 @@ index 4b04ca7d50d7a85827bd89fff24434e603e99579..2258736e6f9f52efe5bd353b8949a7a0 endermite.snapTo(owner.getX(), owner.getY(), owner.getZ(), owner.getYRot(), owner.getXRot()); serverLevel.addFreshEntity(endermite, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.ENDER_PEARL); } -@@ -148,7 +149,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { +@@ -148,7 +_,7 @@ if (serverPlayer1 != null) { serverPlayer1.resetFallDistance(); serverPlayer1.resetCurrentImpulseContext(); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch similarity index 63% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch index 845b601d9..cb2639bfb 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/projectile/ThrownTrident.java b/net/minecraft/world/entity/projectile/ThrownTrident.java -index bc04812ec840e255c0ae8651bf7a43e0f562aa9c..b6826fc742640e7f8311bd0269aa0d8a6a9b2db4 100644 --- a/net/minecraft/world/entity/projectile/ThrownTrident.java +++ b/net/minecraft/world/entity/projectile/ThrownTrident.java -@@ -66,7 +66,7 @@ public class ThrownTrident extends AbstractArrow { +@@ -66,7 +_,7 @@ Entity owner = this.getOwner(); int i = this.entityData.get(ID_LOYALTY); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch similarity index 64% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch index f99a7dad9..53c42c6f9 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/WitherSkull.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/projectile/WitherSkull.java b/net/minecraft/world/entity/projectile/WitherSkull.java -index 2419c1db39c9ffbc54352c7fa5e0ac1ef813c13a..5f20dded96fac2dd5d1b0282e7f8487344beb4ee 100644 --- a/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/net/minecraft/world/entity/projectile/WitherSkull.java -@@ -94,7 +94,7 @@ public class WitherSkull extends AbstractHurtingProjectile { +@@ -94,7 +_,7 @@ super.onHit(result); if (!this.level().isClientSide) { // CraftBukkit start @@ -17,17 +9,17 @@ index 2419c1db39c9ffbc54352c7fa5e0ac1ef813c13a..5f20dded96fac2dd5d1b0282e7f84873 if (event.callEvent()) { this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); } -@@ -103,6 +103,13 @@ public class WitherSkull extends AbstractHurtingProjectile { +@@ -102,6 +_,13 @@ + this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.HIT); // CraftBukkit - add Bukkit remove cause } } - ++ + // Purpur start - Add canSaveToDisk to Entity + @Override + public boolean canSaveToDisk() { + return false; + } + // Purpur end - Add canSaveToDisk to Entity -+ + @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { - builder.define(DATA_DANGEROUS, false); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/raid/Raids.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch similarity index 80% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/raid/Raids.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch index 93138d797..c0e2ddf74 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/raid/Raids.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/raid/Raids.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/raid/Raids.java b/net/minecraft/world/entity/raid/Raids.java -index b8de00c5f13257d0b79b44b19fbfb88a3ca20353..fc5c1acec3cc2afed40589be6f8e159c3426c08e 100644 --- a/net/minecraft/world/entity/raid/Raids.java +++ b/net/minecraft/world/entity/raid/Raids.java -@@ -29,6 +29,7 @@ import net.minecraft.world.phys.Vec3; +@@ -29,6 +_,7 @@ public class Raids extends SavedData { private static final String RAID_FILE_ID = "raids"; @@ -16,7 +8,7 @@ index b8de00c5f13257d0b79b44b19fbfb88a3ca20353..fc5c1acec3cc2afed40589be6f8e159c public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group( Raids.RaidWithId.CODEC -@@ -81,6 +82,17 @@ public class Raids extends SavedData { +@@ -81,6 +_,17 @@ public void tick(ServerLevel level) { this.tick++; @@ -34,7 +26,7 @@ index b8de00c5f13257d0b79b44b19fbfb88a3ca20353..fc5c1acec3cc2afed40589be6f8e159c Iterator iterator = this.raidMap.values().iterator(); while (iterator.hasNext()) { -@@ -148,11 +160,13 @@ public class Raids extends SavedData { +@@ -148,11 +_,13 @@ // } 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 diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch similarity index 51% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch index 39a2cc3ac..018fcd5d3 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/AbstractBoat.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/vehicle/AbstractBoat.java b/net/minecraft/world/entity/vehicle/AbstractBoat.java -index df360ff06d10fc7f996055dce5148825539e9261..4dcf6daa146645f096ac8815588c837715073c22 100644 --- a/net/minecraft/world/entity/vehicle/AbstractBoat.java +++ b/net/minecraft/world/entity/vehicle/AbstractBoat.java -@@ -436,6 +436,7 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable { +@@ -436,6 +_,7 @@ float groundFriction = this.getGroundFriction(); if (groundFriction > 0.0F) { this.landFriction = groundFriction; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch similarity index 62% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch index 06c26aecf..dfb044e11 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java b/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java -index 090b19752fbfc856d9fbf118510afc6cda2b9989..325ec57df2885f5e81b8a6b61e3a9fed9484b30f 100644 --- a/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java +++ b/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java -@@ -391,7 +391,7 @@ public class NewMinecartBehavior extends MinecartBehavior { +@@ -391,7 +_,7 @@ private Vec3 calculateBoostTrackSpeed(Vec3 speed, BlockPos pos, BlockState state) { if (state.is(Blocks.POWERED_RAIL) && state.getValue(PoweredRailBlock.POWERED)) { if (speed.length() > 0.01) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch similarity index 65% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch index 0662c5534..c8d066068 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java b/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java -index 0d09b0809e7b224538cf5cfac9e36ec5ba10b709..4d224dc127d245556892e761fa4927a76e4b8e9a 100644 --- a/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java +++ b/net/minecraft/world/entity/vehicle/OldMinecartBehavior.java -@@ -243,8 +243,8 @@ public class OldMinecartBehavior extends MinecartBehavior { +@@ -243,8 +_,8 @@ Vec3 deltaMovement1 = this.getDeltaMovement(); double d13 = deltaMovement1.horizontalDistance(); if (d13 > 0.01) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodData.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch similarity index 75% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodData.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch index a86ee73f1..a44cdd312 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodData.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodData.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/food/FoodData.java b/net/minecraft/world/food/FoodData.java -index a1b99dea0fa5860a01158897006e1065050c029b..d1080acfe91bd1ca28e21ffc68a928dc0f233be3 100644 --- a/net/minecraft/world/food/FoodData.java +++ b/net/minecraft/world/food/FoodData.java -@@ -39,6 +39,7 @@ public class FoodData { +@@ -39,6 +_,7 @@ int oldFoodLevel = this.foodLevel; org.bukkit.event.entity.FoodLevelChangeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(serverPlayer, foodProperties.nutrition() + oldFoodLevel, stack); if (!event.isCancelled()) { @@ -16,7 +8,7 @@ index a1b99dea0fa5860a01158897006e1065050c029b..d1080acfe91bd1ca28e21ffc68a928dc this.add(event.getFoodLevel() - oldFoodLevel, foodProperties.saturation()); } serverPlayer.getBukkitEntity().sendHealthUpdate(); -@@ -87,7 +88,7 @@ public class FoodData { +@@ -87,7 +_,7 @@ this.tickTimer++; if (this.tickTimer >= this.starvationRate) { // CraftBukkit - add regen rate manipulation if (player.getHealth() > 10.0F || difficulty == Difficulty.HARD || player.getHealth() > 1.0F && difficulty == Difficulty.NORMAL) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodProperties.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch similarity index 66% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodProperties.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch index 869410c5b..87515c815 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/food/FoodProperties.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/food/FoodProperties.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/food/FoodProperties.java b/net/minecraft/world/food/FoodProperties.java -index 793e4528755fa5688efbad75418188e693ad0157..20f702c8266eb54a8835861188eb937f4732e078 100644 --- a/net/minecraft/world/food/FoodProperties.java +++ b/net/minecraft/world/food/FoodProperties.java -@@ -42,9 +42,11 @@ public record FoodProperties(int nutrition, float saturation, boolean canAlwaysE +@@ -42,9 +_,11 @@ level.playSound(null, entity.getX(), entity.getY(), entity.getZ(), consumable.sound().value(), SoundSource.NEUTRAL, 1.0F, random.triangle(1.0F, 0.4F)); if (entity instanceof Player player) { player.getFoodData().eat(this, stack, (net.minecraft.server.level.ServerPlayer) player); // CraftBukkit diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch new file mode 100644 index 000000000..bca7321cd --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch @@ -0,0 +1,10 @@ +--- a/net/minecraft/world/inventory/AbstractContainerMenu.java ++++ b/net/minecraft/world/inventory/AbstractContainerMenu.java +@@ -65,6 +_,7 @@ + @Nullable + private ContainerSynchronizer synchronizer; + private boolean suppressRemoteUpdates; ++ @Nullable protected ItemStack activeQuickItem = null; // Purpur - Anvil API + // CraftBukkit start + public boolean checkReachable = true; + public abstract org.bukkit.inventory.InventoryView getBukkitView(); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch similarity index 64% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch index 87e3d1d61..1626289f6 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/inventory/AbstractFurnaceMenu.java b/net/minecraft/world/inventory/AbstractFurnaceMenu.java -index b42d55c1c0c405ce3ce073138343e74fa036fa65..b86e49b09a036532e7dbd56bc52b13cefe77f75b 100644 --- a/net/minecraft/world/inventory/AbstractFurnaceMenu.java +++ b/net/minecraft/world/inventory/AbstractFurnaceMenu.java -@@ -121,7 +121,13 @@ public abstract class AbstractFurnaceMenu extends RecipeBookMenu { +@@ -121,7 +_,13 @@ } else if (index != 1 && index != 0) { if (this.canSmelt(item)) { if (!this.moveItemStackTo(item, 0, 1, false)) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AnvilMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch similarity index 92% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AnvilMenu.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch index 6f37d8948..88ef4768c 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AnvilMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AnvilMenu.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/inventory/AnvilMenu.java b/net/minecraft/world/inventory/AnvilMenu.java -index 2346e1fc0c94084c3bb95c00be8aac36ae5f26ae..c75ad34d2e8b51999abbbca960bdda4973e356dc 100644 --- a/net/minecraft/world/inventory/AnvilMenu.java +++ b/net/minecraft/world/inventory/AnvilMenu.java -@@ -21,6 +21,12 @@ import net.minecraft.world.level.block.AnvilBlock; +@@ -21,6 +_,12 @@ import net.minecraft.world.level.block.state.BlockState; import org.slf4j.Logger; @@ -21,7 +13,7 @@ index 2346e1fc0c94084c3bb95c00be8aac36ae5f26ae..c75ad34d2e8b51999abbbca960bdda49 public class AnvilMenu extends ItemCombinerMenu { public static final int INPUT_SLOT = 0; public static final int ADDITIONAL_SLOT = 1; -@@ -50,6 +56,10 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -50,6 +_,10 @@ private org.bukkit.craftbukkit.inventory.view.CraftAnvilView bukkitEntity; // CraftBukkit end public boolean bypassEnchantmentLevelRestriction = false; // Paper - bypass anvil level restrictions @@ -32,7 +24,7 @@ index 2346e1fc0c94084c3bb95c00be8aac36ae5f26ae..c75ad34d2e8b51999abbbca960bdda49 public AnvilMenu(int containerId, Inventory playerInventory) { this(containerId, playerInventory, ContainerLevelAccess.NULL); -@@ -75,12 +85,17 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -75,12 +_,17 @@ @Override protected boolean mayPickup(Player player, boolean hasStack) { @@ -51,7 +43,7 @@ index 2346e1fc0c94084c3bb95c00be8aac36ae5f26ae..c75ad34d2e8b51999abbbca960bdda49 player.giveExperienceLevels(-this.cost.get()); } -@@ -133,13 +148,19 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -133,13 +_,19 @@ @Override public void createResult() { @@ -72,7 +64,7 @@ index 2346e1fc0c94084c3bb95c00be8aac36ae5f26ae..c75ad34d2e8b51999abbbca960bdda49 ItemStack itemStack = item.copy(); ItemStack item1 = this.inputSlots.getItem(1); ItemEnchantments.Mutable mutable = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(itemStack)); -@@ -197,23 +218,34 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -197,23 +_,34 @@ int intValue = entry.getIntValue(); intValue = level == intValue ? intValue + 1 : Math.max(intValue, level); Enchantment enchantment = holder.value(); @@ -111,7 +103,7 @@ index 2346e1fc0c94084c3bb95c00be8aac36ae5f26ae..c75ad34d2e8b51999abbbca960bdda49 intValue = enchantment.getMaxLevel(); } -@@ -242,6 +274,54 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -242,6 +_,54 @@ if (!this.itemName.equals(item.getHoverName().getString())) { i1 = 1; i += i1; @@ -166,7 +158,7 @@ index 2346e1fc0c94084c3bb95c00be8aac36ae5f26ae..c75ad34d2e8b51999abbbca960bdda49 itemStack.set(DataComponents.CUSTOM_NAME, Component.literal(this.itemName)); } } else if (item.has(DataComponents.CUSTOM_NAME)) { -@@ -266,6 +346,12 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -266,6 +_,12 @@ this.onlyRenaming = true; } @@ -179,7 +171,7 @@ index 2346e1fc0c94084c3bb95c00be8aac36ae5f26ae..c75ad34d2e8b51999abbbca960bdda49 if (this.cost.get() >= this.maximumRepairCost && !this.player.hasInfiniteMaterials()) { // CraftBukkit itemStack = ItemStack.EMPTY; } -@@ -286,6 +372,13 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -286,6 +_,13 @@ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), itemStack); // CraftBukkit this.broadcastChanges(); @@ -193,7 +185,7 @@ index 2346e1fc0c94084c3bb95c00be8aac36ae5f26ae..c75ad34d2e8b51999abbbca960bdda49 } 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 -@@ -294,7 +387,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -294,7 +_,7 @@ } public static int calculateIncreasedRepairCost(int oldRepairCost) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ArmorSlot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch similarity index 62% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ArmorSlot.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch index bb2e4f676..2b2579163 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ArmorSlot.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ArmorSlot.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/inventory/ArmorSlot.java b/net/minecraft/world/inventory/ArmorSlot.java -index 0a440ea37d14cd840cf87a99264ace5ccde7c073..dec920727401de7f5bcc6c7e50f9dd325367ee90 100644 --- a/net/minecraft/world/inventory/ArmorSlot.java +++ b/net/minecraft/world/inventory/ArmorSlot.java -@@ -47,7 +47,7 @@ class ArmorSlot extends Slot { +@@ -47,7 +_,7 @@ @Override public boolean mayPickup(Player player) { ItemStack item = this.getItem(); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch similarity index 79% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch index 8f252bab7..b6a6515d1 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/inventory/EnchantmentMenu.java b/net/minecraft/world/inventory/EnchantmentMenu.java -index cf9ab4c9fba11f5a0b293978853e205de81d6fc7..d0d6ae9c9c432f8bd5d9c91113fc5491e321afad 100644 --- a/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/net/minecraft/world/inventory/EnchantmentMenu.java -@@ -63,6 +63,22 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -63,6 +_,22 @@ return access.getLocation(); } // CraftBukkit end @@ -31,7 +23,7 @@ index cf9ab4c9fba11f5a0b293978853e205de81d6fc7..d0d6ae9c9c432f8bd5d9c91113fc5491 }; // Paper end - Add missing InventoryHolders this.access = access; -@@ -83,6 +99,16 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -83,6 +_,16 @@ return EnchantmentMenu.EMPTY_SLOT_LAPIS_LAZULI; } }); @@ -48,7 +40,7 @@ index cf9ab4c9fba11f5a0b293978853e205de81d6fc7..d0d6ae9c9c432f8bd5d9c91113fc5491 this.addStandardInventorySlots(playerInventory, 8, 84); this.addDataSlot(DataSlot.shared(this.costs, 0)); this.addDataSlot(DataSlot.shared(this.costs, 1)); -@@ -299,7 +325,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -299,7 +_,7 @@ @Override public void removed(Player player) { super.removed(player); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch similarity index 89% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch index 9e72ed264..f30e76901 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/GrindstoneMenu.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/inventory/GrindstoneMenu.java b/net/minecraft/world/inventory/GrindstoneMenu.java -index 18c15a7657e6fd994a8f17d0812c822d6adc8eab..e3892bc545d614a2e9e1bbc8589f1189b1b73038 100644 --- a/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/net/minecraft/world/inventory/GrindstoneMenu.java -@@ -91,11 +91,13 @@ public class GrindstoneMenu extends AbstractContainerMenu { +@@ -91,11 +_,13 @@ @Override public void onTake(Player player, ItemStack stack) { access.execute((level, blockPos) -> { @@ -23,7 +15,7 @@ index 18c15a7657e6fd994a8f17d0812c822d6adc8eab..e3892bc545d614a2e9e1bbc8589f1189 // Paper end - Fire BlockExpEvent on grindstone use } -@@ -124,7 +126,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { +@@ -124,7 +_,7 @@ for (Entry> entry : enchantmentsForCrafting.entrySet()) { Holder holder = entry.getKey(); int intValue = entry.getIntValue(); @@ -32,7 +24,7 @@ index 18c15a7657e6fd994a8f17d0812c822d6adc8eab..e3892bc545d614a2e9e1bbc8589f1189 i += holder.value().getMinCost(intValue); } } -@@ -202,15 +204,75 @@ public class GrindstoneMenu extends AbstractContainerMenu { +@@ -202,15 +_,75 @@ for (Entry> entry : enchantmentsForCrafting.entrySet()) { Holder holder = entry.getKey(); @@ -110,7 +102,7 @@ index 18c15a7657e6fd994a8f17d0812c822d6adc8eab..e3892bc545d614a2e9e1bbc8589f1189 if (item.is(Items.ENCHANTED_BOOK) && itemEnchantments.isEmpty()) { item = item.transmuteCopy(Items.BOOK); } -@@ -222,6 +284,23 @@ public class GrindstoneMenu extends AbstractContainerMenu { +@@ -222,6 +_,23 @@ } item.set(DataComponents.REPAIR_COST, i); @@ -134,7 +126,7 @@ index 18c15a7657e6fd994a8f17d0812c822d6adc8eab..e3892bc545d614a2e9e1bbc8589f1189 return item; } -@@ -278,7 +357,9 @@ public class GrindstoneMenu extends AbstractContainerMenu { +@@ -278,7 +_,9 @@ return ItemStack.EMPTY; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch new file mode 100644 index 000000000..9899e30a5 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch @@ -0,0 +1,12 @@ +--- a/net/minecraft/world/inventory/ItemCombinerMenu.java ++++ b/net/minecraft/world/inventory/ItemCombinerMenu.java +@@ -156,7 +_,9 @@ + return ItemStack.EMPTY; + } + ++ this.activeQuickItem = itemStack; // Purpur - Anvil API + slot.onTake(player, item); ++ this.activeQuickItem = null; // Purpur - Anvil API + } + + return itemStack; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/AxeItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch similarity index 90% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/AxeItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch index 3de08e4e6..c87b129e2 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/AxeItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/AxeItem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/AxeItem.java b/net/minecraft/world/item/AxeItem.java -index bd919b9a83f9736f02783b1ba3863fd1b77c7e89..eb8d2d6f9c65185f5fe16a13ab0cdbba78a25a40 100644 --- a/net/minecraft/world/item/AxeItem.java +++ b/net/minecraft/world/item/AxeItem.java -@@ -62,13 +62,15 @@ public class AxeItem extends Item { +@@ -62,13 +_,15 @@ if (playerHasBlockingItemUseIntent(context)) { return InteractionResult.PASS; } else { @@ -26,7 +18,7 @@ index bd919b9a83f9736f02783b1ba3863fd1b77c7e89..eb8d2d6f9c65185f5fe16a13ab0cdbba return InteractionResult.PASS; } // Paper end -@@ -76,8 +78,15 @@ public class AxeItem extends Item { +@@ -76,8 +_,15 @@ CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger((ServerPlayer)player, clickedPos, itemInHand); } @@ -44,7 +36,7 @@ index bd919b9a83f9736f02783b1ba3863fd1b77c7e89..eb8d2d6f9c65185f5fe16a13ab0cdbba if (player != null) { itemInHand.hurtAndBreak(1, player, LivingEntity.getSlotForHand(context.getHand())); } -@@ -94,22 +103,24 @@ public class AxeItem extends Item { +@@ -94,22 +_,24 @@ && !player.isSecondaryUseActive(); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BlockItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch similarity index 79% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BlockItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch index a0a7667ed..76068462e 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BlockItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/BlockItem.java b/net/minecraft/world/item/BlockItem.java -index b5b53168755525eccaa0a4361172006522cf4e05..2860d49c072d4b9e473390a84e45171b984b198e 100644 --- a/net/minecraft/world/item/BlockItem.java +++ b/net/minecraft/world/item/BlockItem.java -@@ -145,7 +145,16 @@ public class BlockItem extends Item { +@@ -145,7 +_,16 @@ } protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, @Nullable Player player, ItemStack stack, BlockState state) { @@ -26,7 +18,7 @@ index b5b53168755525eccaa0a4361172006522cf4e05..2860d49c072d4b9e473390a84e45171b } @Nullable -@@ -212,6 +221,7 @@ public class BlockItem extends Item { +@@ -212,6 +_,7 @@ } if (!type.onlyOpCanSetNbt() || player != null && (player.canUseGameMasterBlocks() || (player.getAbilities().instabuild && player.getBukkitEntity().hasPermission("minecraft.nbt.place")))) { // Spigot - add permission @@ -34,7 +26,7 @@ index b5b53168755525eccaa0a4361172006522cf4e05..2860d49c072d4b9e473390a84e45171b return customData.loadInto(blockEntity, level.registryAccess()); } -@@ -253,6 +263,7 @@ public class BlockItem extends Item { +@@ -253,6 +_,7 @@ public void onDestroyed(ItemEntity itemEntity) { ItemContainerContents itemContainerContents = itemEntity.getItem().set(DataComponents.CONTAINER, ItemContainerContents.EMPTY); if (itemContainerContents != null) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BowItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch similarity index 78% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BowItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch index 21a9dc9e8..bb43e3ee4 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BowItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BowItem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/BowItem.java b/net/minecraft/world/item/BowItem.java -index c4c8775de328d40bb8218d993872be5249e8174d..ce1ce18410fc1d47d999c918a8f880b43bf9797c 100644 --- a/net/minecraft/world/item/BowItem.java +++ b/net/minecraft/world/item/BowItem.java -@@ -28,6 +28,11 @@ public class BowItem extends ProjectileWeaponItem { +@@ -28,6 +_,11 @@ return false; } else { ItemStack projectile = player.getProjectile(stack); @@ -20,7 +12,7 @@ index c4c8775de328d40bb8218d993872be5249e8174d..ce1ce18410fc1d47d999c918a8f880b4 if (projectile.isEmpty()) { return false; } else { -@@ -38,7 +43,7 @@ public class BowItem extends ProjectileWeaponItem { +@@ -38,7 +_,7 @@ } else { List list = draw(stack, projectile, player); if (level instanceof ServerLevel serverLevel && !list.isEmpty()) { @@ -29,7 +21,7 @@ index c4c8775de328d40bb8218d993872be5249e8174d..ce1ce18410fc1d47d999c918a8f880b4 } level.playSound( -@@ -89,7 +94,7 @@ public class BowItem extends ProjectileWeaponItem { +@@ -89,7 +_,7 @@ public InteractionResult use(Level level, Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); boolean flag = !player.getProjectile(itemInHand).isEmpty(); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BucketItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch similarity index 69% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BucketItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch index 94d4d0e25..a0e1bb7ac 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/BucketItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BucketItem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/BucketItem.java b/net/minecraft/world/item/BucketItem.java -index de287715568f358dd83383d68f845df9a7b5a117..8c7be8a71348a3e66c8bf6b6cb39fe002c20bdb0 100644 --- a/net/minecraft/world/item/BucketItem.java +++ b/net/minecraft/world/item/BucketItem.java -@@ -147,7 +147,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { +@@ -147,7 +_,7 @@ // CraftBukkit end if (!flag) { return hitResult != null && this.emptyContents(entity, level, hitResult.getBlockPos().relative(hitResult.getDirection()), null, direction, clicked, itemstack, hand); // CraftBukkit @@ -17,7 +9,7 @@ index de287715568f358dd83383d68f845df9a7b5a117..8c7be8a71348a3e66c8bf6b6cb39fe00 int x = pos.getX(); int y = pos.getY(); int z = pos.getZ(); -@@ -156,7 +156,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { +@@ -156,7 +_,7 @@ ); for (int i = 0; i < 8; i++) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/CrossbowItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch similarity index 63% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/CrossbowItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch index 600b9e395..c2e3f0e41 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/CrossbowItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/CrossbowItem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/CrossbowItem.java b/net/minecraft/world/item/CrossbowItem.java -index 4c5a751bc5618a19ac6355564189cb283a01eb98..9275ba72415beaa4e495cae81674fd14ec671156 100644 --- a/net/minecraft/world/item/CrossbowItem.java +++ b/net/minecraft/world/item/CrossbowItem.java -@@ -66,7 +66,7 @@ public class CrossbowItem extends ProjectileWeaponItem { +@@ -66,7 +_,7 @@ ItemStack itemInHand = player.getItemInHand(hand); ChargedProjectiles chargedProjectiles = itemInHand.get(DataComponents.CHARGED_PROJECTILES); if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/DyeColor.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch similarity index 55% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/DyeColor.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch index b9c8a91c8..e53cc098b 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/DyeColor.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/DyeColor.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/DyeColor.java b/net/minecraft/world/item/DyeColor.java -index 76bb211843eee94334fbba87e5fa5ba5430f89ba..c9cde255117b46690b2b6670d009a00b051af016 100644 --- a/net/minecraft/world/item/DyeColor.java +++ b/net/minecraft/world/item/DyeColor.java -@@ -126,4 +126,10 @@ public enum DyeColor implements StringRepresentable { +@@ -126,4 +_,10 @@ private static CraftingInput makeCraftColorInput(DyeColor first, DyeColor second) { return CraftingInput.of(2, 1, List.of(new ItemStack(DyeItem.byColor(first)), new ItemStack(DyeItem.byColor(second)))); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EggItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch similarity index 72% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EggItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch index 49c5b618f..7bd1d11bf 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EggItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EggItem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/EggItem.java b/net/minecraft/world/item/EggItem.java -index ccae6089cdc4fffca7d759252006a13c2c14691a..c4097bd6acf671ddf857350154e6e1a04e76d64b 100644 --- a/net/minecraft/world/item/EggItem.java +++ b/net/minecraft/world/item/EggItem.java -@@ -24,7 +24,7 @@ public class EggItem extends Item implements ProjectileItem { +@@ -24,7 +_,7 @@ public InteractionResult use(Level level, Player player, InteractionHand hand) { ItemStack itemInHand = player.getItemInHand(hand); // Paper start diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EndCrystalItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch similarity index 60% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EndCrystalItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch index 1f6dd3968..baee5e0ab 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EndCrystalItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EndCrystalItem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/EndCrystalItem.java b/net/minecraft/world/item/EndCrystalItem.java -index 05ec512839898f96d9769bb0d00f6ba11dda0c4b..6e4a3c9c090a68bf5785a01d815c275411859c7b 100644 --- a/net/minecraft/world/item/EndCrystalItem.java +++ b/net/minecraft/world/item/EndCrystalItem.java -@@ -24,7 +24,7 @@ public class EndCrystalItem extends Item { +@@ -24,7 +_,7 @@ Level level = context.getLevel(); BlockPos clickedPos = context.getClickedPos(); BlockState blockState = level.getBlockState(clickedPos); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EnderpearlItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch similarity index 78% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EnderpearlItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch index ce7feb346..de340dafe 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/EnderpearlItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/EnderpearlItem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/EnderpearlItem.java b/net/minecraft/world/item/EnderpearlItem.java -index 3becd19d3264fa631497e967656cc7ca39252586..f824f155549857d5205ba67eb5916e0b0b65efb4 100644 --- a/net/minecraft/world/item/EnderpearlItem.java +++ b/net/minecraft/world/item/EnderpearlItem.java -@@ -24,7 +24,7 @@ public class EnderpearlItem extends Item { +@@ -24,7 +_,7 @@ if (level instanceof ServerLevel serverLevel) { // CraftBukkit start // Paper start - PlayerLaunchProjectileEvent @@ -17,7 +9,7 @@ index 3becd19d3264fa631497e967656cc7ca39252586..f824f155549857d5205ba67eb5916e0b com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemInHand), (org.bukkit.entity.Projectile) thrownEnderpearl.projectile().getBukkitEntity()); if (event.callEvent() && thrownEnderpearl.attemptSpawn()) { if (event.shouldConsume()) { -@@ -44,6 +44,7 @@ public class EnderpearlItem extends Item { +@@ -44,6 +_,7 @@ 0.4F / (level.getRandom().nextFloat() * 0.4F + 0.8F) ); player.awardStat(Stats.ITEM_USED.get(this)); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/HoeItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch similarity index 82% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/HoeItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch index e81115e58..cebe3180e 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/HoeItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/HoeItem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/HoeItem.java b/net/minecraft/world/item/HoeItem.java -index 3bf3d4030c4da65fa386a8b8083d259a6046d15e..77a8d5d334cd93d23149afa8e58f4114412632df 100644 --- a/net/minecraft/world/item/HoeItem.java +++ b/net/minecraft/world/item/HoeItem.java -@@ -45,15 +45,25 @@ public class HoeItem extends Item { +@@ -45,15 +_,25 @@ public InteractionResult useOn(UseOnContext context) { Level level = context.getLevel(); BlockPos clickedPos = context.getClickedPos(); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ItemStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch similarity index 78% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ItemStack.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch index 9d85fd5f0..c2ee158cb 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ItemStack.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java -index cf283389d9263ba29720bf296a778be9eaf308a7..7041e93158ffab707f14ff6e48c3977bebf275a9 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java -@@ -450,6 +450,7 @@ public final class ItemStack implements DataComponentHolder { +@@ -450,6 +_,7 @@ // revert back all captured blocks for (org.bukkit.block.BlockState blockstate : blocks) { ((org.bukkit.craftbukkit.block.CraftBlockState) blockstate).revertPlace(); @@ -16,7 +8,7 @@ index cf283389d9263ba29720bf296a778be9eaf308a7..7041e93158ffab707f14ff6e48c3977b } SignItem.openSign = null; // SPIGOT-6758 - Reset on early return -@@ -473,6 +474,7 @@ public final class ItemStack implements DataComponentHolder { +@@ -473,6 +_,7 @@ if (!(block.getBlock() instanceof net.minecraft.world.level.block.BaseEntityBlock)) { // Containers get placed automatically block.onPlace(serverLevel, newPos, oldBlock, true, context); } @@ -24,7 +16,7 @@ index cf283389d9263ba29720bf296a778be9eaf308a7..7041e93158ffab707f14ff6e48c3977b serverLevel.notifyAndUpdatePhysics(newPos, null, oldBlock, block, serverLevel.getBlockState(newPos), updateFlags, net.minecraft.world.level.block.Block.UPDATE_LIMIT); // send null chunk as chunk.k() returns false by this point } -@@ -593,6 +595,26 @@ public final class ItemStack implements DataComponentHolder { +@@ -593,6 +_,26 @@ return this.isDamageableItem() && this.getDamageValue() > 0; } @@ -51,16 +43,16 @@ index cf283389d9263ba29720bf296a778be9eaf308a7..7041e93158ffab707f14ff6e48c3977b public int getDamageValue() { return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage()); } -@@ -1210,6 +1232,12 @@ public final class ItemStack implements DataComponentHolder { +@@ -1209,6 +_,12 @@ + public boolean isEnchanted() { return !this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).isEmpty(); } - ++ + // Purpur start - Config to allow unsafe enchants + public boolean hasEnchantment(Holder enchantment) { + return this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).getLevel(enchantment) > 0; + } + // Purpur end - Config to allow unsafe enchants -+ + public ItemEnchantments getEnchantments() { return this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY); - } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/Items.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch similarity index 78% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/Items.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch index e8a1042fd..d55a9feff 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/Items.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/Items.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/Items.java b/net/minecraft/world/item/Items.java -index cb27584b484c5103feb85e139a3dbf95a23a1236..b309312491bf822582d8cc182d609f7b74399ae8 100644 --- a/net/minecraft/world/item/Items.java +++ b/net/minecraft/world/item/Items.java -@@ -383,7 +383,7 @@ public class Items { +@@ -383,7 +_,7 @@ 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); @@ -17,7 +9,7 @@ index cb27584b484c5103feb85e139a3dbf95a23a1236..b309312491bf822582d8cc182d609f7b public static final Item CREAKING_HEART = registerBlock(Blocks.CREAKING_HEART); public static final Item CHEST = registerBlock(Blocks.CHEST, properties -> properties.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE); -@@ -2089,7 +2089,7 @@ public class Items { +@@ -2092,7 +_,7 @@ "sweet_berries", createBlockItemWithCustomItemName(Blocks.SWEET_BERRY_BUSH), new Item.Properties().food(Foods.SWEET_BERRIES) ); public static final Item GLOW_BERRIES = registerItem( diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/MapItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch similarity index 54% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/MapItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch index d6dfe095d..e4abe0ae9 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/MapItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/MapItem.java b/net/minecraft/world/item/MapItem.java -index ba0b254d43651bca1f29b5272af05d068fc37ba8..780793750c99185e8139a1cd0ad52bc7b80899a9 100644 --- a/net/minecraft/world/item/MapItem.java +++ b/net/minecraft/world/item/MapItem.java -@@ -194,6 +194,7 @@ public class MapItem extends Item { +@@ -194,6 +_,7 @@ public static void renderBiomePreviewMap(ServerLevel serverLevel, ItemStack stack) { MapItemSavedData savedData = getSavedData(stack, serverLevel); if (savedData != null) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/NameTagItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch similarity index 64% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/NameTagItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch index ce7e9a16c..2a8639361 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/NameTagItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/NameTagItem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/NameTagItem.java b/net/minecraft/world/item/NameTagItem.java -index a928124ee46a10e9033f771970198e36712917a6..65ff8078474d5039238e9398d8cfc12e79cc6524 100644 --- a/net/minecraft/world/item/NameTagItem.java +++ b/net/minecraft/world/item/NameTagItem.java -@@ -24,6 +24,7 @@ public class NameTagItem extends Item { +@@ -24,6 +_,7 @@ LivingEntity newEntity = ((org.bukkit.craftbukkit.entity.CraftLivingEntity) event.getEntity()).getHandle(); newEntity.setCustomName(event.getName() != null ? io.papermc.paper.adventure.PaperAdventure.asVanilla(event.getName()) : null); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch new file mode 100644 index 000000000..76145281c --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/item/ProjectileWeaponItem.java ++++ b/net/minecraft/world/item/ProjectileWeaponItem.java +@@ -109,6 +_,8 @@ + abstractArrow.setCritArrow(true); + } + ++ abstractArrow.setActualEnchantments(weapon.getEnchantments()); // Purpur - Add an option to fix MC-3304 projectile looting ++ + return abstractArrow; + } + diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ShovelItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch similarity index 74% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ShovelItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch index 1e1bc069c..c583f3853 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ShovelItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ShovelItem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/ShovelItem.java b/net/minecraft/world/item/ShovelItem.java -index 887ac9f547ceaf76fd533ae47239a64c29a64b18..a290ad578498da07093ea31080cc3fbc87aa3778 100644 --- a/net/minecraft/world/item/ShovelItem.java +++ b/net/minecraft/world/item/ShovelItem.java -@@ -46,9 +46,12 @@ public class ShovelItem extends Item { +@@ -46,9 +_,12 @@ BlockState blockState1 = FLATTENABLES.get(blockState.getBlock()); BlockState blockState2 = null; Runnable afterAction = null; // Paper diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SnowballItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch similarity index 72% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SnowballItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch index b88ed49fb..9c09ecb72 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SnowballItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SnowballItem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/SnowballItem.java b/net/minecraft/world/item/SnowballItem.java -index 8eec16040fb9ae6bcccbd71bbe93521cdce5ccce..38b82537209449407922491506a7ca6224229ca9 100644 --- a/net/minecraft/world/item/SnowballItem.java +++ b/net/minecraft/world/item/SnowballItem.java -@@ -26,7 +26,7 @@ public class SnowballItem extends Item implements ProjectileItem { +@@ -26,7 +_,7 @@ // CraftBukkit start - moved down if (level instanceof ServerLevel serverLevel) { // Paper start - PlayerLaunchProjectileEvent diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SpawnEggItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch similarity index 84% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SpawnEggItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch index c977ff3ce..7a0553a75 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/SpawnEggItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/SpawnEggItem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/SpawnEggItem.java b/net/minecraft/world/item/SpawnEggItem.java -index 7a961e5ebbdac061f6e73e4ed07fe957ba759066..d48c1dedbd39770ccf3c9c3ff3351b391601cd77 100644 --- a/net/minecraft/world/item/SpawnEggItem.java +++ b/net/minecraft/world/item/SpawnEggItem.java -@@ -57,6 +57,23 @@ public class SpawnEggItem extends Item { +@@ -57,6 +_,23 @@ if (level.getBlockEntity(clickedPos) instanceof Spawner spawner) { if (level.paperConfig().entities.spawning.disableMobSpawnerSpawnEggTransformation) return InteractionResult.FAIL; // Paper - Allow disabling mob spawner spawn egg transformation EntityType type = this.getType(level.registryAccess(), itemInHand); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ThrowablePotionItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch similarity index 71% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ThrowablePotionItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch index 7e89fcdab..5cf5ead6e 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ThrowablePotionItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ThrowablePotionItem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/ThrowablePotionItem.java b/net/minecraft/world/item/ThrowablePotionItem.java -index 86198fb3150409b4b3e123982d8d3ba40b774621..6495c82fb88062875024c59a7c29d6d18b7a2f41 100644 --- a/net/minecraft/world/item/ThrowablePotionItem.java +++ b/net/minecraft/world/item/ThrowablePotionItem.java -@@ -24,7 +24,7 @@ public abstract class ThrowablePotionItem extends PotionItem implements Projecti +@@ -24,7 +_,7 @@ ItemStack itemInHand = player.getItemInHand(hand); if (level instanceof ServerLevel serverLevel) { // Paper start - PlayerLaunchProjectileEvent diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/TridentItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch similarity index 75% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/TridentItem.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch index 4fed2a2df..dccf0bfa8 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/TridentItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/TridentItem.java b/net/minecraft/world/item/TridentItem.java -index df629e3f2defce5e65aaf874d7c5ddff71f39c28..122e24ed6fb319c951841ac8ef328c5eb70514d4 100644 --- a/net/minecraft/world/item/TridentItem.java +++ b/net/minecraft/world/item/TridentItem.java -@@ -83,7 +83,7 @@ public class TridentItem extends Item implements ProjectileItem { +@@ -83,7 +_,7 @@ if (tridentSpinAttackStrength == 0.0F) { ItemStack itemStack = stack.copyWithCount(1); // Paper Projectile.Delayed tridentDelayed = Projectile.spawnProjectileFromRotationDelayed( // Paper - PlayerLaunchProjectileEvent( @@ -17,7 +9,7 @@ index df629e3f2defce5e65aaf874d7c5ddff71f39c28..122e24ed6fb319c951841ac8ef328c5e ); // Paper start - PlayerLaunchProjectileEvent com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) tridentDelayed.projectile().getBukkitEntity()); -@@ -94,6 +94,7 @@ public class TridentItem extends Item implements ProjectileItem { +@@ -94,6 +_,7 @@ return false; } ThrownTrident thrownTrident = tridentDelayed.projectile(); // Paper - PlayerLaunchProjectileEvent diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch similarity index 62% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch index 122c3f535..65243f097 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java b/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java -index 41e1e076a4567d3d3202cf8e426a1ebb391d85e8..2d710dd3f20cbea06c16f14a558b575b369c6ca2 100644 --- a/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java +++ b/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java -@@ -20,6 +20,12 @@ public record ClearAllStatusEffectsConsumeEffect() implements ConsumeEffect { +@@ -20,6 +_,12 @@ @Override // CraftBukkit start public boolean apply(Level level, ItemStack stack, LivingEntity entity, org.bukkit.event.entity.EntityPotionEffectEvent.Cause cause) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/crafting/Ingredient.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch similarity index 60% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/crafting/Ingredient.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch index 07b657ce0..fcee0a726 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/crafting/Ingredient.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/crafting/Ingredient.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/crafting/Ingredient.java b/net/minecraft/world/item/crafting/Ingredient.java -index 879c8fe1f20decc793cfa39e686b61d521bd76ba..9c383a1028988cdd3de8b29ba72a4d7bd2a37c7e 100644 --- a/net/minecraft/world/item/crafting/Ingredient.java +++ b/net/minecraft/world/item/crafting/Ingredient.java -@@ -36,6 +36,7 @@ public final class Ingredient implements StackedContents.IngredientInfo itemStacks; // Paper - Improve exact choice recipe ingredients @@ -16,7 +8,7 @@ index 879c8fe1f20decc793cfa39e686b61d521bd76ba..9c383a1028988cdd3de8b29ba72a4d7b public boolean isExact() { return this.itemStacks != null; -@@ -88,6 +89,11 @@ public final class Ingredient implements StackedContents.IngredientInfo -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/net/minecraft/world/item/enchantment/EnchantmentHelper.java -index 66234431b265e0596275ca468cd40f8da98c22e2..e0cc0b49ea47bb38f7f4fe5ef3c793b0009d03c9 100644 --- a/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/net/minecraft/world/item/enchantment/EnchantmentHelper.java -@@ -606,4 +606,58 @@ public class EnchantmentHelper { +@@ -606,4 +_,58 @@ interface EnchantmentVisitor { void accept(Holder enchantment, int level); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch similarity index 78% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch index 3b86deda8..9671562b1 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/enchantment/ItemEnchantments.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/enchantment/ItemEnchantments.java b/net/minecraft/world/item/enchantment/ItemEnchantments.java -index 6040b73a5351c3eb166250566b5c2385cee39ee0..29619b87fe19c66934fe5aaee8a9641960091bf5 100644 --- a/net/minecraft/world/item/enchantment/ItemEnchantments.java +++ b/net/minecraft/world/item/enchantment/ItemEnchantments.java -@@ -32,7 +32,7 @@ public class ItemEnchantments implements TooltipProvider { +@@ -32,7 +_,7 @@ private static final java.util.Comparator> ENCHANTMENT_ORDER = java.util.Comparator.comparing(Holder::getRegisteredName); public static final ItemEnchantments EMPTY = new ItemEnchantments(new it.unimi.dsi.fastutil.objects.Object2IntAVLTreeMap<>(ENCHANTMENT_ORDER)); // Paper end - sort enchantments @@ -17,7 +9,7 @@ index 6040b73a5351c3eb166250566b5c2385cee39ee0..29619b87fe19c66934fe5aaee8a96419 public static final Codec CODEC = Codec.unboundedMap(Enchantment.CODEC, LEVEL_CODEC) .xmap( map -> new net.minecraft.world.item.enchantment.ItemEnchantments(net.minecraft.Util.make(new it.unimi.dsi.fastutil.objects.Object2IntAVLTreeMap<>(ENCHANTMENT_ORDER), m -> m.putAll(map))), // Paper - sort enchantments -@@ -50,7 +50,7 @@ public class ItemEnchantments implements TooltipProvider { +@@ -50,7 +_,7 @@ for (Entry> entry : enchantments.object2IntEntrySet()) { int intValue = entry.getIntValue(); @@ -26,7 +18,7 @@ index 6040b73a5351c3eb166250566b5c2385cee39ee0..29619b87fe19c66934fe5aaee8a96419 throw new IllegalArgumentException("Enchantment " + entry.getKey() + " has invalid level " + intValue); } } -@@ -133,13 +133,13 @@ public class ItemEnchantments implements TooltipProvider { +@@ -133,13 +_,13 @@ if (level <= 0) { this.enchantments.removeInt(enchantment); } else { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/trading/MerchantOffer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch similarity index 59% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/trading/MerchantOffer.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch index 684747a69..6a3b114a8 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/trading/MerchantOffer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/trading/MerchantOffer.java b/net/minecraft/world/item/trading/MerchantOffer.java -index 9333c63f217e1207eced37c5be150e192f2fcc3e..156cee58134ada34d249aab948c02adac4f6745a 100644 --- a/net/minecraft/world/item/trading/MerchantOffer.java +++ b/net/minecraft/world/item/trading/MerchantOffer.java -@@ -143,7 +143,12 @@ public class MerchantOffer { +@@ -143,7 +_,12 @@ } public void updateDemand() { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/BaseSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch similarity index 53% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/BaseSpawner.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch index 65e7819f9..e016949ae 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/BaseSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/BaseSpawner.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/BaseSpawner.java b/net/minecraft/world/level/BaseSpawner.java -index 42f44222a8dd61f70d4583b0ca82a16400baaa5a..41ba9f234e840fadee3c8a52ba9655b97a8b7381 100644 --- a/net/minecraft/world/level/BaseSpawner.java +++ b/net/minecraft/world/level/BaseSpawner.java -@@ -61,6 +61,7 @@ public abstract class BaseSpawner { +@@ -61,6 +_,7 @@ } public boolean isNearPlayer(Level level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/EntityGetter.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch similarity index 58% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/EntityGetter.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch index b06d9938e..73e6f74b1 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/EntityGetter.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/EntityGetter.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/EntityGetter.java b/net/minecraft/world/level/EntityGetter.java -index 9175a7e4e6076626cb46144c5858c2f2474f1858..452b6df03152dbd2311774bf4872983d3df92665 100644 --- a/net/minecraft/world/level/EntityGetter.java +++ b/net/minecraft/world/level/EntityGetter.java -@@ -185,7 +185,7 @@ public interface EntityGetter extends ca.spottedleaf.moonrise.patches.chunk_syst +@@ -185,7 +_,7 @@ default boolean hasNearbyAlivePlayer(double x, double y, double z, double distance) { for (Player player : this.players()) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/Level.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch similarity index 85% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/Level.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch index cfac1288b..dc002e072 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/Level.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/Level.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java -index c41df4b1fff1f65532256e835dc30fadbb4f8c8b..dccfd0f30111316c9c82004358c2a7051cbd5cdb 100644 --- a/net/minecraft/world/level/Level.java +++ b/net/minecraft/world/level/Level.java -@@ -160,11 +160,55 @@ public abstract class Level implements LevelAccessor, UUIDLookup, AutoCl +@@ -160,11 +_,55 @@ } // Paper end - add paper world config @@ -64,7 +56,7 @@ index c41df4b1fff1f65532256e835dc30fadbb4f8c8b..dccfd0f30111316c9c82004358c2a705 public CraftWorld getWorld() { return this.world; } -@@ -840,6 +884,8 @@ public abstract class Level implements LevelAccessor, UUIDLookup, AutoCl +@@ -840,6 +_,8 @@ // Paper end - getblock optimisations - cache world height/sections this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config @@ -73,7 +65,7 @@ index c41df4b1fff1f65532256e835dc30fadbb4f8c8b..dccfd0f30111316c9c82004358c2a705 this.generator = generator; this.world = new CraftWorld((ServerLevel) this, generator, biomeProvider, environment); -@@ -2124,4 +2170,14 @@ public abstract class Level implements LevelAccessor, UUIDLookup, AutoCl +@@ -2124,4 +_,14 @@ return this.id; } } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/NaturalSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch similarity index 65% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/NaturalSpawner.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch index 96108cbec..6ce413c7d 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/NaturalSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/NaturalSpawner.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/NaturalSpawner.java b/net/minecraft/world/level/NaturalSpawner.java -index 14a2514a408a66a83f7b5fb43b4c4dc8f23fd5f4..fa06ecacc27f619853c8db76d909ab4ba75dc529 100644 --- a/net/minecraft/world/level/NaturalSpawner.java +++ b/net/minecraft/world/level/NaturalSpawner.java -@@ -261,7 +261,7 @@ public final class NaturalSpawner { +@@ -261,7 +_,7 @@ mutableBlockPos.set(x, y, z); double d = x + 0.5; double d1 = z + 0.5; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/ServerExplosion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch similarity index 80% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/ServerExplosion.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch index b17583de0..5fb2b122d 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/ServerExplosion.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java -index 07e4025ca6c9c31905db2e6921138a0ded479dde..b80924fbe054b00fe5117df896358e330f41e993 100644 --- a/net/minecraft/world/level/ServerExplosion.java +++ b/net/minecraft/world/level/ServerExplosion.java -@@ -648,6 +648,23 @@ public class ServerExplosion implements Explosion { +@@ -648,6 +_,23 @@ this.directMappedBlockCache = new ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache[BLOCK_EXPLOSION_CACHE_WIDTH * BLOCK_EXPLOSION_CACHE_WIDTH * BLOCK_EXPLOSION_CACHE_WIDTH]; this.mutablePos = new BlockPos.MutableBlockPos(); // Paper end - collision optimisations diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AnvilBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch similarity index 89% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AnvilBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch index dd49d9460..a21b8a6a3 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AnvilBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AnvilBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/AnvilBlock.java b/net/minecraft/world/level/block/AnvilBlock.java -index e8bac6deb63e0f94fb5f8b38602b2e3333e5fa8d..b14736c25cfdd94c6e3f159e53865150b06edef6 100644 --- a/net/minecraft/world/level/block/AnvilBlock.java +++ b/net/minecraft/world/level/block/AnvilBlock.java -@@ -54,6 +54,53 @@ public class AnvilBlock extends FallingBlock { +@@ -54,6 +_,53 @@ return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getClockWise()); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AzaleaBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch similarity index 70% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AzaleaBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch index 8fd8fb712..066e2cfd6 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/AzaleaBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/AzaleaBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/AzaleaBlock.java b/net/minecraft/world/level/block/AzaleaBlock.java -index 435a455ad2ec3dfb142d570a51a720bc6c49dac3..32a1dc20202bad7a15794e98cdc1bf2fb2ad5308 100644 --- a/net/minecraft/world/level/block/AzaleaBlock.java +++ b/net/minecraft/world/level/block/AzaleaBlock.java -@@ -50,6 +50,20 @@ public class AzaleaBlock extends VegetationBlock implements BonemealableBlock { +@@ -50,6 +_,20 @@ @Override public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch new file mode 100644 index 000000000..fd6497469 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch @@ -0,0 +1,10 @@ +--- a/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java ++++ b/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java +@@ -39,6 +_,7 @@ + } + + protected static boolean scanForWater(BlockState state, BlockGetter level, BlockPos pos) { ++ if (!((net.minecraft.world.level.LevelAccessor) level).getMinecraftWorld().purpurConfig.coralDieOutsideWater) return true; // Purpur - Config to not let coral die + if (state.getValue(WATERLOGGED)) { + return true; + } else { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BedBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch similarity index 73% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BedBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch index 8ae56d2c3..e0980cdaf 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BedBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/BedBlock.java b/net/minecraft/world/level/block/BedBlock.java -index e72ead9ff6541f821a61ad3c50fe068a8c8bb69d..a6f4db5c99d332ac26a52d5174f75e7dc9f51fe5 100644 --- a/net/minecraft/world/level/block/BedBlock.java +++ b/net/minecraft/world/level/block/BedBlock.java -@@ -98,7 +98,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -98,7 +_,7 @@ } Vec3 center = pos.getCenter(); @@ -17,7 +9,7 @@ index e72ead9ff6541f821a61ad3c50fe068a8c8bb69d..a6f4db5c99d332ac26a52d5174f75e7d return InteractionResult.SUCCESS_SERVER; } else if (state.getValue(OCCUPIED)) { if (!BedBlock.canSetSpawn(level)) return this.explodeBed(state, level, pos); // Paper - check explode first -@@ -146,7 +146,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -146,7 +_,7 @@ } Vec3 center = pos.getCenter(); @@ -26,7 +18,7 @@ index e72ead9ff6541f821a61ad3c50fe068a8c8bb69d..a6f4db5c99d332ac26a52d5174f75e7d return InteractionResult.SUCCESS_SERVER; } // CraftBukkit end -@@ -167,7 +167,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -167,7 +_,7 @@ @Override public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch new file mode 100644 index 000000000..20fb7e9e1 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/level/block/BigDripleafBlock.java ++++ b/net/minecraft/world/level/block/BigDripleafBlock.java +@@ -254,7 +_,7 @@ + playTiltSound(level, pos, sound); + } + +- int _int = DELAY_UNTIL_NEXT_TILT_STATE.getInt(tilt); ++ int _int = level.purpurConfig.bigDripleafTiltDelay.getOrDefault(tilt, -1); // Purpur - Big dripleaf tilt delay + if (_int != -1) { + level.scheduleTick(pos, this, _int); + } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Block.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch similarity index 85% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Block.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch index 46a6170eb..aee7753ae 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Block.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/Block.java b/net/minecraft/world/level/block/Block.java -index be6f37f91569c659c609e5e8d38671ca86f8cd95..d023c985344807db2180665a15d282fa50754299 100644 --- a/net/minecraft/world/level/block/Block.java +++ b/net/minecraft/world/level/block/Block.java -@@ -99,6 +99,10 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -99,6 +_,10 @@ public static final int UPDATE_LIMIT = 512; protected final StateDefinition stateDefinition; private BlockState defaultBlockState; @@ -19,7 +11,7 @@ index be6f37f91569c659c609e5e8d38671ca86f8cd95..d023c985344807db2180665a15d282fa // Paper start - Protect Bedrock and End Portal/Frames from being destroyed public final boolean isDestroyable() { return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits || -@@ -345,7 +349,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -345,7 +_,7 @@ 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()) { @@ -28,7 +20,7 @@ index be6f37f91569c659c609e5e8d38671ca86f8cd95..d023c985344807db2180665a15d282fa } state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, false); // Paper - Properly handle xp dropping block.popExperience(serverLevel, pos, event.getExpToDrop()); // Paper - Properly handle xp dropping -@@ -363,7 +367,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -363,7 +_,7 @@ public static void dropResources(BlockState state, LevelAccessor level, BlockPos pos, @Nullable BlockEntity blockEntity) { if (level instanceof ServerLevel) { @@ -37,7 +29,7 @@ index be6f37f91569c659c609e5e8d38671ca86f8cd95..d023c985344807db2180665a15d282fa state.spawnAfterBreak((ServerLevel)level, pos, ItemStack.EMPTY, true); } } -@@ -375,11 +379,30 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -375,11 +_,30 @@ public static void dropResources(BlockState state, Level level, BlockPos pos, @Nullable BlockEntity blockEntity, @Nullable Entity entity, ItemStack tool, boolean dropExperience) { // Paper end - Properly handle xp dropping if (level instanceof ServerLevel) { @@ -69,10 +61,11 @@ index be6f37f91569c659c609e5e8d38671ca86f8cd95..d023c985344807db2180665a15d282fa public static void popResource(Level level, BlockPos pos, ItemStack stack) { double d = EntityType.ITEM.getHeight() / 2.0; double d1 = pos.getX() + 0.5 + Mth.nextDouble(level.random, -0.25, 0.25); -@@ -460,7 +483,15 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -460,7 +_,15 @@ } public void setPlacedBy(Level level, BlockPos pos, BlockState state, @Nullable LivingEntity placer, ItemStack stack) { +- } + this.placer = placer; // Purpur - Store placer on Block when placed + } + @@ -80,12 +73,12 @@ index be6f37f91569c659c609e5e8d38671ca86f8cd95..d023c985344807db2180665a15d282fa + @Nullable protected LivingEntity placer = null; + public void forgetPlacer() { + this.placer = null; - } ++ } + // Purpur end - Store placer on Block when placed public boolean isPossibleToRespawnInThis(BlockState state) { return !state.isSolid() && !state.liquid(); -@@ -471,7 +502,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -471,7 +_,7 @@ } public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Blocks.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch similarity index 59% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Blocks.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch index 993f701d4..5459a3f25 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/Blocks.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Blocks.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/Blocks.java b/net/minecraft/world/level/block/Blocks.java -index ff2743d808f3c309bf098b98a6fcba7d019f54c1..941c57083803d69503e83c3ccbbb2759ba3db605 100644 --- a/net/minecraft/world/level/block/Blocks.java +++ b/net/minecraft/world/level/block/Blocks.java -@@ -6571,6 +6571,7 @@ public class Blocks { +@@ -6571,6 +_,7 @@ BlockBehaviour.Properties.of() .mapColor(MapColor.PLANT) .forceSolidOff() @@ -16,7 +8,7 @@ index ff2743d808f3c309bf098b98a6fcba7d019f54c1..941c57083803d69503e83c3ccbbb2759 .instabreak() .sound(SoundType.AZALEA) .noOcclusion() -@@ -6582,6 +6583,7 @@ public class Blocks { +@@ -6582,6 +_,7 @@ BlockBehaviour.Properties.of() .mapColor(MapColor.PLANT) .forceSolidOff() diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch similarity index 67% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch index 888e2b79e..86ef53933 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/BubbleColumnBlock.java b/net/minecraft/world/level/block/BubbleColumnBlock.java -index ab93da06d9e9858668aa796db497f282afa7020a..23a9c30baf8d33855703d45c2739fd5072d81adc 100644 --- a/net/minecraft/world/level/block/BubbleColumnBlock.java +++ b/net/minecraft/world/level/block/BubbleColumnBlock.java -@@ -98,9 +98,9 @@ public class BubbleColumnBlock extends Block implements BucketPickup { +@@ -98,9 +_,9 @@ if (blockState.is(Blocks.BUBBLE_COLUMN)) { return blockState; } else if (blockState.is(Blocks.SOUL_SAND)) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CactusBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch similarity index 80% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CactusBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch index 55f81b7b5..4fec7e3b9 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CactusBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CactusBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/CactusBlock.java b/net/minecraft/world/level/block/CactusBlock.java -index d4fbf130e23a959be8268085067b3bea1541be9a..2e79ce7e02aaa4abcef1507bba71e0305b6c696f 100644 --- a/net/minecraft/world/level/block/CactusBlock.java +++ b/net/minecraft/world/level/block/CactusBlock.java -@@ -22,7 +22,7 @@ import net.minecraft.world.level.pathfinder.PathComputationType; +@@ -22,7 +_,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -17,7 +9,7 @@ index d4fbf130e23a959be8268085067b3bea1541be9a..2e79ce7e02aaa4abcef1507bba71e030 public static final MapCodec CODEC = simpleCodec(CactusBlock::new); public static final IntegerProperty AGE = BlockStateProperties.AGE_15; public static final int MAX_AGE = 15; -@@ -117,7 +117,7 @@ public class CactusBlock extends Block { +@@ -117,7 +_,7 @@ protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { for (Direction direction : Direction.Plane.HORIZONTAL) { BlockState blockState = level.getBlockState(pos.relative(direction)); @@ -26,7 +18,7 @@ index d4fbf130e23a959be8268085067b3bea1541be9a..2e79ce7e02aaa4abcef1507bba71e030 return false; } } -@@ -141,4 +141,34 @@ public class CactusBlock extends Block { +@@ -141,4 +_,34 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return false; } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CakeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch similarity index 59% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CakeBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch index ed2702045..c78b443f8 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CakeBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CakeBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/CakeBlock.java b/net/minecraft/world/level/block/CakeBlock.java -index 72236993ebc4fbfc8b6316577caaa9c780bd447b..7c3b5170690af3bbdc856af96c3e01b0e55d6412 100644 --- a/net/minecraft/world/level/block/CakeBlock.java +++ b/net/minecraft/world/level/block/CakeBlock.java -@@ -109,6 +109,7 @@ public class CakeBlock extends Block { +@@ -109,6 +_,7 @@ org.bukkit.event.entity.FoodLevelChangeEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callFoodLevelChangeEvent(player, 2 + oldFoodLevel); if (!event.isCancelled()) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CampfireBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch similarity index 52% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CampfireBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch index 2ce31e596..6557f2a69 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CampfireBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CampfireBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/CampfireBlock.java b/net/minecraft/world/level/block/CampfireBlock.java -index 028e2ad8bcb23b3f9f80a5ec551204bb2d7db1ae..642550d59e17330437028a84830520f394a41728 100644 --- a/net/minecraft/world/level/block/CampfireBlock.java +++ b/net/minecraft/world/level/block/CampfireBlock.java -@@ -124,7 +124,7 @@ public class CampfireBlock extends BaseEntityBlock implements SimpleWaterloggedB +@@ -124,7 +_,7 @@ return this.defaultBlockState() .setValue(WATERLOGGED, flag) .setValue(SIGNAL_FIRE, this.isSmokeSource(level.getBlockState(clickedPos.below()))) diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch similarity index 78% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch index aa617fdd9..3ab8cbc0e 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CarvedPumpkinBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/CarvedPumpkinBlock.java b/net/minecraft/world/level/block/CarvedPumpkinBlock.java -index 7cdf16c7216878350537b5331081cb30f44d6dbb..a4854370dfdcbc7ec4c27975e4feb69d4cb48a11 100644 --- a/net/minecraft/world/level/block/CarvedPumpkinBlock.java +++ b/net/minecraft/world/level/block/CarvedPumpkinBlock.java -@@ -64,7 +64,7 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { +@@ -64,7 +_,7 @@ if (blockPatternMatch != null) { SnowGolem snowGolem = EntityType.SNOW_GOLEM.create(level, EntitySpawnReason.TRIGGERED); if (snowGolem != null) { @@ -17,7 +9,7 @@ index 7cdf16c7216878350537b5331081cb30f44d6dbb..a4854370dfdcbc7ec4c27975e4feb69d } } else { BlockPattern.BlockPatternMatch blockPatternMatch1 = this.getOrCreateIronGolemFull().find(level, pos); -@@ -72,13 +72,23 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { +@@ -72,13 +_,23 @@ IronGolem ironGolem = EntityType.IRON_GOLEM.create(level, EntitySpawnReason.TRIGGERED); if (ironGolem != null) { ironGolem.setPlayerCreated(true); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CauldronBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch similarity index 60% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CauldronBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch index 404e8e6c4..6ead2196b 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CauldronBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CauldronBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/CauldronBlock.java b/net/minecraft/world/level/block/CauldronBlock.java -index d58b49e550cfa683f753db2a913fddf307a1bba2..62ee64b97dfb2f1426d43cf1f8b0b0b6ec63b5b1 100644 --- a/net/minecraft/world/level/block/CauldronBlock.java +++ b/net/minecraft/world/level/block/CauldronBlock.java -@@ -32,8 +32,8 @@ public class CauldronBlock extends AbstractCauldronBlock { +@@ -32,8 +_,8 @@ protected static boolean shouldHandlePrecipitation(Level level, Biome.Precipitation precipitation) { return precipitation == Biome.Precipitation.RAIN diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch similarity index 52% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch index 8f8dc61ed..631c2fafe 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CaveVinesBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/CaveVinesBlock.java b/net/minecraft/world/level/block/CaveVinesBlock.java -index 4e1a81c01a5c51a977e4fe9d2465e4ef20aab6d4..d67f278e8cb630b680cad22f4117a9545576bf0f 100644 --- a/net/minecraft/world/level/block/CaveVinesBlock.java +++ b/net/minecraft/world/level/block/CaveVinesBlock.java -@@ -92,4 +92,11 @@ public class CaveVinesBlock extends GrowingPlantHeadBlock implements CaveVines { +@@ -92,4 +_,11 @@ public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { level.setBlock(pos, state.setValue(BERRIES, true), 2); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch similarity index 52% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch index 880f90b83..54d2fa463 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChangeOverTimeBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/ChangeOverTimeBlock.java b/net/minecraft/world/level/block/ChangeOverTimeBlock.java -index ba7dbfa3f95bf93f3e50b17aa48b772a3047b74d..d42062a86c1278b71bc085cc3fb29a69039873de 100644 --- a/net/minecraft/world/level/block/ChangeOverTimeBlock.java +++ b/net/minecraft/world/level/block/ChangeOverTimeBlock.java -@@ -51,7 +51,7 @@ public interface ChangeOverTimeBlock> { +@@ -51,7 +_,7 @@ } float f = (float)(i1 + 1) / (i1 + i + 1); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChestBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch similarity index 50% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChestBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch index df1eb04c1..92f2abf28 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ChestBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/ChestBlock.java b/net/minecraft/world/level/block/ChestBlock.java -index c4937d1b482e2ec60961bda62ad6cc155f0ce8f7..43f9d4b8a7ab4cd0a1a5dee9d0c0c7790894a2ae 100644 --- a/net/minecraft/world/level/block/ChestBlock.java +++ b/net/minecraft/world/level/block/ChestBlock.java -@@ -337,6 +337,7 @@ public class ChestBlock extends AbstractChestBlock implements +@@ -337,6 +_,7 @@ } public static boolean isBlockedChestByBlock(BlockGetter level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ComposterBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch similarity index 81% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ComposterBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch index 713855f07..8ee18624a 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ComposterBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ComposterBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/ComposterBlock.java b/net/minecraft/world/level/block/ComposterBlock.java -index a647d76d365a60b95a3eb7927ac426bf70d417f3..3eb11df5d14ec63911be630ca99d8d9903723f9b 100644 --- a/net/minecraft/world/level/block/ComposterBlock.java +++ b/net/minecraft/world/level/block/ComposterBlock.java -@@ -250,17 +250,27 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { +@@ -250,23 +_,52 @@ ) { int levelValue = state.getValue(LEVEL); if (levelValue < 8 && COMPOSTABLES.containsKey(stack.getItem())) { @@ -22,6 +14,7 @@ index a647d76d365a60b95a3eb7927ac426bf70d417f3..3eb11df5d14ec63911be630ca99d8d99 - level.levelEvent(1500, pos, state != blockState ? 1 : 0); - player.awardStat(Stats.ITEM_USED.get(stack.getItem())); - stack.consume(1, player); +- } + // Purpur start - sneak to bulk process composter + BlockState newState = process(levelValue, player, state, level, pos, stack); + if (newState == null) { @@ -41,15 +34,15 @@ index a647d76d365a60b95a3eb7927ac426bf70d417f3..3eb11df5d14ec63911be630ca99d8d99 + newCount = stack.getCount(); + newLevel = newState.getValue(ComposterBlock.LEVEL); + } while (newCount > 0 && (newCount != oldCount || newLevel != oldLevel || newState != oldState)); - } ++ } + // Purpur end - Sneak to bulk process composter return InteractionResult.SUCCESS; } else { -@@ -268,6 +278,25 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { + return super.useItemOn(stack, state, level, pos, player, hand, hitResult); } } - ++ + // Purpur start - sneak to bulk process composter + private static @Nullable BlockState process(int levelValue, Player player, BlockState state, Level level, BlockPos pos, ItemStack stack) { + if (levelValue < 7 && !level.isClientSide) { @@ -68,7 +61,6 @@ index a647d76d365a60b95a3eb7927ac426bf70d417f3..3eb11df5d14ec63911be630ca99d8d99 + return state; + } + // Purpur end - Sneak to bulk process composter -+ + @Override protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { - int levelValue = state.getValue(LEVEL); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CoralBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch similarity index 54% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CoralBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch index 510e22e22..690cfe031 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CoralBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CoralBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/CoralBlock.java b/net/minecraft/world/level/block/CoralBlock.java -index e0be02eaa07d40d0738931383426517d20fe3b0b..b747af5f3c65f4b79a304b0e903f7b824fb03d8d 100644 --- a/net/minecraft/world/level/block/CoralBlock.java +++ b/net/minecraft/world/level/block/CoralBlock.java -@@ -65,6 +65,7 @@ public class CoralBlock extends Block { +@@ -65,6 +_,7 @@ } protected boolean scanForWater(BlockGetter level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CropBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch similarity index 78% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CropBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch index ec412e6af..667d7f96f 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/CropBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/CropBlock.java b/net/minecraft/world/level/block/CropBlock.java -index a38ce03a4dab6c83a0b54f47fd3c36d6da46fa24..b370b955ac8636275dfada4f38a7ca10297f7dac 100644 --- a/net/minecraft/world/level/block/CropBlock.java +++ b/net/minecraft/world/level/block/CropBlock.java -@@ -169,7 +169,7 @@ public class CropBlock extends VegetationBlock implements BonemealableBlock { +@@ -169,7 +_,7 @@ @Override protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent @@ -17,7 +9,7 @@ index a38ce03a4dab6c83a0b54f47fd3c36d6da46fa24..b370b955ac8636275dfada4f38a7ca10 serverLevel.destroyBlock(pos, true, entity); } -@@ -204,4 +204,15 @@ public class CropBlock extends VegetationBlock implements BonemealableBlock { +@@ -204,4 +_,15 @@ protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DoorBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch similarity index 74% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DoorBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch index 6b4948207..235a738f9 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DoorBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DoorBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/DoorBlock.java b/net/minecraft/world/level/block/DoorBlock.java -index 7f40ccfe379ab284424d730213b343e17239dc0c..2fa6a85b0f1694d0989905a421198c6495271beb 100644 --- a/net/minecraft/world/level/block/DoorBlock.java +++ b/net/minecraft/world/level/block/DoorBlock.java -@@ -199,6 +199,7 @@ public class DoorBlock extends Block { +@@ -199,6 +_,7 @@ protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { if (!this.type.canOpenByHand()) { return InteractionResult.PASS; @@ -16,7 +8,7 @@ index 7f40ccfe379ab284424d730213b343e17239dc0c..2fa6a85b0f1694d0989905a421198c64 } else { state = state.cycle(OPEN); level.setBlock(pos, state, 10); -@@ -287,4 +288,18 @@ public class DoorBlock extends Block { +@@ -287,4 +_,18 @@ public static boolean isWoodenDoor(BlockState state) { return state.getBlock() instanceof DoorBlock doorBlock && doorBlock.type().canOpenByHand(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch new file mode 100644 index 000000000..d08f61da6 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/DragonEggBlock.java.patch @@ -0,0 +1,10 @@ +--- a/net/minecraft/world/level/block/DragonEggBlock.java ++++ b/net/minecraft/world/level/block/DragonEggBlock.java +@@ -46,6 +_,7 @@ + } + + private void teleport(BlockState state, Level level, BlockPos pos) { ++ if (!level.purpurConfig.dragonEggTeleport) return; // Purpur - Option to disable dragon egg teleporting + WorldBorder worldBorder = level.getWorldBorder(); + + for (int i = 0; i < 1000; i++) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch similarity index 68% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch index 9c17c185f..30d849778 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/EnchantingTableBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/EnchantingTableBlock.java b/net/minecraft/world/level/block/EnchantingTableBlock.java -index 523082c69aad8269cd058ad6864184c3ab51dbeb..4f4e81a845c4d3dc0e7d82ba323a8595581535e2 100644 --- a/net/minecraft/world/level/block/EnchantingTableBlock.java +++ b/net/minecraft/world/level/block/EnchantingTableBlock.java -@@ -119,4 +119,16 @@ public class EnchantingTableBlock extends BaseEntityBlock { +@@ -119,4 +_,16 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return false; } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/FarmBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch similarity index 83% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/FarmBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch index 660ef4873..c04018815 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/FarmBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/FarmBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/FarmBlock.java b/net/minecraft/world/level/block/FarmBlock.java -index a31ac95237515b874f59941ec24c74e2c357b3d8..9883e6d1a1b76155c8ba1817fda6615b4742e18e 100644 --- a/net/minecraft/world/level/block/FarmBlock.java +++ b/net/minecraft/world/level/block/FarmBlock.java -@@ -112,7 +112,7 @@ public class FarmBlock extends Block { +@@ -112,7 +_,7 @@ public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { super.fallOn(level, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. if (level instanceof ServerLevel serverLevel @@ -17,7 +9,7 @@ index a31ac95237515b874f59941ec24c74e2c357b3d8..9883e6d1a1b76155c8ba1817fda6615b && entity instanceof LivingEntity && (entity instanceof Player || serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) { -@@ -129,6 +129,28 @@ public class FarmBlock extends Block { +@@ -129,6 +_,28 @@ return; } @@ -46,7 +38,7 @@ index a31ac95237515b874f59941ec24c74e2c357b3d8..9883e6d1a1b76155c8ba1817fda6615b if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; } -@@ -177,7 +199,7 @@ public class FarmBlock extends Block { +@@ -177,7 +_,7 @@ } } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch similarity index 77% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch index a4a78f446..7dd50302a 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/GrowingPlantHeadBlock.java b/net/minecraft/world/level/block/GrowingPlantHeadBlock.java -index fe11f3ec82ebdbdf3d024d7273fb16b6823b1ece..daaf0ddee9192fa24a70954ce52b381560fcbc1f 100644 --- a/net/minecraft/world/level/block/GrowingPlantHeadBlock.java +++ b/net/minecraft/world/level/block/GrowingPlantHeadBlock.java -@@ -34,12 +34,12 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -34,12 +_,12 @@ @Override public BlockState getStateForPlacement(RandomSource random) { @@ -23,7 +15,7 @@ index fe11f3ec82ebdbdf3d024d7273fb16b6823b1ece..daaf0ddee9192fa24a70954ce52b3815 } @Override -@@ -55,7 +55,7 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -55,7 +_,7 @@ } else if (this == Blocks.CAVE_VINES) { modifier = level.spigotConfig.caveVinesModifier; } @@ -32,7 +24,7 @@ index fe11f3ec82ebdbdf3d024d7273fb16b6823b1ece..daaf0ddee9192fa24a70954ce52b3815 // Spigot end BlockPos blockPos = pos.relative(this.growthDirection); if (this.canGrowInto(level.getBlockState(blockPos))) { -@@ -75,11 +75,11 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -75,11 +_,11 @@ } public BlockState getMaxAgeState(BlockState state) { @@ -46,7 +38,7 @@ index fe11f3ec82ebdbdf3d024d7273fb16b6823b1ece..daaf0ddee9192fa24a70954ce52b3815 } protected BlockState updateBodyAfterConvertedFromHead(BlockState head, BlockState body) { -@@ -137,13 +137,13 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -137,13 +_,13 @@ @Override public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { BlockPos blockPos = pos.relative(this.growthDirection); @@ -62,7 +54,7 @@ index fe11f3ec82ebdbdf3d024d7273fb16b6823b1ece..daaf0ddee9192fa24a70954ce52b3815 } } -@@ -155,4 +155,6 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements +@@ -155,4 +_,6 @@ protected GrowingPlantHeadBlock getHeadBlock() { return this; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch new file mode 100644 index 000000000..1b21c6e0a --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/HayBlock.java.patch @@ -0,0 +1,10 @@ +--- a/net/minecraft/world/level/block/HayBlock.java ++++ b/net/minecraft/world/level/block/HayBlock.java +@@ -23,6 +_,6 @@ + + @Override + public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { +- entity.causeFallDamage(fallDistance, 0.2F, level.damageSources().fall()); ++ super.fallOn(level, state, pos, entity, fallDistance); // Purpur - Configurable block fall damage modifiers + } + } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/IceBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch similarity index 65% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/IceBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch index 9126c24b1..0f5251d57 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/IceBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/IceBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/IceBlock.java b/net/minecraft/world/level/block/IceBlock.java -index be7141a4009036bcf3f92bba5d0ad74459e99bfa..a4d735a4365fdaf9e602315aa1176dfd5db77ff5 100644 --- a/net/minecraft/world/level/block/IceBlock.java +++ b/net/minecraft/world/level/block/IceBlock.java -@@ -40,7 +40,7 @@ public class IceBlock extends HalfTransparentBlock { +@@ -40,7 +_,7 @@ public void afterDestroy(Level level, BlockPos pos, ItemStack stack) { // Paper end - Improve Block#breakNaturally API if (!EnchantmentHelper.hasTag(stack, EnchantmentTags.PREVENTS_ICE_MELTING)) { @@ -17,7 +9,7 @@ index be7141a4009036bcf3f92bba5d0ad74459e99bfa..a4d735a4365fdaf9e602315aa1176dfd level.removeBlock(pos, false); return; } -@@ -65,7 +65,7 @@ public class IceBlock extends HalfTransparentBlock { +@@ -65,7 +_,7 @@ return; } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch new file mode 100644 index 000000000..b0ce9ac1a --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/KelpBlock.java.patch @@ -0,0 +1,14 @@ +--- a/net/minecraft/world/level/block/KelpBlock.java ++++ b/net/minecraft/world/level/block/KelpBlock.java +@@ -72,4 +_,11 @@ + protected FluidState getFluidState(BlockState state) { + return Fluids.WATER.getSource(false); + } ++ ++ // Purpur start - kelp vines configurable max growth age ++ @Override ++ public int getMaxGrowthAge() { ++ return org.purpurmc.purpur.PurpurConfig.kelpMaxGrowthAge; ++ } ++ // Purpur end - kelp vines configurable max growth age + } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/LiquidBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch similarity index 71% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/LiquidBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch index 88f61cca5..ef0559942 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/LiquidBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/LiquidBlock.java b/net/minecraft/world/level/block/LiquidBlock.java -index 7320b416e8d660419018b0699f49ab6f45a3373b..ae609e0603a78423c4c89b7efb9c41ab8fe7aa52 100644 --- a/net/minecraft/world/level/block/LiquidBlock.java +++ b/net/minecraft/world/level/block/LiquidBlock.java -@@ -134,7 +134,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -134,7 +_,7 @@ @Override protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean isMoving) { @@ -17,7 +9,7 @@ index 7320b416e8d660419018b0699f49ab6f45a3373b..ae609e0603a78423c4c89b7efb9c41ab level.scheduleTick(pos, state.getFluidState().getType(), this.getFlowSpeed(level, pos)); // Paper - Configurable speed for water flowing over lava } } -@@ -169,7 +169,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -169,7 +_,7 @@ BlockState neighborState, RandomSource random ) { @@ -26,7 +18,7 @@ index 7320b416e8d660419018b0699f49ab6f45a3373b..ae609e0603a78423c4c89b7efb9c41ab scheduledTickAccess.scheduleTick(pos, state.getFluidState().getType(), this.fluid.getTickDelay(level)); } -@@ -178,7 +178,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -178,7 +_,7 @@ @Override protected void neighborChanged(BlockState state, Level level, BlockPos pos, Block neighborBlock, @Nullable Orientation orientation, boolean movedByPiston) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/MagmaBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch similarity index 57% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/MagmaBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch index 2023dadda..f9d8ca928 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/MagmaBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/MagmaBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/MagmaBlock.java b/net/minecraft/world/level/block/MagmaBlock.java -index db83c3630064a6875b477021a1f78bdf59c4ddc3..bbf8447cf986015f8a2e55f39d7b4f0dd9abcb23 100644 --- a/net/minecraft/world/level/block/MagmaBlock.java +++ b/net/minecraft/world/level/block/MagmaBlock.java -@@ -28,7 +28,7 @@ public class MagmaBlock extends Block { +@@ -28,7 +_,7 @@ @Override public void stepOn(Level level, BlockPos pos, BlockState state, Entity entity) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch similarity index 66% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch index a363499f8..f3f45c58f 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherPortalBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/NetherPortalBlock.java b/net/minecraft/world/level/block/NetherPortalBlock.java -index 6c5629a6f5f91496a55eb0bf281ceae1567915b1..f408bdd8083210b2ef660e6194610462a3e113b6 100644 --- a/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/net/minecraft/world/level/block/NetherPortalBlock.java -@@ -67,7 +67,7 @@ public class NetherPortalBlock extends Block implements Portal { +@@ -67,7 +_,7 @@ protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { if (level.spigotConfig.enableZombiePigmenPortalSpawns && level.dimensionType().natural() // Spigot && level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) @@ -17,7 +9,7 @@ index 6c5629a6f5f91496a55eb0bf281ceae1567915b1..f408bdd8083210b2ef660e6194610462 && level.anyPlayerCloseEnoughForSpawning(pos)) { while (level.getBlockState(pos).is(this)) { pos = pos.below(); -@@ -125,7 +125,7 @@ public class NetherPortalBlock extends Block implements Portal { +@@ -125,7 +_,7 @@ @Override public int getPortalTransitionTime(ServerLevel level, Entity entity) { return entity instanceof Player player diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherWartBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch similarity index 81% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherWartBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch index c81f54054..362dae20a 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NetherWartBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NetherWartBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/NetherWartBlock.java b/net/minecraft/world/level/block/NetherWartBlock.java -index a8cb58de6223006150bc49b95e5964b8fc42cecc..d25e2a37abb5e4c98116048fe2e96194149763ca 100644 --- a/net/minecraft/world/level/block/NetherWartBlock.java +++ b/net/minecraft/world/level/block/NetherWartBlock.java -@@ -16,7 +16,7 @@ import net.minecraft.world.level.block.state.properties.IntegerProperty; +@@ -16,7 +_,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -17,7 +9,7 @@ index a8cb58de6223006150bc49b95e5964b8fc42cecc..d25e2a37abb5e4c98116048fe2e96194 public static final MapCodec CODEC = simpleCodec(NetherWartBlock::new); public static final int MAX_AGE = 3; public static final IntegerProperty AGE = BlockStateProperties.AGE_3; -@@ -65,4 +65,34 @@ public class NetherWartBlock extends VegetationBlock { +@@ -65,4 +_,34 @@ protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NoteBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch similarity index 59% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NoteBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch index d7e680f32..42c3d0b22 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/NoteBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/NoteBlock.java b/net/minecraft/world/level/block/NoteBlock.java -index 9467d5226797f67565edf8a46fd5b48135337410..7560d49b1952dba22e88758b15a24540ca576bbb 100644 --- a/net/minecraft/world/level/block/NoteBlock.java +++ b/net/minecraft/world/level/block/NoteBlock.java -@@ -101,7 +101,7 @@ public class NoteBlock extends Block { +@@ -101,7 +_,7 @@ } private void playNote(@Nullable Entity entity, BlockState state, Level level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ObserverBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch similarity index 54% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ObserverBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch index 6c3569580..3202a8cee 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/ObserverBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ObserverBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/ObserverBlock.java b/net/minecraft/world/level/block/ObserverBlock.java -index bd2aa00ce8b78c16f6107064dd00bfbb072df0df..9fa1ed439ef9adba44f3d4738688a95fb4625b68 100644 --- a/net/minecraft/world/level/block/ObserverBlock.java +++ b/net/minecraft/world/level/block/ObserverBlock.java -@@ -81,6 +81,7 @@ public class ObserverBlock extends DirectionalBlock { +@@ -81,6 +_,7 @@ RandomSource random ) { if (state.getValue(FACING) == direction && !state.getValue(POWERED)) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch similarity index 73% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch index 29dbc65c6..cad7d9a3c 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PointedDripstoneBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/PointedDripstoneBlock.java b/net/minecraft/world/level/block/PointedDripstoneBlock.java -index ef164fb4f24412e506b8abce74d509e8be6c4676..85e9aecc2045e1599488d6a137f5f9713fb1a245 100644 --- a/net/minecraft/world/level/block/PointedDripstoneBlock.java +++ b/net/minecraft/world/level/block/PointedDripstoneBlock.java -@@ -193,20 +193,20 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate +@@ -193,20 +_,20 @@ @VisibleForTesting public static void maybeTransferFluid(BlockState state, ServerLevel level, BlockPos pos, float randChance) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch similarity index 51% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch index c3c34af13..f6c12cc4c 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/PoweredRailBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/PoweredRailBlock.java b/net/minecraft/world/level/block/PoweredRailBlock.java -index e4c4a6b4a6ea41b1fdb006cfc70dfb68dcd056c0..0c78c9003d93d0a36da9318910b6f0769932d39a 100644 --- a/net/minecraft/world/level/block/PoweredRailBlock.java +++ b/net/minecraft/world/level/block/PoweredRailBlock.java -@@ -28,7 +28,7 @@ public class PoweredRailBlock extends BaseRailBlock { +@@ -28,7 +_,7 @@ } protected boolean findPoweredRailSignal(Level level, BlockPos pos, BlockState state, boolean searchForward, int recursionCount) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch similarity index 62% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch index 2088be7ad..c5ac40711 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/RespawnAnchorBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/RespawnAnchorBlock.java b/net/minecraft/world/level/block/RespawnAnchorBlock.java -index 5b9d67d671ea70d4a8920a7f190d240c920971ac..f0b4ea2065f98f5430bba89f1a86ea5e8791aa1f 100644 --- a/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/net/minecraft/world/level/block/RespawnAnchorBlock.java -@@ -160,7 +160,7 @@ public class RespawnAnchorBlock extends Block { +@@ -160,7 +_,7 @@ }; Vec3 center = pos2.getCenter(); level.explode( diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch similarity index 57% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch index 3dd7094fd..aa23616be 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SculkShriekerBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/SculkShriekerBlock.java b/net/minecraft/world/level/block/SculkShriekerBlock.java -index 757f8453e147875ab9f14d9726bb734ef27447c9..f8c9a6d7c9f1a9d2afd820244017a709db79e080 100644 --- a/net/minecraft/world/level/block/SculkShriekerBlock.java +++ b/net/minecraft/world/level/block/SculkShriekerBlock.java -@@ -118,7 +118,7 @@ public class SculkShriekerBlock extends BaseEntityBlock implements SimpleWaterlo +@@ -118,7 +_,7 @@ @Nullable @Override public BlockState getStateForPlacement(BlockPlaceContext context) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SlabBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch similarity index 73% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SlabBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch index d85e52957..9e9c9b817 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SlabBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SlabBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/SlabBlock.java b/net/minecraft/world/level/block/SlabBlock.java -index a71d72147db9766fa16bdb6254d8eb6f2f7dba7b..66b9862563932faf0044810bde7bd3fb522c109b 100644 --- a/net/minecraft/world/level/block/SlabBlock.java +++ b/net/minecraft/world/level/block/SlabBlock.java -@@ -144,4 +144,25 @@ public class SlabBlock extends Block implements SimpleWaterloggedBlock { +@@ -144,4 +_,25 @@ return false; } } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch similarity index 56% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch index d4ed6c564..ca87324a4 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SnowLayerBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/SnowLayerBlock.java b/net/minecraft/world/level/block/SnowLayerBlock.java -index 9131098e3ae4e6ffdf1491eb62537e385f75b6b2..ddedc08a96e500a390421d39be36590f37f49d24 100644 --- a/net/minecraft/world/level/block/SnowLayerBlock.java +++ b/net/minecraft/world/level/block/SnowLayerBlock.java -@@ -76,6 +76,7 @@ public class SnowLayerBlock extends Block { +@@ -76,6 +_,7 @@ @Override protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { BlockState blockState = level.getBlockState(pos.below()); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpawnerBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch similarity index 90% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpawnerBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch index 6c3136793..0b505b086 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpawnerBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpawnerBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/SpawnerBlock.java b/net/minecraft/world/level/block/SpawnerBlock.java -index e8d7b6adbcb84e8d89067b54318e0feb3c3276a6..dc2846e26e778b2885fd9c558081c7677d48169a 100644 --- a/net/minecraft/world/level/block/SpawnerBlock.java +++ b/net/minecraft/world/level/block/SpawnerBlock.java -@@ -14,6 +14,7 @@ import net.minecraft.world.level.block.state.BlockBehaviour; +@@ -14,6 +_,7 @@ import net.minecraft.world.level.block.state.BlockState; public class SpawnerBlock extends BaseEntityBlock { @@ -16,7 +8,7 @@ index e8d7b6adbcb84e8d89067b54318e0feb3c3276a6..dc2846e26e778b2885fd9c558081c767 public static final MapCodec CODEC = simpleCodec(SpawnerBlock::new); @Override -@@ -38,6 +39,62 @@ public class SpawnerBlock extends BaseEntityBlock { +@@ -38,6 +_,62 @@ ); } @@ -79,7 +71,7 @@ index e8d7b6adbcb84e8d89067b54318e0feb3c3276a6..dc2846e26e778b2885fd9c558081c767 @Override protected void spawnAfterBreak(BlockState state, ServerLevel level, BlockPos pos, ItemStack stack, boolean dropExperience) { super.spawnAfterBreak(state, level, pos, stack, dropExperience); -@@ -46,6 +103,7 @@ public class SpawnerBlock extends BaseEntityBlock { +@@ -46,6 +_,7 @@ @Override public int getExpDrop(BlockState state, ServerLevel level, BlockPos pos, ItemStack stack, boolean dropExperience) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpongeBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch similarity index 80% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpongeBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch index ea43bbfc3..ab343ffb3 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SpongeBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SpongeBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/SpongeBlock.java b/net/minecraft/world/level/block/SpongeBlock.java -index 6764a77998e23de08eaf3a82a0cc0006868e1c3e..f7b6c0029e8d35ebf0fad380b8bc3b1530e2f8f1 100644 --- a/net/minecraft/world/level/block/SpongeBlock.java +++ b/net/minecraft/world/level/block/SpongeBlock.java -@@ -53,8 +53,8 @@ public class SpongeBlock extends Block { +@@ -53,8 +_,8 @@ org.bukkit.craftbukkit.util.BlockStateListPopulator blockList = new org.bukkit.craftbukkit.util.BlockStateListPopulator(level); // CraftBukkit - Use BlockStateListPopulator BlockPos.breadthFirstTraversal( pos, @@ -19,7 +11,7 @@ index 6764a77998e23de08eaf3a82a0cc0006868e1c3e..f7b6c0029e8d35ebf0fad380b8bc3b15 (validPos, queueAdder) -> { for (Direction direction : ALL_DIRECTIONS) { queueAdder.accept(validPos.relative(direction)); -@@ -68,7 +68,7 @@ public class SpongeBlock extends Block { +@@ -68,7 +_,7 @@ BlockState blockState = blockList.getBlockState(blockPos); FluidState fluidState = blockList.getFluidState(blockPos); // CraftBukkit end @@ -28,7 +20,7 @@ index 6764a77998e23de08eaf3a82a0cc0006868e1c3e..f7b6c0029e8d35ebf0fad380b8bc3b15 return BlockPos.TraversalNodeStatus.SKIP; } else if (blockState.getBlock() instanceof BucketPickup bucketPickup && !bucketPickup.pickupBlock(null, blockList, blockPos, blockState).isEmpty()) { // CraftBukkit -@@ -76,6 +76,10 @@ public class SpongeBlock extends Block { +@@ -76,6 +_,10 @@ } else { if (blockState.getBlock() instanceof LiquidBlock) { blockList.setBlock(blockPos, Blocks.AIR.defaultBlockState(), 3); // CraftBukkit diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/StonecutterBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch similarity index 63% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/StonecutterBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch index 867861d1c..8cfd145db 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/StonecutterBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/StonecutterBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/StonecutterBlock.java b/net/minecraft/world/level/block/StonecutterBlock.java -index 6d1ab251e7d09ada7edcde7f52ca49ae5efe16b6..a58c94a40bad1d60b970b06decde9851692a8b63 100644 --- a/net/minecraft/world/level/block/StonecutterBlock.java +++ b/net/minecraft/world/level/block/StonecutterBlock.java -@@ -93,4 +93,14 @@ public class StonecutterBlock extends Block { +@@ -93,4 +_,14 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return false; } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch similarity index 78% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch index 21094115f..f388f13ce 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/SugarCaneBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/SugarCaneBlock.java b/net/minecraft/world/level/block/SugarCaneBlock.java -index a8de37e173e244d7a16c19ac8805e0e4327c837a..baa56c6422c0924bb8b7c5a78db17acf784f28d6 100644 --- a/net/minecraft/world/level/block/SugarCaneBlock.java +++ b/net/minecraft/world/level/block/SugarCaneBlock.java -@@ -19,7 +19,7 @@ import net.minecraft.world.level.material.FluidState; +@@ -19,7 +_,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -17,7 +9,7 @@ index a8de37e173e244d7a16c19ac8805e0e4327c837a..baa56c6422c0924bb8b7c5a78db17acf public static final MapCodec CODEC = simpleCodec(SugarCaneBlock::new); public static final IntegerProperty AGE = BlockStateProperties.AGE_15; private static final VoxelShape SHAPE = Block.column(12.0, 0.0, 16.0); -@@ -112,4 +112,34 @@ public class SugarCaneBlock extends Block { +@@ -112,4 +_,34 @@ protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch similarity index 82% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch index bb4d9bbe5..165f005db 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/TurtleEggBlock.java b/net/minecraft/world/level/block/TurtleEggBlock.java -index 8ee103e2752290db4cb4b22bb3552bf80e2ceb92..a23626dbfacf98ef1bc7918ca35406fa71307bed 100644 --- a/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -156,7 +156,7 @@ public class TurtleEggBlock extends Block { +@@ -156,7 +_,7 @@ private boolean shouldUpdateHatchLevel(Level level) { float timeOfDay = level.getTimeOfDay(1.0F); @@ -17,7 +9,7 @@ index 8ee103e2752290db4cb4b22bb3552bf80e2ceb92..a23626dbfacf98ef1bc7918ca35406fa } @Override -@@ -189,9 +189,32 @@ public class TurtleEggBlock extends Block { +@@ -189,9 +_,32 @@ } private boolean canDestroyEgg(ServerLevel level, Entity entity) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch similarity index 50% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch index 80fca84c6..89633d8f7 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TwistingVinesBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/TwistingVinesBlock.java b/net/minecraft/world/level/block/TwistingVinesBlock.java -index afb77747ea6966c435aca4b667bfbbc909f52232..361aaca76ae0375782310af0e03241625f08f7bd 100644 --- a/net/minecraft/world/level/block/TwistingVinesBlock.java +++ b/net/minecraft/world/level/block/TwistingVinesBlock.java -@@ -34,4 +34,11 @@ public class TwistingVinesBlock extends GrowingPlantHeadBlock { +@@ -34,4 +_,11 @@ protected boolean canGrowInto(BlockState state) { return NetherVines.isValidGrowthState(state); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/VegetationBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch similarity index 78% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/VegetationBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch index b74b885aa..af22ad6c3 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/VegetationBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/VegetationBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/VegetationBlock.java b/net/minecraft/world/level/block/VegetationBlock.java -index 0aa7c1084fd6ed35260469572cdd914d87f3922a..a1b5e815425fccbc601c8062fcc24598512e47dd 100644 --- a/net/minecraft/world/level/block/VegetationBlock.java +++ b/net/minecraft/world/level/block/VegetationBlock.java -@@ -61,4 +61,24 @@ public abstract class VegetationBlock extends Block { +@@ -61,4 +_,24 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return pathComputationType == PathComputationType.AIR && !this.hasCollision || super.isPathfindable(state, pathComputationType); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch similarity index 50% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch index 6b2dd4ecc..be28707f2 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WeepingVinesBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/WeepingVinesBlock.java b/net/minecraft/world/level/block/WeepingVinesBlock.java -index f4ff810cdd4206711312a4fffba18f4b30a5701f..96fb69aaf9ed020a328ff609d49f88ab29a69952 100644 --- a/net/minecraft/world/level/block/WeepingVinesBlock.java +++ b/net/minecraft/world/level/block/WeepingVinesBlock.java -@@ -34,4 +34,11 @@ public class WeepingVinesBlock extends GrowingPlantHeadBlock { +@@ -34,4 +_,11 @@ protected boolean canGrowInto(BlockState state) { return NetherVines.isValidGrowthState(state); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch similarity index 59% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch index c99b98b19..d92c3e43b 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/WitherSkullBlock.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/WitherSkullBlock.java b/net/minecraft/world/level/block/WitherSkullBlock.java -index 0b6debe0e55e404e6f34b3bc437fe7c7a30cec7c..a70f552fddc58efdce770c36abb548ef8359d939 100644 --- a/net/minecraft/world/level/block/WitherSkullBlock.java +++ b/net/minecraft/world/level/block/WitherSkullBlock.java -@@ -71,6 +71,7 @@ public class WitherSkullBlock extends SkullBlock { +@@ -71,6 +_,7 @@ ); witherBoss.yBodyRot = blockPatternMatch.getForwards().getAxis() == Direction.Axis.X ? 0.0F : 90.0F; witherBoss.makeInvulnerable(); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch similarity index 71% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch index e199d81eb..4cb4b65da 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -index 36a72a11d28f99bfe85868461925b778cc01478e..57eae0dbb614f57e2a352613c7490145bbfeb5a1 100644 --- a/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -@@ -186,6 +186,21 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit +@@ -186,6 +_,21 @@ } ItemStack itemStack = furnace.items.get(1); @@ -30,7 +22,7 @@ index 36a72a11d28f99bfe85868461925b778cc01478e..57eae0dbb614f57e2a352613c7490145 ItemStack itemStack1 = furnace.items.get(0); boolean flag1 = !itemStack1.isEmpty(); boolean flag2 = !itemStack.isEmpty(); -@@ -269,6 +284,8 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit +@@ -269,6 +_,8 @@ if (flag) { setChanged(level, pos, state); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch similarity index 73% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch index 48e7bf263..f196366ed 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -index 503c8625cd77a564e55fc1427137d43a5cc12d9e..c2e15c6e1c6bfc5a9d89afc9b8aa9551bad2cc8f 100644 --- a/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/net/minecraft/world/level/block/entity/BeaconBlockEntity.java -@@ -143,6 +143,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name +@@ -143,6 +_,16 @@ public double getEffectRange() { if (this.effectRange < 0) { @@ -25,7 +17,7 @@ index 503c8625cd77a564e55fc1427137d43a5cc12d9e..c2e15c6e1c6bfc5a9d89afc9b8aa9551 return this.levels * 10 + 10; } else { return effectRange; -@@ -172,6 +182,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name +@@ -172,6 +_,7 @@ int y = pos.getY(); int z = pos.getZ(); BlockPos blockPos; @@ -33,7 +25,7 @@ index 503c8625cd77a564e55fc1427137d43a5cc12d9e..c2e15c6e1c6bfc5a9d89afc9b8aa9551 if (blockEntity.lastCheckY < y) { blockPos = pos; blockEntity.checkingBeamSections = Lists.newArrayList(); -@@ -201,6 +212,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name +@@ -201,6 +_,7 @@ } } } else { @@ -41,7 +33,7 @@ index 503c8625cd77a564e55fc1427137d43a5cc12d9e..c2e15c6e1c6bfc5a9d89afc9b8aa9551 if (section == null || blockState.getLightBlock() >= 15 && !blockState.is(Blocks.BEDROCK)) { blockEntity.checkingBeamSections.clear(); blockEntity.lastCheckY = height; -@@ -220,7 +232,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name +@@ -220,7 +_,7 @@ blockEntity.levels = updateBase(level, x, y, z); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch similarity index 76% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch index 51ece6ae5..9369902be 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index 91f7ee163107d846e7f6a5783be6eff96e783886..b1b49fa83794f4237994e9b985816ddf6d20b7e9 100644 --- a/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -@@ -75,7 +75,7 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -75,7 +_,7 @@ "leash", "UUID" ); @@ -17,7 +9,7 @@ index 91f7ee163107d846e7f6a5783be6eff96e783886..b1b49fa83794f4237994e9b985816ddf private static final int MIN_TICKS_BEFORE_REENTERING_HIVE = 400; private static final int MIN_OCCUPATION_TICKS_NECTAR = 2400; public static final int MIN_OCCUPATION_TICKS_NECTARLESS = 600; -@@ -150,11 +150,33 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -150,11 +_,33 @@ return list; } @@ -51,7 +43,7 @@ index 91f7ee163107d846e7f6a5783be6eff96e783886..b1b49fa83794f4237994e9b985816ddf // Paper start - Add EntityBlockStorage clearEntities public void clearBees() { this.stored.clear(); -@@ -392,8 +414,8 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -392,8 +_,8 @@ return this.stored.stream().map(BeehiveBlockEntity.BeeData::toOccupant).toList(); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch similarity index 74% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch index 66745a3db..8abc6fa2c 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BlockEntity.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/entity/BlockEntity.java b/net/minecraft/world/level/block/entity/BlockEntity.java -index 5986825d6a381eeb445dd424dd127864aa703163..a5ade8268a74738170caf519e7e45e13862bc39d 100644 --- a/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -105,6 +105,10 @@ public abstract class BlockEntity { +@@ -105,6 +_,10 @@ input.read("PublicBukkitValues", CompoundTag.CODEC) .ifPresent(this.persistentDataContainer::putAll); // Paper end - read persistent data container @@ -19,7 +11,7 @@ index 5986825d6a381eeb445dd424dd127864aa703163..a5ade8268a74738170caf519e7e45e13 } public final void loadWithComponents(ValueInput input) { -@@ -117,6 +121,11 @@ public abstract class BlockEntity { +@@ -117,6 +_,11 @@ } protected void saveAdditional(ValueOutput output) { @@ -31,7 +23,7 @@ index 5986825d6a381eeb445dd424dd127864aa703163..a5ade8268a74738170caf519e7e45e13 } public final CompoundTag saveWithFullMetadata(HolderLookup.Provider registries) { -@@ -402,4 +411,17 @@ public abstract class BlockEntity { +@@ -402,4 +_,17 @@ return this.blockEntity.getNameForReporting() + "@" + this.blockEntity.getBlockPos(); } } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch similarity index 85% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch index f4ef5af2e..a337495d8 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/entity/ConduitBlockEntity.java b/net/minecraft/world/level/block/entity/ConduitBlockEntity.java -index 0e87d20639c382be2221d73c7498480d21ebeafb..3ea9fe4c936f024c15a6bba6e7c5d960a3def1f9 100644 --- a/net/minecraft/world/level/block/entity/ConduitBlockEntity.java +++ b/net/minecraft/world/level/block/entity/ConduitBlockEntity.java -@@ -151,7 +151,7 @@ public class ConduitBlockEntity extends BlockEntity { +@@ -151,7 +_,7 @@ BlockPos blockPos1 = pos.offset(i, i1, i2x); BlockState blockState = level.getBlockState(blockPos1); @@ -17,7 +9,7 @@ index 0e87d20639c382be2221d73c7498480d21ebeafb..3ea9fe4c936f024c15a6bba6e7c5d960 if (blockState.is(block)) { positions.add(blockPos1); } -@@ -166,13 +166,13 @@ public class ConduitBlockEntity extends BlockEntity { +@@ -166,13 +_,13 @@ private static void applyEffects(Level level, BlockPos pos, List positions) { // CraftBukkit start @@ -34,7 +26,7 @@ index 0e87d20639c382be2221d73c7498480d21ebeafb..3ea9fe4c936f024c15a6bba6e7c5d960 // CraftBukkit start return i; } -@@ -202,7 +202,7 @@ public class ConduitBlockEntity extends BlockEntity { +@@ -202,7 +_,7 @@ EntityReference entityReference = updateDestroyTarget(blockEntity.destroyTarget, level, pos, canDestroy); LivingEntity livingEntity = EntityReference.get(entityReference, level, LivingEntity.class); if (damageTarget && livingEntity != null) { // CraftBukkit @@ -43,7 +35,7 @@ index 0e87d20639c382be2221d73c7498480d21ebeafb..3ea9fe4c936f024c15a6bba6e7c5d960 level.playSound( null, livingEntity.getX(), livingEntity.getY(), livingEntity.getZ(), SoundEvents.CONDUIT_ATTACK_TARGET, SoundSource.BLOCKS, 1.0F, 1.0F ); -@@ -224,20 +224,26 @@ public class ConduitBlockEntity extends BlockEntity { +@@ -224,20 +_,26 @@ return selectNewTarget(level, pos); } else { LivingEntity livingEntity = EntityReference.get(destroyTarget, level, LivingEntity.class); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch similarity index 67% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch index 3c488518c..ab62b82a0 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java b/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java -index 5dd044c13e09423af43330df565bfe6ce88a883c..93f34bbfae6f8f02ff4ea92d6745cd1d288c8dbd 100644 --- a/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java +++ b/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java -@@ -30,6 +30,7 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable +@@ -30,6 +_,7 @@ private static final RandomSource RANDOM = RandomSource.create(); @Nullable private Component name; @@ -16,7 +8,7 @@ index 5dd044c13e09423af43330df565bfe6ce88a883c..93f34bbfae6f8f02ff4ea92d6745cd1d public EnchantingTableBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.ENCHANTING_TABLE, pos, state); -@@ -39,12 +40,14 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable +@@ -39,12 +_,14 @@ protected void saveAdditional(ValueOutput output) { super.saveAdditional(output); output.storeNullable("CustomName", ComponentSerialization.CODEC, this.name); @@ -31,7 +23,7 @@ index 5dd044c13e09423af43330df565bfe6ce88a883c..93f34bbfae6f8f02ff4ea92d6745cd1d } public static void bookAnimationTick(Level level, BlockPos pos, BlockState state, EnchantingTableBlockEntity enchantingTable) { -@@ -136,4 +139,14 @@ public class EnchantingTableBlockEntity extends BlockEntity implements Nameable +@@ -136,4 +_,14 @@ public void removeComponentsFromTag(ValueOutput output) { output.discard("CustomName"); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/FuelValues.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/FuelValues.java.patch new file mode 100644 index 000000000..c43d411ee --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/FuelValues.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/level/block/entity/FuelValues.java ++++ b/net/minecraft/world/level/block/entity/FuelValues.java +@@ -17,7 +_,7 @@ + import net.minecraft.world.level.block.Blocks; + + public class FuelValues { +- public final Object2IntSortedMap values; ++ private final Object2IntSortedMap values; + + FuelValues(Object2IntSortedMap values) { + this.values = values; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch similarity index 88% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch index 264f13f86..d9530e11b 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/entity/SignBlockEntity.java b/net/minecraft/world/level/block/entity/SignBlockEntity.java -index be1b138a78d8cb87956d531a801d85e677ca6f4a..2e0b2b55031343e32b4972c0f0017e950d56652d 100644 --- a/net/minecraft/world/level/block/entity/SignBlockEntity.java +++ b/net/minecraft/world/level/block/entity/SignBlockEntity.java -@@ -148,16 +148,32 @@ public class SignBlockEntity extends BlockEntity { +@@ -148,16 +_,32 @@ return this.setText(updater.apply(text), isFrontText); } @@ -43,10 +35,11 @@ index be1b138a78d8cb87956d531a801d85e677ca6f4a..2e0b2b55031343e32b4972c0f0017e95 ); } } -@@ -307,6 +323,27 @@ public class SignBlockEntity extends BlockEntity { +@@ -306,6 +_,27 @@ + // CraftBukkit - this return new CommandSourceStack(commandSource, Vec3.atCenterOf(pos), Vec2.ZERO, level, 2, string, component, level.getServer(), player); // Paper - Fix commands from signs not firing command events } - ++ + // Purpur start - Signs allow color codes + public ClientboundBlockEntityDataPacket getTranslatedUpdatePacket(boolean filtered, boolean front) { + try (net.minecraft.util.ProblemReporter.ScopedCollector scopedCollector = new net.minecraft.util.ProblemReporter.ScopedCollector(this.problemPath(), LOGGER)) { @@ -67,7 +60,6 @@ index be1b138a78d8cb87956d531a801d85e677ca6f4a..2e0b2b55031343e32b4972c0f0017e95 + } + } + // Purpur end - Signs allow color codes -+ + @Override public ClientboundBlockEntityDataPacket getUpdatePacket() { - return ClientboundBlockEntityDataPacket.create(this); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch similarity index 65% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch index 7c922a709..bc6293606 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/piston/PistonStructureResolver.java b/net/minecraft/world/level/block/piston/PistonStructureResolver.java -index ad143a92569f5b420ccaa2089758b2fb3b4ab7c5..5a3660e02bc805e9a35a81b8a61f07b3f20b5ba9 100644 --- a/net/minecraft/world/level/block/piston/PistonStructureResolver.java +++ b/net/minecraft/world/level/block/piston/PistonStructureResolver.java -@@ -81,7 +81,7 @@ public class PistonStructureResolver { +@@ -81,7 +_,7 @@ return true; } else { int i = 1; @@ -17,7 +9,7 @@ index ad143a92569f5b420ccaa2089758b2fb3b4ab7c5..5a3660e02bc805e9a35a81b8a61f07b3 return false; } else { while (isSticky(blockState)) { -@@ -95,7 +95,7 @@ public class PistonStructureResolver { +@@ -95,7 +_,7 @@ break; } @@ -26,7 +18,7 @@ index ad143a92569f5b420ccaa2089758b2fb3b4ab7c5..5a3660e02bc805e9a35a81b8a61f07b3 return false; } } -@@ -140,7 +140,7 @@ public class PistonStructureResolver { +@@ -140,7 +_,7 @@ return true; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/state/BlockBehaviour.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/state/BlockBehaviour.java.patch new file mode 100644 index 000000000..db63daffb --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/state/BlockBehaviour.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/level/block/state/BlockBehaviour.java ++++ b/net/minecraft/world/level/block/state/BlockBehaviour.java +@@ -90,7 +_,7 @@ + Direction.WEST, Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.DOWN, Direction.UP + }; + public final boolean hasCollision; +- public float explosionResistance; ++ protected final float explosionResistance; + protected final boolean isRandomlyTicking; + protected final SoundType soundType; + protected final float friction; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch similarity index 56% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch index 9f3989857..accc2318d 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/chunk/storage/EntityStorage.java b/net/minecraft/world/level/chunk/storage/EntityStorage.java -index f1f8575a4b37114ced3cdb1d2ea33a36a2db44fd..2afe96a69c09decbe972332d2d38f67427d880d8 100644 --- a/net/minecraft/world/level/chunk/storage/EntityStorage.java +++ b/net/minecraft/world/level/chunk/storage/EntityStorage.java -@@ -108,6 +108,7 @@ public class EntityStorage implements EntityPersistentStorage { +@@ -108,6 +_,7 @@ } // Paper end - Entity load/save limit per chunk TagValueOutput tagValueOutput = TagValueOutput.createWithContext(scopedCollector.forChild(entity.problemPath()), entity.registryAccess()); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch similarity index 68% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch index 6bdf03243..8f5ddb2d7 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/chunk/storage/RegionFileStorage.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -index 384f2cd090d6d23bd1308d6e82c24338f2bf55d1..77db68349aa73d33b86a867099c9395c96d5a02d 100644 --- a/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +++ b/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -@@ -308,7 +308,7 @@ public class RegionFileStorage implements AutoCloseable, ca.spottedleaf.moonrise +@@ -308,7 +_,7 @@ // Paper start private static void printOversizedLog(String msg, Path file, int x, int z) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch similarity index 63% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch index 849d2689b..51e0ad919 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/DensityFunctions.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/levelgen/DensityFunctions.java b/net/minecraft/world/level/levelgen/DensityFunctions.java -index 04527a5c65ad630f794fed9071d485aedd02257a..77731406cb3dc417aa2fe1cb4352f3d2d7d498aa 100644 --- a/net/minecraft/world/level/levelgen/DensityFunctions.java +++ b/net/minecraft/world/level/levelgen/DensityFunctions.java -@@ -528,7 +528,7 @@ public final class DensityFunctions { +@@ -528,7 +_,7 @@ int i1 = z / 2; int i2 = x % 2; int i3 = z % 2; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch similarity index 85% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch index b80a7c82d..5652d79c6 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/levelgen/PhantomSpawner.java b/net/minecraft/world/level/levelgen/PhantomSpawner.java -index d2e674b046bcf82a239b4706c3b89197ec6749c8..73c038c026b20af3d8719b42470ee006d8ec5896 100644 --- a/net/minecraft/world/level/levelgen/PhantomSpawner.java +++ b/net/minecraft/world/level/levelgen/PhantomSpawner.java -@@ -38,13 +38,13 @@ public class PhantomSpawner implements CustomSpawner { +@@ -38,13 +_,13 @@ int spawnAttemptMaxSeconds = level.paperConfig().entities.behavior.phantomsSpawnAttemptMaxSeconds; this.nextTick += (spawnAttemptMinSeconds + randomSource.nextInt(spawnAttemptMaxSeconds - spawnAttemptMinSeconds + 1)) * 20; // Paper end - Ability to control player's insomnia and phantoms @@ -25,7 +17,7 @@ index d2e674b046bcf82a239b4706c3b89197ec6749c8..73c038c026b20af3d8719b42470ee006 ServerStatsCounter stats = serverPlayer.getStats(); int i = Mth.clamp(stats.getValue(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE); int i1 = 24000; -@@ -56,7 +56,7 @@ public class PhantomSpawner implements CustomSpawner { +@@ -56,7 +_,7 @@ FluidState fluidState = level.getFluidState(blockPos1); if (NaturalSpawner.isValidEmptySpawnBlock(level, blockPos1, blockState, fluidState, EntityType.PHANTOM)) { SpawnGroupData spawnGroupData = null; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/FlowingFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch similarity index 62% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/FlowingFluid.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch index 9a8b61875..78e131bae 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/FlowingFluid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/material/FlowingFluid.java b/net/minecraft/world/level/material/FlowingFluid.java -index ace1099a12c762b2e73b71dd3551cf351fedf067..1b06e44a267d2d4af844997ac0c557f30aaf9b15 100644 --- a/net/minecraft/world/level/material/FlowingFluid.java +++ b/net/minecraft/world/level/material/FlowingFluid.java -@@ -232,7 +232,7 @@ public abstract class FlowingFluid extends Fluid { +@@ -232,7 +_,7 @@ } } @@ -17,16 +9,16 @@ index ace1099a12c762b2e73b71dd3551cf351fedf067..1b06e44a267d2d4af844997ac0c557f3 BlockState blockState1 = level.getBlockState(mutableBlockPos.setWithOffset(pos, Direction.DOWN)); FluidState fluidState1 = blockState1.getFluidState(); if (blockState1.isSolid() || this.isSourceBlockOfThisType(fluidState1)) { -@@ -320,6 +320,12 @@ public abstract class FlowingFluid extends Fluid { +@@ -319,6 +_,12 @@ + } protected abstract boolean canConvertToSource(ServerLevel level); - ++ + // Purpur start - Implement infinite liquids + protected int getRequiredSources(Level level) { + return 2; + } + // Purpur end - Implement infinite liquids -+ + protected void spreadTo(LevelAccessor level, BlockPos pos, BlockState blockState, Direction direction, FluidState fluidState) { if (blockState.getBlock() instanceof LiquidBlockContainer liquidBlockContainer) { - liquidBlockContainer.placeLiquid(level, pos, blockState, fluidState); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/LavaFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch similarity index 57% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/LavaFluid.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch index bb31a3d7b..502b87bdc 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/LavaFluid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/LavaFluid.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/material/LavaFluid.java b/net/minecraft/world/level/material/LavaFluid.java -index 033f252248b671e35135269dd2df6e7ca4585604..43cdc2f8fdfdeb1426e386e0084087779ef62754 100644 --- a/net/minecraft/world/level/material/LavaFluid.java +++ b/net/minecraft/world/level/material/LavaFluid.java -@@ -189,7 +189,7 @@ public abstract class LavaFluid extends FlowingFluid { +@@ -189,7 +_,7 @@ @Override public int getTickDelay(LevelReader level) { @@ -17,17 +9,17 @@ index 033f252248b671e35135269dd2df6e7ca4585604..43cdc2f8fdfdeb1426e386e008408777 } @Override -@@ -211,6 +211,13 @@ public abstract class LavaFluid extends FlowingFluid { +@@ -210,6 +_,13 @@ + private void fizz(LevelAccessor level, BlockPos pos) { level.levelEvent(1501, pos, 0); } - ++ + // Purpur start - Implement infinite liquids + @Override + protected int getRequiredSources(Level level) { + return level.purpurConfig.lavaInfiniteRequiredSources; + } + // Purpur end - Implement infinite liquids -+ + @Override protected boolean canConvertToSource(ServerLevel level) { - return level.getGameRules().getBoolean(GameRules.RULE_LAVA_SOURCE_CONVERSION); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/WaterFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch similarity index 56% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/WaterFluid.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch index 760860c77..3bc14791b 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/material/WaterFluid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/material/WaterFluid.java b/net/minecraft/world/level/material/WaterFluid.java -index 10e3c644e31650b0e1aad6349a83a763cf744ec8..b248fe1d66940c05d56fc322df61c52ece72e77f 100644 --- a/net/minecraft/world/level/material/WaterFluid.java +++ b/net/minecraft/world/level/material/WaterFluid.java -@@ -78,6 +78,13 @@ public abstract class WaterFluid extends FlowingFluid { +@@ -78,6 +_,13 @@ return level.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION); } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch similarity index 70% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch index cc5ea62e3..ef04724ea 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -index 9e6b2bbc1f83d32d0332f036be4f1a0e18b826bf..db6baaa698fe93aba3fbd595158b568badd6cb8a 100644 --- a/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -@@ -240,7 +240,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { +@@ -240,7 +_,7 @@ if ((node == null || node.costMalus < 0.0F) && verticalDeltaLimit > 0 && (cachedPathType != PathType.FENCE || this.canWalkOverFences()) @@ -17,7 +9,7 @@ index 9e6b2bbc1f83d32d0332f036be4f1a0e18b826bf..db6baaa698fe93aba3fbd595158b568b && cachedPathType != PathType.TRAPDOOR && cachedPathType != PathType.POWDER_SNOW) { node = this.tryJumpOn(x, y, z, verticalDeltaLimit, nodeFloorLevel, direction, pathType, mutableBlockPos); -@@ -493,7 +493,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { +@@ -493,7 +_,7 @@ return PathType.TRAPDOOR; } else if (blockState.is(Blocks.POWDER_SNOW)) { return PathType.POWDER_SNOW; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/portal/PortalShape.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch similarity index 64% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/portal/PortalShape.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch index 2037f1181..925647acc 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/portal/PortalShape.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/portal/PortalShape.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/portal/PortalShape.java b/net/minecraft/world/level/portal/PortalShape.java -index b19260f442fe272efed8e61d1316bf0d6ff38023..0ecc5a49de322d531c33042858f8420d370f3805 100644 --- a/net/minecraft/world/level/portal/PortalShape.java +++ b/net/minecraft/world/level/portal/PortalShape.java -@@ -28,7 +28,7 @@ public class PortalShape { +@@ -28,7 +_,7 @@ public static final int MAX_WIDTH = 21; private static final int MIN_HEIGHT = 3; public static final int MAX_HEIGHT = 21; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch similarity index 50% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch index 8b3147adb..138758dfe 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -index c8f23011a8942a5be970c606f67142cbd202b97e..7bbeed6c998c91e68376d3f17a510d68e3cd0b27 100644 --- a/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java +++ b/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -@@ -81,6 +81,7 @@ public class MapItemSavedData extends SavedData { +@@ -81,6 +_,7 @@ public final Map decorations = Maps.newLinkedHashMap(); private final Map frameMarkers = Maps.newHashMap(); private int trackedDecorationCount; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch similarity index 64% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch index 493b549da..bc7b09181 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java b/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java -index c4f29da30d63deb3f9eabafcf62a946ff148b6b7..f3083702286dfb7932f08e0b811eded7988cbab4 100644 --- a/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java +++ b/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java -@@ -66,6 +66,11 @@ public class EnchantedCountIncreaseFunction extends LootItemConditionalFunction +@@ -66,6 +_,11 @@ Entity entity = context.getOptionalParameter(LootContextParams.ATTACKING_ENTITY); if (entity instanceof LivingEntity livingEntity) { int enchantmentLevel = EnchantmentHelper.getEnchantmentLevel(this.enchantment, livingEntity); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/phys/AABB.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch similarity index 54% rename from purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/phys/AABB.java.patch rename to purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch index 00f46d82d..1545fd15f 100644 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/phys/AABB.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/phys/AABB.java.patch @@ -1,14 +1,6 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/phys/AABB.java b/net/minecraft/world/phys/AABB.java -index 84f3073444ae9e11e5d11224d6af6474ced925e2..e53398996bbb278c6e06024d8ca945b364a44c10 100644 --- a/net/minecraft/world/phys/AABB.java +++ b/net/minecraft/world/phys/AABB.java -@@ -476,4 +476,10 @@ public class AABB { +@@ -476,4 +_,10 @@ return new AABB(this.minX, this.minY, this.minZ, this.maxX, this.maxY, this.maxZ); } } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/GameTestHelper.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/GameTestHelper.java.patch deleted file mode 100644 index 3a79ccb9b..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/gametest/framework/GameTestHelper.java.patch +++ /dev/null @@ -1,19 +0,0 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/gametest/framework/GameTestHelper.java b/net/minecraft/gametest/framework/GameTestHelper.java -index 9fb53bc1330bf5370769200599b022a985f88db2..61ab8b508d2b614d0f05ae4cc23dc214f8e95a1d 100644 ---- a/net/minecraft/gametest/framework/GameTestHelper.java -+++ b/net/minecraft/gametest/framework/GameTestHelper.java -@@ -292,6 +292,8 @@ public class GameTestHelper { - return gameType; - } - -+ public void setAfk(final boolean afk) {} // Purpur - AFK API -+ - @Override - public boolean isClientAuthoritative() { - return false; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch deleted file mode 100644 index bfc589af2..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/entity/ai/attributes/RangedAttribute.java.patch +++ /dev/null @@ -1,18 +0,0 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/entity/ai/attributes/RangedAttribute.java b/net/minecraft/world/entity/ai/attributes/RangedAttribute.java -index a87accd5fe14102e7a2938f991a8ed0b9accd1bb..c7515f7f24e39d6931dcf18574cb47d754983903 100644 ---- a/net/minecraft/world/entity/ai/attributes/RangedAttribute.java -+++ b/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 - Add attribute clamping and armor limit config - return Double.isNaN(value) ? this.minValue : Mth.clamp(value, this.minValue, this.maxValue); - } - } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch deleted file mode 100644 index 3a5be5f25..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/AbstractContainerMenu.java.patch +++ /dev/null @@ -1,18 +0,0 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java -index f4548edae77eb86e54ba499acbb20613fd60d7bd..1f601781643945920c7522b9c6100d0a37ad535d 100644 ---- a/net/minecraft/world/inventory/AbstractContainerMenu.java -+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java -@@ -65,6 +65,7 @@ public abstract class AbstractContainerMenu { - @Nullable - private ContainerSynchronizer synchronizer; - private boolean suppressRemoteUpdates; -+ @Nullable protected ItemStack activeQuickItem = null; // Purpur - Anvil API - // CraftBukkit start - public boolean checkReachable = true; - public abstract org.bukkit.inventory.InventoryView getBukkitView(); diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch deleted file mode 100644 index 3c5ab79db..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch +++ /dev/null @@ -1,20 +0,0 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/inventory/ItemCombinerMenu.java b/net/minecraft/world/inventory/ItemCombinerMenu.java -index 34d52c941395645e77de810855b14012c259cf02..c605bd700fd9f5a6596a2bf9648492786306b025 100644 ---- a/net/minecraft/world/inventory/ItemCombinerMenu.java -+++ b/net/minecraft/world/inventory/ItemCombinerMenu.java -@@ -156,7 +156,9 @@ public abstract class ItemCombinerMenu extends AbstractContainerMenu { - return ItemStack.EMPTY; - } - -+ this.activeQuickItem = itemStack; // Purpur - Anvil API - slot.onTake(player, item); -+ this.activeQuickItem = null; // Purpur - Anvil API - } - - return itemStack; diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch deleted file mode 100644 index 73e09f2a2..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch +++ /dev/null @@ -1,19 +0,0 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/item/ProjectileWeaponItem.java b/net/minecraft/world/item/ProjectileWeaponItem.java -index 1a9f91f3ee9c4d3902106eebd2639cc85a0dc34c..fb5077450aa9f7b7a03dd20c27a68dfdaab5ef06 100644 ---- a/net/minecraft/world/item/ProjectileWeaponItem.java -+++ b/net/minecraft/world/item/ProjectileWeaponItem.java -@@ -109,6 +109,8 @@ public abstract class ProjectileWeaponItem extends Item { - abstractArrow.setCritArrow(true); - } - -+ abstractArrow.setActualEnchantments(weapon.getEnchantments()); // Purpur - Add an option to fix MC-3304 projectile looting -+ - return abstractArrow; - } - diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch deleted file mode 100644 index b46050d3a..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java.patch +++ /dev/null @@ -1,18 +0,0 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java b/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java -index fb6e9194440b85487660f91aea7e34fdf086187b..2653ae5bf66f2b117f86e4df04d9cc307ba09011 100644 ---- a/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java -+++ b/net/minecraft/world/level/block/BaseCoralPlantTypeBlock.java -@@ -39,6 +39,7 @@ public abstract class BaseCoralPlantTypeBlock extends Block implements SimpleWat - } - - protected static boolean scanForWater(BlockState state, BlockGetter level, BlockPos pos) { -+ if (!((net.minecraft.world.level.LevelAccessor) level).getMinecraftWorld().purpurConfig.coralDieOutsideWater) return true; // Purpur - Config to not let coral die - if (state.getValue(WATERLOGGED)) { - return true; - } else { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch deleted file mode 100644 index 17901a989..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/BigDripleafBlock.java.patch +++ /dev/null @@ -1,19 +0,0 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/BigDripleafBlock.java b/net/minecraft/world/level/block/BigDripleafBlock.java -index e1193bcb666b7d38c511df7c1ebddb5897cefa8f..29248afa290b3143375f0538b4dfc80a63f8945f 100644 ---- a/net/minecraft/world/level/block/BigDripleafBlock.java -+++ b/net/minecraft/world/level/block/BigDripleafBlock.java -@@ -254,7 +254,7 @@ public class BigDripleafBlock extends HorizontalDirectionalBlock implements Bone - playTiltSound(level, pos, sound); - } - -- int _int = DELAY_UNTIL_NEXT_TILT_STATE.getInt(tilt); -+ int _int = level.purpurConfig.bigDripleafTiltDelay.getOrDefault(tilt, -1); // Purpur - Big dripleaf tilt delay - if (_int != -1) { - level.scheduleTick(pos, this, _int); - } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DragonEggBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DragonEggBlock.java.patch deleted file mode 100644 index e1e1ec020..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/DragonEggBlock.java.patch +++ /dev/null @@ -1,18 +0,0 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/DragonEggBlock.java b/net/minecraft/world/level/block/DragonEggBlock.java -index 5c2f10486e3aed090c6545a86276e6927e424cb2..9ed7ffb10e0a172fe5f3dd4613922428af82e5db 100644 ---- a/net/minecraft/world/level/block/DragonEggBlock.java -+++ b/net/minecraft/world/level/block/DragonEggBlock.java -@@ -46,6 +46,7 @@ public class DragonEggBlock extends FallingBlock { - } - - private void teleport(BlockState state, Level level, BlockPos pos) { -+ if (!level.purpurConfig.dragonEggTeleport) return; // Purpur - Option to disable dragon egg teleporting - WorldBorder worldBorder = level.getWorldBorder(); - - for (int i = 0; i < 1000; i++) { diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/HayBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/HayBlock.java.patch deleted file mode 100644 index cdb21acfa..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/HayBlock.java.patch +++ /dev/null @@ -1,18 +0,0 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/HayBlock.java b/net/minecraft/world/level/block/HayBlock.java -index cdde0a25e0a499d7575c00796143a033feb1f22f..999ecf16180b0a862cf8527ce532acf725ba869a 100644 ---- a/net/minecraft/world/level/block/HayBlock.java -+++ b/net/minecraft/world/level/block/HayBlock.java -@@ -23,6 +23,6 @@ public class HayBlock extends RotatedPillarBlock { - - @Override - public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance) { -- entity.causeFallDamage(fallDistance, 0.2F, level.damageSources().fall()); -+ super.fallOn(level, state, pos, entity, fallDistance); // Purpur - Configurable block fall damage modifiers - } - } diff --git a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/KelpBlock.java.patch b/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/KelpBlock.java.patch deleted file mode 100644 index 611e3ef31..000000000 --- a/purpur-server/minecraft-patches/unapplied-sources/net/minecraft/world/level/block/KelpBlock.java.patch +++ /dev/null @@ -1,22 +0,0 @@ -From fdaa40d397c78dc3305420f9e42eead78bea1982 Mon Sep 17 00:00:00 2001 -From: File -Date: Sun, 20 Apr 1997 06:37:42 -0700 -Subject: [PATCH] purpur File Patches - - -diff --git a/net/minecraft/world/level/block/KelpBlock.java b/net/minecraft/world/level/block/KelpBlock.java -index 8e3f2518e705a4b8988a1c9da730f0c89f21bdce..6e6212fd891dcaea0d0a398a73416f31d2cb2406 100644 ---- a/net/minecraft/world/level/block/KelpBlock.java -+++ b/net/minecraft/world/level/block/KelpBlock.java -@@ -72,4 +72,11 @@ public class KelpBlock extends GrowingPlantHeadBlock implements LiquidBlockConta - protected FluidState getFluidState(BlockState state) { - return Fluids.WATER.getSource(false); - } -+ -+ // Purpur start - kelp vines configurable max growth age -+ @Override -+ public int getMaxGrowthAge() { -+ return org.purpurmc.purpur.PurpurConfig.kelpMaxGrowthAge; -+ } -+ // Purpur end - kelp vines configurable max growth age - } diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index 6473152ff..1d3249558 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -36,10 +36,10 @@ index af6420cdf988badaf70e8c075d2ab9b6a4935e88..edc1758f12b36555edb7eaba2ea3bd78 + // Purpur end - Ridables } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index c5daefa56597bd13fe227fa014ca5225c00a2a2d..98b766d115856dbf3ea11a983c1304591032f1b0 100644 +index 1d112510093d5eb5117adf16b92dd3411a610a4a..a162440a583801671787163d998d6b9546ef7e61 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -515,6 +515,15 @@ public class CraftEventFactory { +@@ -525,6 +525,15 @@ public class CraftEventFactory { } craftServer.getPluginManager().callEvent(event); @@ -55,7 +55,7 @@ index c5daefa56597bd13fe227fa014ca5225c00a2a2d..98b766d115856dbf3ea11a983c130459 return event; } -@@ -1047,6 +1056,7 @@ public class CraftEventFactory { +@@ -1057,6 +1066,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); diff --git a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch index 804dbf710..4317ef452 100644 --- a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch @@ -29,10 +29,10 @@ index edc1758f12b36555edb7eaba2ea3bd78118dda93..7a9e20699a8a5e95910ed15eb6cd1192 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 5fa91d288bd5bc3990f4416f9d30202d7379ccdd..7f17c5025f25e44a917f5d6a65b8d958a982b301 100644 +index dc3f7eff78c5fd81dfffb48a3b978ffe91902469..7f5eca8f32ae1afe3e6d2544b76cf0bbe131109f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1447,6 +1447,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1397,6 +1397,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper start - Teleport passenger API // Don't allow teleporting between worlds while keeping passengers if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -40,7 +40,7 @@ index 5fa91d288bd5bc3990f4416f9d30202d7379ccdd..7f17c5025f25e44a917f5d6a65b8d958 return false; } -@@ -1468,6 +1469,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1418,6 +1419,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 9a51d99bc..20e57212e 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -625,10 +_,15 @@ +@@ -575,10 +_,15 @@ @Override public void setPlayerListName(String name) { @@ -17,7 +17,7 @@ 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)) { -@@ -2726,6 +_,28 @@ +@@ -2676,6 +_,28 @@ return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -46,9 +46,9 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3569,4 +_,76 @@ - public void setDeathScreenScore(final int score) { - getHandle().setScore(score); +@@ -3524,4 +_,76 @@ + public PlayerGameConnection getConnection() { + return this.getHandle().connection.playerGameConnection; } + + // Purpur start - Purpur client support From d6c8559304142f859508ba8e4d20dfbcce5f8da4 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 29 Jun 2025 14:06:06 -0700 Subject: [PATCH 161/289] all feature patches applied with no issues \o/ --- .../0001-Ridables.patch | 34 +++++++++---------- ...-Configurable-entity-base-attributes.patch | 20 +++++------ .../0003-Barrels-and-enderchests-6-rows.patch | 8 ++--- .../0004-Giants-AI-settings.patch | 0 .../0005-Chickens-can-retaliate.patch | 0 ...-Minecart-settings-and-WASD-controls.patch | 4 +-- ...0007-Villagers-follow-emerald-blocks.patch | 8 ++--- .../0008-Implement-elytra-settings.patch | 2 +- .../0009-Configurable-jockey-options.patch | 0 ...ed-to-crystals-and-crystals-shoot-ph.patch | 0 .../0011-Phantoms-burn-in-light.patch | 0 ...e-entity-breeding-times-configurable.patch | 4 +-- ...mes-from-item-forms-of-entities-to-e.patch | 2 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 6 ++-- ...fing-override-to-everything-affected.patch | 2 +- ...0016-Add-EntityTeleportHinderedEvent.patch | 0 ...oggle-for-water-sensitive-mob-damage.patch | 16 ++++----- ...018-API-for-any-mob-to-burn-daylight.patch | 4 +-- ...turally-aggressive-to-players-chance.patch | 0 .../0020-Mobs-always-drop-experience.patch | 16 ++++----- 20 files changed, 63 insertions(+), 63 deletions(-) rename purpur-server/minecraft-patches/{unapplied-features => features}/0001-Ridables.patch (99%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0002-Configurable-entity-base-attributes.patch (99%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0003-Barrels-and-enderchests-6-rows.patch (97%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0004-Giants-AI-settings.patch (100%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0005-Chickens-can-retaliate.patch (100%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0006-Minecart-settings-and-WASD-controls.patch (98%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0007-Villagers-follow-emerald-blocks.patch (96%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0008-Implement-elytra-settings.patch (98%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0009-Configurable-jockey-options.patch (100%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch (100%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0011-Phantoms-burn-in-light.patch (100%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0012-Make-entity-breeding-times-configurable.patch (99%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch (98%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch (98%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0015-Add-mobGriefing-override-to-everything-affected.patch (99%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0016-Add-EntityTeleportHinderedEvent.patch (100%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0017-Toggle-for-water-sensitive-mob-damage.patch (98%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0018-API-for-any-mob-to-burn-daylight.patch (99%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0019-Cows-naturally-aggressive-to-players-chance.patch (100%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0020-Mobs-always-drop-experience.patch (98%) diff --git a/purpur-server/minecraft-patches/unapplied-features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch similarity index 99% rename from purpur-server/minecraft-patches/unapplied-features/0001-Ridables.patch rename to purpur-server/minecraft-patches/features/0001-Ridables.patch index c0b8f4757..1cf5bdf85 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -42,10 +42,10 @@ index 83eff33884bffddfafc85eeb4a2900104a396e2e..3c7159d0981c948e71a5612ba4083acc @Override public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 63ef4690ff76df961fcc51dabd0f4f3d7de09fe9..7adb3d1f75896f1e31747e3356b124948a1c77c0 100644 +index 982836b811289eee0f4f5481c7c8796a89a3ef74..a249567d9cd2dfb552748ab4112709c0c0d2009b 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -861,6 +861,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -795,6 +795,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.trackEnteredOrExitedLavaOnVehicle(); this.updatePlayerAttributes(); this.advancements.flushDirty(this, true); @@ -62,10 +62,10 @@ index 63ef4690ff76df961fcc51dabd0f4f3d7de09fe9..7adb3d1f75896f1e31747e3356b12494 private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 8a04052908fa53028b7d5a4619908d12b1e10766..79c3baf041cb7f10753d8a01ec03e95d5564f21b 100644 +index eb0ca5cc1ea9e5a7d78a7ec601770c2b35b95517..71c82b5b19f34d05fe944706db2818ee7a147139 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2844,6 +2844,8 @@ public class ServerGamePacketListenerImpl +@@ -2842,6 +2842,8 @@ public class ServerGamePacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -75,7 +75,7 @@ index 8a04052908fa53028b7d5a4619908d12b1e10766..79c3baf041cb7f10753d8a01ec03e95d if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 1d8ba25d542c49a687414a8b6d1d2fa16ca695d5..34e0fbef06b0c7aededf27fe9dc64f3f6f33e3ae 100644 +index 1e8fcceaa609f79cc1e70ac73511fdf7d79196bc..4bf841dae4d1f95836365f339dd87c102f1355b0 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -3303,6 +3303,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -177,7 +177,7 @@ index f0c452ddc4b299a930de261722cc41a89aa78eeb..8e8ddab59de508c84c4182e105a11554 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 96e47e6145a4cce8c154a05f9b155c1ba74bfa6a..d272f5e789cb6c03ede0bece14fc3fe976a02ff3 100644 +index 65cb0a0cfa3d75e4d1083b7e6b22ca1b2682dc49..e78d30d8fdfcb1a530bf3380251fabd0c9a18f46 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -238,9 +238,9 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -1077,10 +1077,10 @@ index 354c7a41407fc6518965d09bfe3089676b6da794..a81ada76bfd6c4b49d1552f48e2009bc } } diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index 24fdfda487bf5348c32707022719ec9907debc80..80517d5c7f074b62555d0991b0ad0678f585834f 100644 +index 272f57aca640e045efca64dd018b221335c667ee..b425f43eb15abdfd6e10b5443acc3d5a68d63a70 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java -@@ -120,6 +120,13 @@ public class HappyGhast extends Animal { +@@ -126,6 +126,13 @@ public class HappyGhast extends Animal { this.removeAllGoals(goal -> true); } @@ -4055,7 +4055,7 @@ index 2b9a72b8742bf13c69df5ce0c905d47a92b9d8bc..b67ac487ce4a7fd8b2f62452ab0b87f4 this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.0); } else { diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index ff16e0dd78687f4c9a0bce5ede4eda30e2a06263..f37ba04ae0277152d93e3e585973d46c25e52395 100644 +index 4a4c72b0c265289f5b0dfbdc2f7fc08f9f112d8f..c19258a6dade5b7605d97eca7140a7b30e00cb8b 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java @@ -109,12 +109,31 @@ public class Shulker extends AbstractGolem implements Enemy { @@ -4512,10 +4512,10 @@ index a621e08fe4f88fcfa8da83bc44b23fc2ffaa5918..543913b7e9e92ac43c2e557213a48714 Vec3 deltaMovement = Vex.this.getDeltaMovement(); Vex.this.setYRot(-((float)Mth.atan2(deltaMovement.x, deltaMovement.z)) * (180.0F / (float)Math.PI)); diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index 86886889f4a2859eaf35c57b5130b2b10143a368..f908db6eeff5ee5a1ab2783d8e8bbb1598c3ace3 100644 +index 71d84306788be023bc949400d30966548d968c86..8e5bf153a457026808e2ea670e874e66ca0d5e98 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -57,15 +57,34 @@ public class Vindicator extends AbstractIllager { +@@ -56,15 +56,34 @@ public class Vindicator extends AbstractIllager { super(entityType, level); } @@ -4969,10 +4969,10 @@ index 4a4cc7f9c95d4f4b6ad4948e3ed3504efbbcef15..f8a6aba7d6f0f357c72602f4ac6c2537 && this.level() == entity.level() && EntitySelector.NO_CREATIVE_OR_SPECTATOR.test(entity) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index ff4b73b83e96e0ac0b63922e6f72445cd96d2305..098dfbcf406040939e53ec212d3b433ab3b41291 100644 +index 98303277236f2205f20e3db29f17f576ba2a7938..b1cad9a37d8d1f053add366699c5277c4fd84f6b 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -250,6 +250,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -249,6 +249,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end - Lobotomize stuck villagers @@ -5001,7 +5001,7 @@ index ff4b73b83e96e0ac0b63922e6f72445cd96d2305..098dfbcf406040939e53ec212d3b433a @Override public Brain getBrain() { return (Brain)super.getBrain(); -@@ -359,7 +381,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -358,7 +380,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end - Lobotomize stuck villagers // Pufferfish start @@ -5010,7 +5010,7 @@ index ff4b73b83e96e0ac0b63922e6f72445cd96d2305..098dfbcf406040939e53ec212d3b433a this.getBrain().tick(level, this); // Paper - EAR 2 } else if (this.isLobotomized && shouldRestock()) restock(); // Purpur - Lobotomize stuck villagers -@@ -419,7 +441,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -418,7 +440,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return super.mobInteract(player, hand); } else if (this.isBaby()) { this.setUnhappy(); @@ -5019,7 +5019,7 @@ index ff4b73b83e96e0ac0b63922e6f72445cd96d2305..098dfbcf406040939e53ec212d3b433a } else { if (!this.level().isClientSide) { boolean isEmpty = this.getOffers().isEmpty(); -@@ -432,9 +454,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -431,9 +453,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } if (isEmpty) { @@ -5072,7 +5072,7 @@ index 93ed977260f369677028bbd8396862f344dfeaa3..e5d6d8bd30876832e6219969849e8260 if (this.level().purpurConfig.wanderingTraderAllowTrading) { // Purpur - Add config for villager trading this.setTradingPlayer(player); diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index cc29c094f81f16e6b4d74877e31fabd4a0e62435..65d981d26c729d63aa9bad1bbe90cef35207e832 100644 +index aba0104c4953ef514118ee8af76d029100081fc4..c421cc7dc6c401a19eaf193abd970f21e910f927 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -239,6 +239,19 @@ public abstract class Player extends LivingEntity { diff --git a/purpur-server/minecraft-patches/unapplied-features/0002-Configurable-entity-base-attributes.patch b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch similarity index 99% rename from purpur-server/minecraft-patches/unapplied-features/0002-Configurable-entity-base-attributes.patch rename to purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch index e4676be04..b1bfd2056 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0002-Configurable-entity-base-attributes.patch +++ b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch @@ -23,7 +23,7 @@ index 8e8ddab59de508c84c4182e105a11554387dcce0..1896f91e10a5e17332836d5354813a18 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index d272f5e789cb6c03ede0bece14fc3fe976a02ff3..41b6b18130d89b3c3c31bbb2d184fa735a8cd99c 100644 +index e78d30d8fdfcb1a530bf3380251fabd0c9a18f46..ae0c2f41c522656bde37d4f31699ee6172b5a79d 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -291,6 +291,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -202,10 +202,10 @@ index a81ada76bfd6c4b49d1552f48e2009bc7d8c71d2..869a0154c81593db8933f9daa6a7d3a9 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index 80517d5c7f074b62555d0991b0ad0678f585834f..6c80c12313147fb022d1bb0c8694fcf85174ae7c 100644 +index b425f43eb15abdfd6e10b5443acc3d5a68d63a70..3bdfd064ba3985e7f3d1c537d60908568678ec78 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java -@@ -127,6 +127,19 @@ public class HappyGhast extends Animal { +@@ -133,6 +133,19 @@ public class HappyGhast extends Animal { } // Purpur end - Ridables @@ -225,7 +225,7 @@ index 80517d5c7f074b62555d0991b0ad0678f585834f..6c80c12313147fb022d1bb0c8694fcf8 @Override protected void ageBoundaryReached() { if (this.isBaby()) { -@@ -150,7 +163,7 @@ public class HappyGhast extends Animal { +@@ -156,7 +169,7 @@ public class HappyGhast extends Animal { @Override protected float sanitizeScale(float scale) { @@ -1222,7 +1222,7 @@ index 0335e85f196363c06597812149e9a93cba57fa9e..5b0794bd87423715cada1f860b4141fd EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index 304a1ce41071e5597859b1235fa014f966ff5cfb..c45786fa6b9c7834b73fa0266ad4f37dfdfb8937 100644 +index bb2649001f0b31676a51378745818d5c5b15c443..6311261d71aa062ba497a73cd22cb5dbdf2a4cdb 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -74,6 +74,16 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -1354,7 +1354,7 @@ index b67ac487ce4a7fd8b2f62452ab0b87f4a55006f2..9e7b07f353fb8f0650b8805014c37136 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index f37ba04ae0277152d93e3e585973d46c25e52395..1782b1c8e03447d3d4e542f7066cb1af8acd8246 100644 +index c19258a6dade5b7605d97eca7140a7b30e00cb8b..5bd06e2128dfbd58d1d6308e93fb6a086185d346 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java @@ -126,6 +126,14 @@ public class Shulker extends AbstractGolem implements Enemy { @@ -1552,10 +1552,10 @@ index 543913b7e9e92ac43c2e557213a487140326a69e..48e193182861d5e5b5364b226493c665 public boolean isFlapping() { return this.tickCount % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index f908db6eeff5ee5a1ab2783d8e8bbb1598c3ace3..0abc1da5154bef4c7aa03d44f651af39b289c187 100644 +index 8e5bf153a457026808e2ea670e874e66ca0d5e98..1f66c8d5194ee5b3794ea86a951ae553aa375422 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -74,6 +74,14 @@ public class Vindicator extends AbstractIllager { +@@ -73,6 +73,14 @@ public class Vindicator extends AbstractIllager { } // Purpur end - Ridables @@ -1783,10 +1783,10 @@ index 4c8e49ba064241ec7ac505fa6f5df6d7f9c009b6..f52aba35ee7e202074cda8fb4dfd6a7d return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 098dfbcf406040939e53ec212d3b433ab3b41291..76f9abb9dbb11e1b5d404cd7a398c0e8ee103150 100644 +index b1cad9a37d8d1f053add366699c5277c4fd84f6b..eefc5c1f494f1053f93559e8c666065f561dec10 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -272,6 +272,14 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -271,6 +271,14 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end - Ridables diff --git a/purpur-server/minecraft-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch similarity index 97% rename from purpur-server/minecraft-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch rename to purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch index d83757e95..37f418bae 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch +++ b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index cc26f97e1e72eb077dc60691dadbcd5a52235c0d..1f03fb4c45f0cc97492d3821245cc4c758d258e1 100644 +index 56faf055cfbe1d646db24510092b9ab86950dda4..b5c770317f7d3c5c7857201c7fbb056183161eba 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -1037,6 +1037,27 @@ public abstract class PlayerList { +@@ -1004,6 +1004,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API @@ -35,9 +35,9 @@ index cc26f97e1e72eb077dc60691dadbcd5a52235c0d..1f03fb4c45f0cc97492d3821245cc4c7 + // Purpur end - Barrels and enderchests 6 rows } - public boolean isWhiteListed(GameProfile profile) { + // Paper start - whitelist verify event / login event diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index 65d981d26c729d63aa9bad1bbe90cef35207e832..97b104679bb2b9e466caa10d7b022ee6d597e7e5 100644 +index c421cc7dc6c401a19eaf193abd970f21e910f927..acb53dba83fe9481508fa4d4704203a08f575450 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -221,6 +221,7 @@ public abstract class Player extends LivingEntity { diff --git a/purpur-server/minecraft-patches/unapplied-features/0004-Giants-AI-settings.patch b/purpur-server/minecraft-patches/features/0004-Giants-AI-settings.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-features/0004-Giants-AI-settings.patch rename to purpur-server/minecraft-patches/features/0004-Giants-AI-settings.patch diff --git a/purpur-server/minecraft-patches/unapplied-features/0005-Chickens-can-retaliate.patch b/purpur-server/minecraft-patches/features/0005-Chickens-can-retaliate.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-features/0005-Chickens-can-retaliate.patch rename to purpur-server/minecraft-patches/features/0005-Chickens-can-retaliate.patch diff --git a/purpur-server/minecraft-patches/unapplied-features/0006-Minecart-settings-and-WASD-controls.patch b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch similarity index 98% rename from purpur-server/minecraft-patches/unapplied-features/0006-Minecart-settings-and-WASD-controls.patch rename to purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch index e75ec1e8a..62b314a41 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0006-Minecart-settings-and-WASD-controls.patch +++ b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 7adb3d1f75896f1e31747e3356b124948a1c77c0..a8d3db032f9a808419b4c3a3790c65a63a31ab9d 100644 +index a249567d9cd2dfb552748ab4112709c0c0d2009b..f047ba2070ffe733a97a944b02fdb5f62046f657 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -1270,6 +1270,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1204,6 +1204,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc } else { // Purpur start - Add boat fall damage config if (damageSource.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) { diff --git a/purpur-server/minecraft-patches/unapplied-features/0007-Villagers-follow-emerald-blocks.patch b/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch similarity index 96% rename from purpur-server/minecraft-patches/unapplied-features/0007-Villagers-follow-emerald-blocks.patch rename to purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch index 612d28fa9..88cdc38e7 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0007-Villagers-follow-emerald-blocks.patch +++ b/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch @@ -43,10 +43,10 @@ index f8782cdcf3015cad2693663a3c222bd60822f45b..d1a77544df7bcaa5f1dbca3139324107 public static final int VILLAGER_SLOT_OFFSET = 300; private static final int VILLAGER_INVENTORY_SIZE = 8; diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index b91c7bdfa4df80bf52ed714efc877a30cdcb3f36..4a68a8124716a57801f2d42a87e4d68c99d2f348 100644 +index eefc5c1f494f1053f93559e8c666065f561dec10..835c80828f831c9bc0f8c7cdf451f268bb36e5ad 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -269,6 +269,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -268,6 +268,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); @@ -54,7 +54,7 @@ index b91c7bdfa4df80bf52ed714efc877a30cdcb3f36..4a68a8124716a57801f2d42a87e4d68c } // Purpur end - Ridables -@@ -277,6 +278,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -276,6 +277,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.villagerMaxHealth); this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.villagerScale); @@ -62,7 +62,7 @@ index b91c7bdfa4df80bf52ed714efc877a30cdcb3f36..4a68a8124716a57801f2d42a87e4d68c } // Purpur end - Configurable entity base attributes -@@ -345,7 +347,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -344,7 +346,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public static AttributeSupplier.Builder createAttributes() { diff --git a/purpur-server/minecraft-patches/unapplied-features/0008-Implement-elytra-settings.patch b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch similarity index 98% rename from purpur-server/minecraft-patches/unapplied-features/0008-Implement-elytra-settings.patch rename to purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch index 436e1a581..946aaa76c 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0008-Implement-elytra-settings.patch +++ b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch @@ -51,7 +51,7 @@ index 83cfe63b0245f79d0873477ab3aae75f690ecb68..f32370217735b5e9556a0df7652682d8 itemInHand.shrink(1); // Moved up from below } else { diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java -index 52aaa325476af53eca97fc14ad5f82fbb9193c80..d512ee6b1039b80b908816b625ef1aa9cd50461c 100644 +index 7041e93158ffab707f14ff6e48c3977bebf275a9..b95acf4c688a9113a34e9be2639536245c66c83e 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java @@ -700,6 +700,14 @@ public final class ItemStack implements DataComponentHolder { diff --git a/purpur-server/minecraft-patches/unapplied-features/0009-Configurable-jockey-options.patch b/purpur-server/minecraft-patches/features/0009-Configurable-jockey-options.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-features/0009-Configurable-jockey-options.patch rename to purpur-server/minecraft-patches/features/0009-Configurable-jockey-options.patch diff --git a/purpur-server/minecraft-patches/unapplied-features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/purpur-server/minecraft-patches/features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to purpur-server/minecraft-patches/features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch diff --git a/purpur-server/minecraft-patches/unapplied-features/0011-Phantoms-burn-in-light.patch b/purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-features/0011-Phantoms-burn-in-light.patch rename to purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch diff --git a/purpur-server/minecraft-patches/unapplied-features/0012-Make-entity-breeding-times-configurable.patch b/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch similarity index 99% rename from purpur-server/minecraft-patches/unapplied-features/0012-Make-entity-breeding-times-configurable.patch rename to purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch index ba379b430..38c5a4791 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0012-Make-entity-breeding-times-configurable.patch +++ b/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch @@ -150,10 +150,10 @@ index 869a0154c81593db8933f9daa6a7d3a9d02facc5..37b6bfa8dc1fd4ed0006f6531d2056bc this.partner.resetLove(); serverLevel.addFreshEntityWithPassengers(fox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index 801fc7e1a6ec56a6cde5b787daebe3c8c008cc93..50a64a312cb6af0f39117993553b66de1f095150 100644 +index 3bdfd064ba3985e7f3d1c537d60908568678ec78..9b101015f7add4821fb863255294ba2171f5405f 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java -@@ -140,6 +140,13 @@ public class HappyGhast extends Animal { +@@ -146,6 +146,13 @@ public class HappyGhast extends Animal { } // Purpur end - Configurable entity base attributes diff --git a/purpur-server/minecraft-patches/unapplied-features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch b/purpur-server/minecraft-patches/features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 98% rename from purpur-server/minecraft-patches/unapplied-features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to purpur-server/minecraft-patches/features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch index 26a4c805e..570d86d86 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/purpur-server/minecraft-patches/features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Apply display names from item forms of entities to entities diff --git a/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java -index 5dfd78a0e00cae85feff8acd785cdfdf23433ba6..e6813da9d002b90acd44db1435f5fa9bf1bbed47 100644 +index e2ffc9b4a95a7684a28b47ad93644c95f9eb5ec8..f145925a8215a501c8013045947de996e3c85532 100644 --- a/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/net/minecraft/world/entity/decoration/ArmorStand.java @@ -450,6 +450,7 @@ public class ArmorStand extends LivingEntity { diff --git a/purpur-server/minecraft-patches/unapplied-features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 98% rename from purpur-server/minecraft-patches/unapplied-features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index a2f749d85..851fe58ad 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -135,10 +135,10 @@ index f0583076ef62189508a392a76c3fb6b741bbdde9..dc4a9ddb8479e9d0c4895b19d7d677cd brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 4a68a8124716a57801f2d42a87e4d68c99d2f348..3b78e25de462a6fc393175f7992b9a1d4d08c64b 100644 +index 835c80828f831c9bc0f8c7cdf451f268bb36e5ad..d4c4856dccb56e2108f174a37e88ad2268967c8a 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -315,7 +315,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -314,7 +314,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler villagerBrain.setSchedule(Schedule.VILLAGER_DEFAULT); villagerBrain.addActivityWithConditions( Activity.WORK, @@ -147,7 +147,7 @@ index 4a68a8124716a57801f2d42a87e4d68c99d2f348..3b78e25de462a6fc393175f7992b9a1d ImmutableSet.of(Pair.of(MemoryModuleType.JOB_SITE, MemoryStatus.VALUE_PRESENT)) ); } -@@ -966,7 +966,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -965,7 +965,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public boolean hasFarmSeeds() { diff --git a/purpur-server/minecraft-patches/unapplied-features/0015-Add-mobGriefing-override-to-everything-affected.patch b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch similarity index 99% rename from purpur-server/minecraft-patches/unapplied-features/0015-Add-mobGriefing-override-to-everything-affected.patch rename to purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch index d484b34f9..428252ba3 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0015-Add-mobGriefing-override-to-everything-affected.patch +++ b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing override to everything affected diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index c7071efb54381976890b28d99b15391130217f31..70808e9f092953a3edf7001b318c91228844f73c 100644 +index 4f149e5e17d2d2f2964e2f6626e20f52121e72d9..a70fddd19b24bb25edde63e4fda4685ee6997eba 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -1936,7 +1936,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin diff --git a/purpur-server/minecraft-patches/unapplied-features/0016-Add-EntityTeleportHinderedEvent.patch b/purpur-server/minecraft-patches/features/0016-Add-EntityTeleportHinderedEvent.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-features/0016-Add-EntityTeleportHinderedEvent.patch rename to purpur-server/minecraft-patches/features/0016-Add-EntityTeleportHinderedEvent.patch diff --git a/purpur-server/minecraft-patches/unapplied-features/0017-Toggle-for-water-sensitive-mob-damage.patch b/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch similarity index 98% rename from purpur-server/minecraft-patches/unapplied-features/0017-Toggle-for-water-sensitive-mob-damage.patch rename to purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch index 00d5670f6..2d34dd1b3 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0017-Toggle-for-water-sensitive-mob-damage.patch +++ b/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch @@ -176,10 +176,10 @@ index 07767c9d649e7ef2b8fd8e3ac62d99ce13271fe4..23e119ce82c3a0541b40249b20f133e3 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index 136b918f053cacbc4fa60b0ed434619c5e07adf5..60073e503d6e52160e6d4e037b128bdeb6d56073 100644 +index 9b101015f7add4821fb863255294ba2171f5405f..57d691d4bdb63d20ee582f28c475b5eaca128269 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java -@@ -147,6 +147,13 @@ public class HappyGhast extends Animal { +@@ -153,6 +153,13 @@ public class HappyGhast extends Animal { } // Purpur end - Make entity breeding times configurable @@ -899,7 +899,7 @@ index 75cb1db5584c04e442583ab2f50a26132ed48bfb..9baec22561093d64157d93449e84c23b EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index c45786fa6b9c7834b73fa0266ad4f37dfdfb8937..b2e59058c71eb0b05670be8dcddfff073ae2d0db 100644 +index 6311261d71aa062ba497a73cd22cb5dbdf2a4cdb..4b68c0e999c37b3a3b62b522e2fcc805d2483943 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -84,6 +84,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -989,7 +989,7 @@ index 23b6d3c9746e1ee641d8b19ec50805cb271a9cc9..d75df6de50f9830efeea826d0ebdac17 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index 1782b1c8e03447d3d4e542f7066cb1af8acd8246..9f6b05671c973e1262cbd6673aac7f1d3a74e2e3 100644 +index 5bd06e2128dfbd58d1d6308e93fb6a086185d346..dae9752d8f45a067b952885b25df3990504c077e 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java @@ -134,6 +134,13 @@ public class Shulker extends AbstractGolem implements Enemy { @@ -1137,10 +1137,10 @@ index 48e193182861d5e5b5364b226493c665957bcc2f..30bd8a1b75376e6c74847ec338cc7f89 public boolean isFlapping() { return this.tickCount % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index 0abc1da5154bef4c7aa03d44f651af39b289c187..9f4d93308adc49d7ae83796a8dc43db16e7992b6 100644 +index 1f66c8d5194ee5b3794ea86a951ae553aa375422..28fc1cd1e8721e2a87b5aa610d27afa8df3f4074 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -82,6 +82,13 @@ public class Vindicator extends AbstractIllager { +@@ -81,6 +81,13 @@ public class Vindicator extends AbstractIllager { } // Purpur end - Configurable entity base attributes @@ -1317,10 +1317,10 @@ index f52aba35ee7e202074cda8fb4dfd6a7d9ded1f09..f4893cc54d7f144025da0057beedb3a9 return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index f46a105ac032d3c5a749e92cf004f6d74d0fb957..b71954a47e930bfc0c501c325697cd88166a190c 100644 +index d4c4856dccb56e2108f174a37e88ad2268967c8a..67732dbbad95791724901058615026a90ad05fc5 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -282,6 +282,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -281,6 +281,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end - Configurable entity base attributes diff --git a/purpur-server/minecraft-patches/unapplied-features/0018-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch similarity index 99% rename from purpur-server/minecraft-patches/unapplied-features/0018-API-for-any-mob-to-burn-daylight.patch rename to purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch index 82914d436..e68b30dc2 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0018-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0018-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/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 34e0fbef06b0c7aededf27fe9dc64f3f6f33e3ae..ce3e5ec505ac37c820436bcf7c7d6452ff015f70 100644 +index 4bf841dae4d1f95836365f339dd87c102f1355b0..4c18fc20a49cc3680c6215725890679b50bb2d5a 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -542,6 +542,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -35,7 +35,7 @@ index 34e0fbef06b0c7aededf27fe9dc64f3f6f33e3ae..ce3e5ec505ac37c820436bcf7c7d6452 this.type = entityType; this.level = level; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 70808e9f092953a3edf7001b318c91228844f73c..98096df5f83196a6fee8d26637a1816807952f3f 100644 +index a70fddd19b24bb25edde63e4fda4685ee6997eba..eabee40979ab8a1611b2d4eff04414f303b672f1 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -286,6 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin diff --git a/purpur-server/minecraft-patches/unapplied-features/0019-Cows-naturally-aggressive-to-players-chance.patch b/purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-features/0019-Cows-naturally-aggressive-to-players-chance.patch rename to purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch diff --git a/purpur-server/minecraft-patches/unapplied-features/0020-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch similarity index 98% rename from purpur-server/minecraft-patches/unapplied-features/0020-Mobs-always-drop-experience.patch rename to purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch index cb13ab943..84d08f12e 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0020-Mobs-always-drop-experience.patch +++ b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch @@ -167,10 +167,10 @@ index 23e119ce82c3a0541b40249b20f133e39fac6858..8964bb5098c0dc36741af3656af6bc0b protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index 60073e503d6e52160e6d4e037b128bdeb6d56073..b187c9db564e8fabc34aa1bfe428a00fafb27fec 100644 +index 57d691d4bdb63d20ee582f28c475b5eaca128269..fb37669b4d66bb853eabf2d15a369d7ad5a2dbb9 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java -@@ -154,6 +154,13 @@ public class HappyGhast extends Animal { +@@ -160,6 +160,13 @@ public class HappyGhast extends Animal { } // Purpur end - Toggle for water sensitive mob damage @@ -869,7 +869,7 @@ index 3f331215ef49c52fa3a53bcf744159d2221111f5..a4ce65911a5d778f60bcedb3acd9fe59 EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index b2e59058c71eb0b05670be8dcddfff073ae2d0db..93eaafe260312f26840a2afee8375b8a95d97ba2 100644 +index 4b68c0e999c37b3a3b62b522e2fcc805d2483943..2ea8c8480dcc15eb5b4bc9686554ec912ef1f3f4 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -91,6 +91,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -959,7 +959,7 @@ index d75df6de50f9830efeea826d0ebdac17f56d4c4b..2b85cedf235e673d6030c2a649abf60b protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index 9f6b05671c973e1262cbd6673aac7f1d3a74e2e3..a46ca09f661a4f8f3ede6550d613e0c704a9389b 100644 +index dae9752d8f45a067b952885b25df3990504c077e..881a6f340d8e72eb0d9b36e0f658aeef8210889b 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java @@ -141,6 +141,13 @@ public class Shulker extends AbstractGolem implements Enemy { @@ -1103,10 +1103,10 @@ index 30bd8a1b75376e6c74847ec338cc7f8988d6ca8a..ab320cf5a8c68fd239e81172a2f3909a public boolean isFlapping() { return this.tickCount % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index 9f4d93308adc49d7ae83796a8dc43db16e7992b6..df95c6be4469eeefa248e5ef18cfaba3d4cdeea6 100644 +index 28fc1cd1e8721e2a87b5aa610d27afa8df3f4074..7f70b2387842f65da4632f1a27669a02d4e0402d 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java -@@ -89,6 +89,13 @@ public class Vindicator extends AbstractIllager { +@@ -88,6 +88,13 @@ public class Vindicator extends AbstractIllager { } // Purpur end - Toggle for water sensitive mob damage @@ -1283,10 +1283,10 @@ index f4893cc54d7f144025da0057beedb3a974c80dc1..70ee15527fa6f30783d6a58bb767b181 return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index b71954a47e930bfc0c501c325697cd88166a190c..630ef56b5543b1d7a3d0526c132c19b93b217b16 100644 +index 67732dbbad95791724901058615026a90ad05fc5..edef9b959200008dda8c5036319e29c5e2d92dae 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java -@@ -289,6 +289,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -288,6 +288,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end - Toggle for water sensitive mob damage From 9cd2f31887803e060533c9f99548269dd16c5499 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 29 Jun 2025 14:08:06 -0700 Subject: [PATCH 162/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@f1136925 Fix missing event call PaperMC/Paper@795dd147 Remove a bunch more experimental annotations (#12712) PaperMC/Paper@ab1b472c Add back an experimental --- gradle.properties | 2 +- .../files/src/main/java/org/bukkit/Material.java.patch | 2 +- .../files/src/main/java/org/bukkit/entity/Player.java.patch | 2 +- .../server/network/ServerGamePacketListenerImpl.java.patch | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index ea05e73dd..4151905b8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.7-R0.1-SNAPSHOT mcVersion = 1.21.7-rc2 -paperCommit = ef647a83012adc91d30af24334e716ccc5b1b26c +paperCommit = ab1b472c5663f4123632770db8ea509b9be49e20 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch index 790b50108..278d96950 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -3637,4 +_,40 @@ +@@ -3633,4 +_,40 @@ return this.asItemType().getDefaultDataTypes(); } // Paper end - data component API diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch index d2b5497b8..5cfc81d67 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3934,4 +_,123 @@ +@@ -3932,4 +_,123 @@ */ @ApiStatus.Experimental PlayerGameConnection getConnection(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index 4051d03b5..d7a211c12 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -222,7 +222,7 @@ packet.dispatch( new ServerboundInteractPacket.Handler() { private void performInteraction(InteractionHand hand, ServerGamePacketListenerImpl.EntityInteraction entityInteraction, PlayerInteractEntityEvent event) { // CraftBukkit -@@ -3745,6 +_,12 @@ +@@ -3747,6 +_,12 @@ readChannelIdentifier(data, startIndex, data.length, registerChannel); return; } From 04a9045d98ac48d82941210d0391d0f2a05ef10b Mon Sep 17 00:00:00 2001 From: MXU Date: Mon, 30 Jun 2025 03:05:11 +0100 Subject: [PATCH 163/289] Fix phantom high speed by modifying the speed: Part 2 (#1682) Co-authored-by: granny --- .../features/0001-Ridables.patch | 37 ++++++++++++++++--- .../0008-Implement-elytra-settings.patch | 6 +-- ...018-API-for-any-mob-to-burn-daylight.patch | 4 +- 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 6184b7034..83b3841d2 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -177,7 +177,7 @@ index f0c452ddc4b299a930de261722cc41a89aa78eeb..8e8ddab59de508c84c4182e105a11554 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 96e47e6145a4cce8c154a05f9b155c1ba74bfa6a..d272f5e789cb6c03ede0bece14fc3fe976a02ff3 100644 +index 96e47e6145a4cce8c154a05f9b155c1ba74bfa6a..388d2e87696d9d3ec265355ec3602a03aa3151bb 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -238,9 +238,9 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -210,7 +210,34 @@ index 96e47e6145a4cce8c154a05f9b155c1ba74bfa6a..d272f5e789cb6c03ede0bece14fc3fe9 @Override protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) { -@@ -3629,8 +3630,10 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3026,6 +3027,26 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin + this.move(MoverType.SELF, this.getDeltaMovement()); + this.setDeltaMovement(this.getDeltaMovement().scale(0.5)); + } else { ++ // Purpur start - Ridables ++ if (this.getRider() != null && this.isControllable()) { ++ float f = 0.91F; ++ if (this.onGround()) { ++ f = this.level().getBlockState(this.getBlockPosBelowThatAffectsMyMovement()).getBlock().getFriction() * 0.91F; ++ } ++ ++ float f1 = 0.16277137F / (f * f * f); ++ f = 0.91F; ++ if (this.onGround()) { ++ f = this.level().getBlockState(this.getBlockPosBelowThatAffectsMyMovement()).getBlock().getFriction() * 0.91F; ++ } ++ ++ this.moveRelative(this.onGround() ? 0.1F * f1 : 0.02F, relative); ++ this.move(MoverType.SELF, this.getDeltaMovement()); ++ this.setDeltaMovement(this.getDeltaMovement().scale(f)); ++ return; ++ } ++ // Purpur end - Ridables ++ + this.moveRelative(amount, relative); + this.move(MoverType.SELF, this.getDeltaMovement()); + this.setDeltaMovement(this.getDeltaMovement().scale(0.91F)); +@@ -3629,8 +3650,10 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin this.pushEntities(); profilerFiller.pop(); // Paper start - Add EntityMoveEvent @@ -223,7 +250,7 @@ index 96e47e6145a4cce8c154a05f9b155c1ba74bfa6a..d272f5e789cb6c03ede0bece14fc3fe9 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()); -@@ -3640,6 +3643,21 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3640,6 +3663,21 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin this.absSnapTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -3813,7 +3840,7 @@ index 889c31cc9257fbbd5df8325ccee9ce39b026ec4b..4a1299d6cee2807522de0c2d0d4745c5 @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 2abb55d84507fd29817760cb0068dd083f7f1c37..3b343c29b86292f5965a84bd180a7866e76bcac1 100644 +index 2abb55d84507fd29817760cb0068dd083f7f1c37..855ec37a7e4110e37823ecf62f67f5cb3714f4bf 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -62,6 +62,52 @@ public class Phantom extends Mob implements Enemy { @@ -3907,7 +3934,7 @@ index 2abb55d84507fd29817760cb0068dd083f7f1c37..3b343c29b86292f5965a84bd180a7866 + this.setSpeed(speed); + Vec3 mot = this.getDeltaMovement(); + this.move(net.minecraft.world.entity.MoverType.SELF, mot.multiply(speed, speed, speed)); -+ this.setDeltaMovement(net.minecraft.world.phys.Vec3.ZERO); ++ this.setDeltaMovement(mot.scale(0.9D)); + } + // Purpur end - Ridables } diff --git a/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch index 436e1a581..d278d0f03 100644 --- a/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch +++ b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index ae0c2f41c522656bde37d4f31699ee6172b5a79d..4f149e5e17d2d2f2964e2f6626e20f52121e72d9 100644 +index bc26752293f8edd7d40bfc161b235c2a6eaf2c29..de3bb90db932cc452a81b0a2b267f00a51f0e47b 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -3699,7 +3699,18 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3719,7 +3719,18 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin .filter(equipmentSlot1 -> canGlideUsing(this.getItemBySlot(equipmentSlot1), equipmentSlot1)) .toList(); EquipmentSlot equipmentSlot = Util.getRandom(list, this.random); @@ -51,7 +51,7 @@ index 83cfe63b0245f79d0873477ab3aae75f690ecb68..f32370217735b5e9556a0df7652682d8 itemInHand.shrink(1); // Moved up from below } else { diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java -index 52aaa325476af53eca97fc14ad5f82fbb9193c80..d512ee6b1039b80b908816b625ef1aa9cd50461c 100644 +index 7041e93158ffab707f14ff6e48c3977bebf275a9..b95acf4c688a9113a34e9be2639536245c66c83e 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java @@ -700,6 +700,14 @@ public final class ItemStack implements DataComponentHolder { diff --git a/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch index 82914d436..41688c08f 100644 --- a/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch @@ -35,7 +35,7 @@ index 34e0fbef06b0c7aededf27fe9dc64f3f6f33e3ae..ce3e5ec505ac37c820436bcf7c7d6452 this.type = entityType; this.level = level; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 70808e9f092953a3edf7001b318c91228844f73c..98096df5f83196a6fee8d26637a1816807952f3f 100644 +index 78875973599112f8b5602bec78ce075aac0df94c..c935fe512480fe927d72570674579a5685bde366 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -286,6 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -62,7 +62,7 @@ index 70808e9f092953a3edf7001b318c91228844f73c..98096df5f83196a6fee8d26637a18168 this.lastHurtByPlayer = EntityReference.read(input, "last_hurt_by_player"); this.lastHurtByPlayerMemoryTime = input.getIntOr("last_hurt_by_player_memory_time", 0); this.lastHurtByMob = EntityReference.read(input, "last_hurt_by_mob"); -@@ -3666,6 +3669,32 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3686,6 +3689,32 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterOrRain()) { this.hurtServer(serverLevel, this.damageSources().drown(), 1.0F); } From a1bdc94600bc921c949ec3709e9617532ec75177 Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 29 Jun 2025 23:23:53 -0700 Subject: [PATCH 164/289] fix ATs getting stuck in file patches --- .../ServerCommonPacketListenerImpl.java.patch | 6 +++--- .../minecraft/world/entity/Entity.java.patch | 17 +---------------- .../world/entity/monster/Shulker.java.patch | 9 --------- .../world/entity/player/Player.java.patch | 9 --------- .../level/block/entity/FuelValues.java.patch | 11 ----------- .../level/block/state/BlockBehaviour.java.patch | 11 ----------- 6 files changed, 4 insertions(+), 59 deletions(-) delete mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/FuelValues.java.patch delete mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/state/BlockBehaviour.java.patch diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch index 5b4381b51..b1d3290dd 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch @@ -48,10 +48,10 @@ + if (org.purpurmc.purpur.PurpurConfig.useAlternateKeepAlive) { + if (this.checkIfClosed(millis) && !this.processedDisconnect) { + long currTime = System.nanoTime(); -+ if ((currTime - this.player.lastKeepAliveTx) >= java.util.concurrent.TimeUnit.SECONDS.toNanos(1L)) { // 1 second -+ this.player.lastKeepAliveTx = currTime; ++ if ((currTime - this.keepAlive.lastKeepAliveTx) >= java.util.concurrent.TimeUnit.SECONDS.toNanos(1L)) { // 1 second ++ this.keepAlive.lastKeepAliveTx = currTime; + if (this.keepAlivePending && !this.processedDisconnect && keepAlives.size() * 1000L >= KEEPALIVE_LIMIT) { -+ this.disconnect(ServerCommonPacketListenerImpl.TIMEOUT_DISCONNECTION_MESSAGE, org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT); ++ this.disconnect(TIMEOUT_DISCONNECTION_MESSAGE, io.papermc.paper.connection.DisconnectionReason.TIMEOUT); + } else if (this.checkIfClosed(millis)) { + this.keepAlivePending = true; + this.keepAlives.add(millis); // currentTime is ID diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 331145e19..ef0282cc6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -19,7 +19,7 @@ public int tickCount; private int remainingFireTicks; public boolean wasTouchingWater; -@@ -315,13 +_,13 @@ +@@ -315,8 +_,8 @@ public PortalProcessor portalProcess; public int portalCooldown; private boolean invulnerable; @@ -30,12 +30,6 @@ private boolean hasGlowingTag; private final Set tags = new io.papermc.paper.util.SizeLimitedSet<>(new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(), MAX_ENTITY_TAG_COUNT); // Paper - fully limit tag size - replace set impl private final double[] pistonDeltas = new double[]{0.0, 0.0, 0.0}; - private long pistonDeltasGameTime; -- protected EntityDimensions dimensions; -+ private EntityDimensions dimensions; - private float eyeHeight; - public boolean isInPowderSnow; - public boolean wasInPowderSnow; @@ -371,6 +_,7 @@ public long activatedTick = Integer.MIN_VALUE; public boolean isTemporarilyActive; @@ -83,15 +77,6 @@ } public boolean causeFallDamage(double fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -1964,7 +_,7 @@ - return this.isInWater() || flag; - } - -- public void updateInWaterStateAndDoWaterCurrentPushing() { -+ void updateInWaterStateAndDoWaterCurrentPushing() { - if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { - this.wasTouchingWater = false; - } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) { @@ -2585,6 +_,11 @@ output.putBoolean("Paper.FreezeLock", true); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch index e98033505..a64e3c08d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Shulker.java.patch @@ -1,14 +1,5 @@ --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java -@@ -80,7 +_,7 @@ - Vec3i unitVec3i = Direction.SOUTH.getUnitVec3i(); - return new Vector3f(unitVec3i.getX(), unitVec3i.getY(), unitVec3i.getZ()); - }); -- public static final float MAX_SCALE = 3.0F; -+ private static final float MAX_SCALE = 3.0F; - private float currentPeekAmountO; - private float currentPeekAmount; - @Nullable @@ -94,6 +_,21 @@ this.lookControl = new Shulker.ShulkerLookControl(this); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch index bce3db5c3..787982d42 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch @@ -70,15 +70,6 @@ } float f2 = f + f1; -@@ -1579,7 +_,7 @@ - } - - @Override -- public boolean canGlide() { -+ protected boolean canGlide() { - return !this.abilities.flying && super.canGlide(); - } - @@ -1823,7 +_,23 @@ @Override diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/FuelValues.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/FuelValues.java.patch deleted file mode 100644 index c43d411ee..000000000 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/FuelValues.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/net/minecraft/world/level/block/entity/FuelValues.java -+++ b/net/minecraft/world/level/block/entity/FuelValues.java -@@ -17,7 +_,7 @@ - import net.minecraft.world.level.block.Blocks; - - public class FuelValues { -- public final Object2IntSortedMap values; -+ private final Object2IntSortedMap values; - - FuelValues(Object2IntSortedMap values) { - this.values = values; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/state/BlockBehaviour.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/state/BlockBehaviour.java.patch deleted file mode 100644 index db63daffb..000000000 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/state/BlockBehaviour.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/net/minecraft/world/level/block/state/BlockBehaviour.java -+++ b/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -90,7 +_,7 @@ - Direction.WEST, Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.DOWN, Direction.UP - }; - public final boolean hasCollision; -- public float explosionResistance; -+ protected final float explosionResistance; - protected final boolean isRandomlyTicking; - protected final SoundType soundType; - protected final float friction; From 175bb181af6e564c5843e84f177b22830240010d Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 29 Jun 2025 23:28:54 -0700 Subject: [PATCH 165/289] [ci skip] micro opt when applying block friction on flying ridable mobs --- .../features/0001-Ridables.patch | 23 ++++++++----------- .../0008-Implement-elytra-settings.patch | 4 ++-- ...018-API-for-any-mob-to-burn-daylight.patch | 4 ++-- 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 83b3841d2..b2f08a475 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -177,7 +177,7 @@ index f0c452ddc4b299a930de261722cc41a89aa78eeb..8e8ddab59de508c84c4182e105a11554 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 96e47e6145a4cce8c154a05f9b155c1ba74bfa6a..388d2e87696d9d3ec265355ec3602a03aa3151bb 100644 +index 96e47e6145a4cce8c154a05f9b155c1ba74bfa6a..4f67ae2491d053d3d7261440c029da512dc1002b 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -238,9 +238,9 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -210,26 +210,21 @@ index 96e47e6145a4cce8c154a05f9b155c1ba74bfa6a..388d2e87696d9d3ec265355ec3602a03 @Override protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) { -@@ -3026,6 +3027,26 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3026,6 +3027,21 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin this.move(MoverType.SELF, this.getDeltaMovement()); this.setDeltaMovement(this.getDeltaMovement().scale(0.5)); } else { + // Purpur start - Ridables + if (this.getRider() != null && this.isControllable()) { -+ float f = 0.91F; ++ float friction = 0.91F; + if (this.onGround()) { -+ f = this.level().getBlockState(this.getBlockPosBelowThatAffectsMyMovement()).getBlock().getFriction() * 0.91F; ++ friction = this.level().getBlockState(this.getBlockPosBelowThatAffectsMyMovement()).getBlock().getFriction() * 0.91F; + } + -+ float f1 = 0.16277137F / (f * f * f); -+ f = 0.91F; -+ if (this.onGround()) { -+ f = this.level().getBlockState(this.getBlockPosBelowThatAffectsMyMovement()).getBlock().getFriction() * 0.91F; -+ } -+ -+ this.moveRelative(this.onGround() ? 0.1F * f1 : 0.02F, relative); ++ float frictionCompensation = 0.16277137F / (friction * friction * friction); ++ this.moveRelative(this.onGround() ? 0.1F * frictionCompensation : 0.02F, relative); + this.move(MoverType.SELF, this.getDeltaMovement()); -+ this.setDeltaMovement(this.getDeltaMovement().scale(f)); ++ this.setDeltaMovement(this.getDeltaMovement().scale(friction)); + return; + } + // Purpur end - Ridables @@ -237,7 +232,7 @@ index 96e47e6145a4cce8c154a05f9b155c1ba74bfa6a..388d2e87696d9d3ec265355ec3602a03 this.moveRelative(amount, relative); this.move(MoverType.SELF, this.getDeltaMovement()); this.setDeltaMovement(this.getDeltaMovement().scale(0.91F)); -@@ -3629,8 +3650,10 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3629,8 +3645,10 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin this.pushEntities(); profilerFiller.pop(); // Paper start - Add EntityMoveEvent @@ -250,7 +245,7 @@ index 96e47e6145a4cce8c154a05f9b155c1ba74bfa6a..388d2e87696d9d3ec265355ec3602a03 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()); -@@ -3640,6 +3663,21 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3640,6 +3658,21 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin this.absSnapTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } diff --git a/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch index d278d0f03..2cbb5abfe 100644 --- a/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch +++ b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index bc26752293f8edd7d40bfc161b235c2a6eaf2c29..de3bb90db932cc452a81b0a2b267f00a51f0e47b 100644 +index 7d0a8048cea101be9747a2b89713288f53ce6637..49089d7235857e2d788002c1bc6d0fe5979e7ec0 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -3719,7 +3719,18 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3714,7 +3714,18 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin .filter(equipmentSlot1 -> canGlideUsing(this.getItemBySlot(equipmentSlot1), equipmentSlot1)) .toList(); EquipmentSlot equipmentSlot = Util.getRandom(list, this.random); diff --git a/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch index 41688c08f..f820794fb 100644 --- a/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch @@ -35,7 +35,7 @@ index 34e0fbef06b0c7aededf27fe9dc64f3f6f33e3ae..ce3e5ec505ac37c820436bcf7c7d6452 this.type = entityType; this.level = level; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 78875973599112f8b5602bec78ce075aac0df94c..c935fe512480fe927d72570674579a5685bde366 100644 +index eeb8e244f57a5c36b99c13dd20cc635694d83f34..70fa06167ad67bd201d37b1666960c9b69743c76 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -286,6 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -62,7 +62,7 @@ index 78875973599112f8b5602bec78ce075aac0df94c..c935fe512480fe927d72570674579a56 this.lastHurtByPlayer = EntityReference.read(input, "last_hurt_by_player"); this.lastHurtByPlayerMemoryTime = input.getIntOr("last_hurt_by_player_memory_time", 0); this.lastHurtByMob = EntityReference.read(input, "last_hurt_by_mob"); -@@ -3686,6 +3689,32 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3681,6 +3684,32 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterOrRain()) { this.hurtServer(serverLevel, this.damageSources().drown(), 1.0F); } From d0b705e49c19d6073e62919ed38c07b8a2c9a34b Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 29 Jun 2025 23:38:10 -0700 Subject: [PATCH 166/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@57c202e0 Allow adventure nbt codec to parse all tags --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 17b7957db..a513a92b4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6 -paperCommit = bd79e20c6627faadad184bd2e6dbea31b35d32d0 +paperCommit = 57c202e01516b653aea9c7e050eaded1448863e5 org.gradle.configuration-cache = true org.gradle.caching = true From 3658291d2999f9946551066af952b929eaca4d2a Mon Sep 17 00:00:00 2001 From: MXU Date: Mon, 30 Jun 2025 18:11:04 +0100 Subject: [PATCH 167/289] Fix llama not moving when ridden, Fixes #1507 (#1684) Co-authored-by: granny --- .../features/0001-Ridables.patch | 17 ++++++++++++----- ...02-Configurable-entity-base-attributes.patch | 8 ++++---- ...ake-entity-breeding-times-configurable.patch | 6 +++--- ...-Toggle-for-water-sensitive-mob-damage.patch | 6 +++--- .../0020-Mobs-always-drop-experience.patch | 6 +++--- 5 files changed, 25 insertions(+), 18 deletions(-) diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index b2f08a475..dde8fdd6d 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -2384,10 +2384,10 @@ index 2a1d720557c0bd4895a32723e34512c0a557e4f2..f1cb2e315e1d86f9fcd87db11d3ee7a8 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index 5e3382351b1b5728750534f64babc85c4da3ac54..da6450f7573ca9797577d5afae2bb1365d112177 100644 +index 5e3382351b1b5728750534f64babc85c4da3ac54..f7c6b2188ed3801417c7497dbc36749def3e5057 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -84,7 +84,51 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -84,7 +84,58 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { super(entityType, level); this.getNavigation().setRequiredPathLength(40.0F); this.maxDomestication = 30; // Paper - Missing entity API; configure max temper instead of a hardcoded value @@ -2433,13 +2433,20 @@ index 5e3382351b1b5728750534f64babc85c4da3ac54..da6450f7573ca9797577d5afae2bb136 + + @Override + public boolean isSaddled() { -+ return super.isSaddled() || (isTamed()); ++ return super.isWearingBodyArmor() || this.isTamed(); ++ } ++ ++ @Nullable ++ @Override ++ public LivingEntity getControllingPassenger() { ++ Entity firstPassenger = this.getFirstPassenger(); ++ return !this.isNoAi() && firstPassenger instanceof net.minecraft.world.entity.Mob mob && firstPassenger.canControlVehicle() ? mob : null; } + // Purpur end - Ridables public boolean isTraderLlama() { return false; -@@ -127,6 +171,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -127,6 +178,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -2447,7 +2454,7 @@ index 5e3382351b1b5728750534f64babc85c4da3ac54..da6450f7573ca9797577d5afae2bb136 this.goalSelector.addGoal(1, new RunAroundLikeCrazyGoal(this, 1.2)); this.goalSelector.addGoal(2, new LlamaFollowCaravanGoal(this, 2.1F)); this.goalSelector.addGoal(3, new RangedAttackGoal(this, 1.25, 40, 20.0F)); -@@ -137,6 +182,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -137,6 +189,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 0.7)); this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(9, new RandomLookAroundGoal(this)); diff --git a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch index e4676be04..cc1c04af7 100644 --- a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch +++ b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch @@ -23,7 +23,7 @@ index 8e8ddab59de508c84c4182e105a11554387dcce0..1896f91e10a5e17332836d5354813a18 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index d272f5e789cb6c03ede0bece14fc3fe976a02ff3..41b6b18130d89b3c3c31bbb2d184fa735a8cd99c 100644 +index 4f67ae2491d053d3d7261440c029da512dc1002b..7d0a8048cea101be9747a2b89713288f53ce6637 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -291,6 +291,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -712,10 +712,10 @@ index f1cb2e315e1d86f9fcd87db11d3ee7a81cfe12f6..53c0eac62018a0d88e30b8c13de94216 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index da6450f7573ca9797577d5afae2bb1365d112177..6fe6507edbf4c3c2795b8fe000d230d5fe6a2486 100644 +index f7c6b2188ed3801417c7497dbc36749def3e5057..3bc0f670a84216e5a62d1e3a9fb26bd85a0cd79a 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -130,6 +130,23 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -137,6 +137,23 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { } // Purpur end - Ridables @@ -1222,7 +1222,7 @@ index 0335e85f196363c06597812149e9a93cba57fa9e..5b0794bd87423715cada1f860b4141fd EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index 304a1ce41071e5597859b1235fa014f966ff5cfb..c45786fa6b9c7834b73fa0266ad4f37dfdfb8937 100644 +index bb2649001f0b31676a51378745818d5c5b15c443..6311261d71aa062ba497a73cd22cb5dbdf2a4cdb 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -74,6 +74,16 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { diff --git a/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch b/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch index ba379b430..90d9febea 100644 --- a/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch +++ b/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch @@ -150,7 +150,7 @@ index 869a0154c81593db8933f9daa6a7d3a9d02facc5..37b6bfa8dc1fd4ed0006f6531d2056bc this.partner.resetLove(); serverLevel.addFreshEntityWithPassengers(fox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index 801fc7e1a6ec56a6cde5b787daebe3c8c008cc93..50a64a312cb6af0f39117993553b66de1f095150 100644 +index 6c80c12313147fb022d1bb0c8694fcf85174ae7c..136b918f053cacbc4fa60b0ed434619c5e07adf5 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java @@ -140,6 +140,13 @@ public class HappyGhast extends Animal { @@ -451,10 +451,10 @@ index 53c0eac62018a0d88e30b8c13de94216ff829cd8..3678c767818abb9e4180c2ade378ca09 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index 6fe6507edbf4c3c2795b8fe000d230d5fe6a2486..9cfc31b9acca44c56b78ba6d935bcb6c1d6c5697 100644 +index 3bc0f670a84216e5a62d1e3a9fb26bd85a0cd79a..45d0977b5016a8728b11ec13c528b160598c80e2 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -147,6 +147,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -154,6 +154,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { } // Purpur end - Configurable entity base attributes diff --git a/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch b/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch index 00d5670f6..053c5c78e 100644 --- a/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch +++ b/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch @@ -513,10 +513,10 @@ index 3678c767818abb9e4180c2ade378ca09761ad784..2928159447a87ea8cc945e73e2e81ad1 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index 9cfc31b9acca44c56b78ba6d935bcb6c1d6c5697..017482c8818a854b23237e27e3304498d800569d 100644 +index 45d0977b5016a8728b11ec13c528b160598c80e2..ea25c48cb60aff6fbc82a364789beff92b054a88 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -154,6 +154,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -161,6 +161,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { } // Purpur end - Make entity breeding times configurable @@ -899,7 +899,7 @@ index 75cb1db5584c04e442583ab2f50a26132ed48bfb..9baec22561093d64157d93449e84c23b EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index c45786fa6b9c7834b73fa0266ad4f37dfdfb8937..b2e59058c71eb0b05670be8dcddfff073ae2d0db 100644 +index 6311261d71aa062ba497a73cd22cb5dbdf2a4cdb..4b68c0e999c37b3a3b62b522e2fcc805d2483943 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -84,6 +84,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { diff --git a/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch index cb13ab943..6a84db38f 100644 --- a/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch +++ b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch @@ -509,10 +509,10 @@ index 2928159447a87ea8cc945e73e2e81ad1dbe13680..f1080a40f759b30b921b88b4f6edd35f protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index 017482c8818a854b23237e27e3304498d800569d..1bef43f42aee02a0a00556318607072ce9814860 100644 +index ea25c48cb60aff6fbc82a364789beff92b054a88..455a84ffa16152137409777e1fddbab5a21bd57d 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java -@@ -161,6 +161,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -168,6 +168,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { } // Purpur end - Toggle for water sensitive mob damage @@ -869,7 +869,7 @@ index 3f331215ef49c52fa3a53bcf744159d2221111f5..a4ce65911a5d778f60bcedb3acd9fe59 EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index b2e59058c71eb0b05670be8dcddfff073ae2d0db..93eaafe260312f26840a2afee8375b8a95d97ba2 100644 +index 4b68c0e999c37b3a3b62b522e2fcc805d2483943..2ea8c8480dcc15eb5b4bc9686554ec912ef1f3f4 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -91,6 +91,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { From 051566db7f9df74c78c5ee9f9641033ffc79a5a0 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 30 Jun 2025 10:47:48 -0700 Subject: [PATCH 168/289] check for purpur.debug.f3n on new serverbound change gamemode packet, closes #1683 --- .../network/ServerGamePacketListenerImpl.java.patch | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index f3c9a2115..093d93a7b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -222,3 +222,12 @@ packet.dispatch( new ServerboundInteractPacket.Handler() { private void performInteraction(InteractionHand hand, ServerGamePacketListenerImpl.EntityInteraction entityInteraction, PlayerInteractEntityEvent event) { // CraftBukkit +@@ -3538,7 +_,7 @@ + @Override + public void handleChangeGameMode(ServerboundChangeGameModePacket packet) { + PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); +- if (!this.player.hasPermissions(2)) { ++ if (!this.player.hasPermissions(2) && !player.getBukkitEntity().hasPermission("purpur.debug.f3n")) { // Purpur - Add permission for F3+N debug + LOGGER.warn( + "Player {} tried to change game mode to {} without required permissions", + this.player.getGameProfile().getName(), From a112b6aca718e4500a6d48ca9d7158faf0f4adf9 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 30 Jun 2025 11:58:16 -0700 Subject: [PATCH 169/289] Final 1.21.6 Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@4d854e66 Disable MC-163962 fix by default --- gradle.properties | 2 +- .../minecraft/world/item/trading/MerchantOffer.java.patch | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index a513a92b4..6fed0df2b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.6-R0.1-SNAPSHOT mcVersion = 1.21.6 -paperCommit = 57c202e01516b653aea9c7e050eaded1448863e5 +paperCommit = 4d854e66b80dad9898d71a0f0b1f83cd39b97119 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch index 6a3b114a8..d173c48d1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch @@ -1,16 +1,17 @@ --- a/net/minecraft/world/item/trading/MerchantOffer.java +++ b/net/minecraft/world/item/trading/MerchantOffer.java -@@ -143,7 +_,12 @@ +@@ -143,8 +_,13 @@ } public void updateDemand() { -- this.demand = Math.max(0, this.demand + this.uses - (this.maxUses - this.uses)); // Paper - Fix MC-163962 + // Purpur start - Configurable minimum demand for trades + this.updateDemand(0); + } + public void updateDemand(int minimumDemand) { -+ this.demand = Math.max(minimumDemand, this.demand + this.uses - (this.maxUses - this.uses)); // Paper - Fix MC-163962 + // Purpur end - Configurable minimum demand for trades + this.demand = this.demand + this.uses - (this.maxUses - this.uses); +- if (io.papermc.paper.configuration.GlobalConfiguration.get().misc.preventNegativeVillagerDemand) this.demand = Math.max(0, this.demand); // Paper - Fix MC-163962 ++ if (io.papermc.paper.configuration.GlobalConfiguration.get().misc.preventNegativeVillagerDemand) this.demand = Math.max(minimumDemand, this.demand); // Paper - Fix MC-163962 // Purpur - Configurable minimum demand for trades } public ItemStack assemble() { From f5b99917e653cfbfebaa002aec005f4194cd3c22 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 30 Jun 2025 12:06:18 -0700 Subject: [PATCH 170/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@57c202e0 Allow adventure nbt codec to parse all tags PaperMC/Paper@4d854e66 Disable MC-163962 fix by default PaperMC/Paper@dda39a0f 1.21.7-rc2 PaperMC/Paper@7f609243 Configuration API (#12301) PaperMC/Paper@371a4225 Remove a bunch more experimental annotations (#12712) PaperMC/Paper@a9f74cbf Readd dropped diff during 1.21.6 --- gradle.properties | 2 +- .../net/minecraft/server/commands/GiveCommand.java.patch | 2 +- .../minecraft/world/item/trading/MerchantOffer.java.patch | 7 ++++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index 4151905b8..ba584a3f9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.7-R0.1-SNAPSHOT mcVersion = 1.21.7-rc2 -paperCommit = ab1b472c5663f4123632770db8ea509b9be49e20 +paperCommit = a9f74cbf6e740c76ad812abde855434abc9526a0 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch index 983f2b9cd..e7a366475 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GiveCommand.java.patch @@ -6,5 +6,5 @@ boolean flag = serverPlayer.getInventory().add(itemStack1); + if (org.purpurmc.purpur.PurpurConfig.disableGiveCommandDrops) continue; // Purpur - add config option for toggling give command dropping if (flag && itemStack1.isEmpty()) { - ItemEntity itemEntity = serverPlayer.drop(itemStack, false); + ItemEntity itemEntity = serverPlayer.drop(itemStack, false, false, false, null); // Paper - do not fire PlayerDropItemEvent for /give command if (itemEntity != null) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch index 6a3b114a8..d173c48d1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/trading/MerchantOffer.java.patch @@ -1,16 +1,17 @@ --- a/net/minecraft/world/item/trading/MerchantOffer.java +++ b/net/minecraft/world/item/trading/MerchantOffer.java -@@ -143,7 +_,12 @@ +@@ -143,8 +_,13 @@ } public void updateDemand() { -- this.demand = Math.max(0, this.demand + this.uses - (this.maxUses - this.uses)); // Paper - Fix MC-163962 + // Purpur start - Configurable minimum demand for trades + this.updateDemand(0); + } + public void updateDemand(int minimumDemand) { -+ this.demand = Math.max(minimumDemand, this.demand + this.uses - (this.maxUses - this.uses)); // Paper - Fix MC-163962 + // Purpur end - Configurable minimum demand for trades + this.demand = this.demand + this.uses - (this.maxUses - this.uses); +- if (io.papermc.paper.configuration.GlobalConfiguration.get().misc.preventNegativeVillagerDemand) this.demand = Math.max(0, this.demand); // Paper - Fix MC-163962 ++ if (io.papermc.paper.configuration.GlobalConfiguration.get().misc.preventNegativeVillagerDemand) this.demand = Math.max(minimumDemand, this.demand); // Paper - Fix MC-163962 // Purpur - Configurable minimum demand for trades } public ItemStack assemble() { From fe00a838e547b5df1a8f50faaf60fc1cb477b460 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 30 Jun 2025 12:22:39 -0700 Subject: [PATCH 171/289] missed these somehow --- .../net/minecraft/world/entity/EntityType.java.patch | 9 --------- .../net/minecraft/world/entity/LivingEntity.java.patch | 9 --------- 2 files changed, 18 deletions(-) diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch index 6bd4281b3..5fc5f32fc 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch @@ -1,14 +1,5 @@ --- a/net/minecraft/world/entity/EntityType.java +++ b/net/minecraft/world/entity/EntityType.java -@@ -1089,7 +_,7 @@ - @Nullable - private Component description; - private final Optional> lootTable; -- public EntityDimensions dimensions; -+ private final EntityDimensions dimensions; - private final float spawnDimensionsScale; - private final FeatureFlagSet requiredFeatures; - @@ -1105,6 +_,16 @@ return register(vanillaEntityId(key), builder); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch index 59427016b..e1f8f1495 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch @@ -156,15 +156,6 @@ this.hurt(this.damageSources().flyIntoWall(), f); } } -@@ -3628,7 +_,7 @@ - } - } - -- public boolean canGlide() { -+ protected boolean canGlide() { - if (!this.onGround() && !this.isPassenger() && !this.hasEffect(MobEffects.LEVITATION)) { - for (EquipmentSlot equipmentSlot : EquipmentSlot.VALUES) { - if (canGlideUsing(this.getItemBySlot(equipmentSlot), equipmentSlot)) { @@ -4507,6 +_,12 @@ ? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND) : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType()); From a7adc7bc07068616c6dacebba5dbda387763c1e1 Mon Sep 17 00:00:00 2001 From: granny Date: Mon, 30 Jun 2025 12:37:41 -0700 Subject: [PATCH 172/289] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@4045339e 1.21.7 PaperMC/Paper@4c47c76e Update DataConverter constants for 1.21.7 PaperMC/Paper@9686f8b3 Enable obfuscation mappings for 1.21.7 (#12770) PaperMC/Paper@723510f9 Make warning of PlayerLoginEvent use unique plugin names (#12772) PaperMC/Paper@4cdcf00d Only namespaced reload (#12773) PaperMC/Paper@00e79dfb Fix wrong size in InventoryType#PLAYER (#12758) PaperMC/Paper@6e021c82 Fix CraftContainer#getNotchInventoryType detection of player inventory (#12751) --- .idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml | 2 +- gradle.properties | 4 ++-- .../main/java/org/bukkit/command/SimpleCommandMap.java.patch | 4 ++-- .../java/org/bukkit/event/inventory/InventoryType.java.patch | 2 +- purpur-server/build.gradle.kts.patch | 4 ++-- .../features/0003-Barrels-and-enderchests-6-rows.patch | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml b/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml index f285361d8..b149a10bc 100644 --- a/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml +++ b/.idea/runConfigurations/Run_Purpur_Paperclip_Jar.xml @@ -1,6 +1,6 @@ -