From 7950960b21e5e60f3f164cae01a35d55043ce6c9 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 8 Aug 2024 06:50:01 -0700 Subject: [PATCH 01/10] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@5a5c3a4 Remove chunk unload trace debug PaperMC/Paper@7e44684 Fix wrong assumption about locale being null in the login phase (#11204) PaperMC/Paper@042f15f [ci skip] chore: fix incorrect commit hash in PR builds (#11198) PaperMC/Paper@4e6a2a1 Check for block type in SculkSensorBlock#canActivate --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index d09da4e54..eb8faa204 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21-R0.1-SNAPSHOT mcVersion = 1.21 -paperCommit = df3b6544f74be73c8882b97c43d39022340f2d74 +paperCommit = 4e6a2a13a3e1f6fa1067a7821d2f018339395533 org.gradle.caching = true org.gradle.parallel = true From 02e4e76a1d29d93bff86e11986a9118fa1f38427 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 8 Aug 2024 21:24:09 -0700 Subject: [PATCH 02/10] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@2b5dc6d Update to 1.21.1 PaperMC/Paper@ad1a5e1 Fix registry crash PaperMC/Paper@d5052b1 Disable updating mode PaperMC/Paper@958666a diff cleanup --- gradle.properties | 6 +- patches/api/0014-Anvil-API.patch | 23 +++++- patches/server/0007-Ridables.patch | 8 +- patches/server/0016-Anvil-API.patch | 82 +++++++++++++++---- .../0022-Disable-outdated-build-check.patch | 4 +- ...-Minecart-settings-and-WASD-controls.patch | 4 +- ...ing-obsidian-valid-for-portal-frames.patch | 4 +- ...81-Store-placer-on-Block-when-placed.patch | 4 +- patches/server/0182-Summoner-API.patch | 8 +- ...ent-BlockEntity-Lore-and-DisplayName.patch | 8 +- patches/server/0241-Stonecutter-damage.patch | 4 +- ...245-Enchantment-Table-Persists-Lapis.patch | 10 +-- patches/server/0251-Remove-Timings.patch | 10 +-- .../server/0252-Remove-Mojang-Profiler.patch | 10 +-- ...-Configurable-block-blast-resistance.patch | 4 +- 15 files changed, 130 insertions(+), 59 deletions(-) diff --git a/gradle.properties b/gradle.properties index eb8faa204..13180a64b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = org.purpurmc.purpur -version = 1.21-R0.1-SNAPSHOT +version = 1.21.1-R0.1-SNAPSHOT -mcVersion = 1.21 -paperCommit = 4e6a2a13a3e1f6fa1067a7821d2f018339395533 +mcVersion = 1.21.1 +paperCommit = 958666a8f6ab8b45652d1a682b25e42100bcb0da org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0014-Anvil-API.patch b/patches/api/0014-Anvil-API.patch index 5ed2626ed..4a1bd52a7 100644 --- a/patches/api/0014-Anvil-API.patch +++ b/patches/api/0014-Anvil-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Anvil API diff --git a/src/main/java/org/bukkit/inventory/AnvilInventory.java b/src/main/java/org/bukkit/inventory/AnvilInventory.java -index c60be4fd24c7fdf65251dd6169e5e1ac3b588d95..569deccd2f1cf21da9b5906433ac493c1f2081be 100644 +index f1f97a85ec713c05c882d7588f4a3e4a017f4795..468d8b336c8060da346e2dfe60900868148376f6 100644 --- a/src/main/java/org/bukkit/inventory/AnvilInventory.java +++ b/src/main/java/org/bukkit/inventory/AnvilInventory.java -@@ -123,4 +123,14 @@ public interface AnvilInventory extends Inventory { +@@ -138,4 +138,14 @@ public interface AnvilInventory extends Inventory { setItem(2, result); } // Paper end @@ -21,6 +21,25 @@ index c60be4fd24c7fdf65251dd6169e5e1ac3b588d95..569deccd2f1cf21da9b5906433ac493c + boolean canDoUnsafeEnchants(); + + void setDoUnsafeEnchants(boolean canDoUnsafeEnchants); ++ // Purpur end + } +diff --git a/src/main/java/org/bukkit/inventory/view/AnvilView.java b/src/main/java/org/bukkit/inventory/view/AnvilView.java +index 0344b3db789baf1da0b59f2d2cd66154b69b38a9..c824a94f81925abc91eff7424c8021da10980bad 100644 +--- a/src/main/java/org/bukkit/inventory/view/AnvilView.java ++++ b/src/main/java/org/bukkit/inventory/view/AnvilView.java +@@ -59,4 +59,14 @@ public interface AnvilView extends InventoryView { + * @param levels the levels to set + */ + void setMaximumRepairCost(int levels); ++ ++ // Purpur start ++ boolean canBypassCost(); ++ ++ void setBypassCost(boolean bypassCost); ++ ++ boolean canDoUnsafeEnchants(); ++ ++ void setDoUnsafeEnchants(boolean canDoUnsafeEnchants); + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/event/inventory/AnvilTakeResultEvent.java b/src/main/java/org/purpurmc/purpur/event/inventory/AnvilTakeResultEvent.java diff --git a/patches/server/0007-Ridables.patch b/patches/server/0007-Ridables.patch index 8063d58d0..00fc8b1f2 100644 --- a/patches/server/0007-Ridables.patch +++ b/patches/server/0007-Ridables.patch @@ -34,7 +34,7 @@ index 23ddd26af762c1cd7fb3920669abb96b3213ab37..e5ae7478cf2d3ef9d484116db742dd8c this.profiler.push(() -> { String s = String.valueOf(worldserver); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 2766ec28f028c0bd672009928bf64c1a6e5d07d6..1d0f9fa24e8ead7710249575795951dad97ea51f 100644 +index 2fe9d9b38c01d04416843fdd48d3e33899b7de63..559bec25060eb8981bf80213ceedb79d6c99e411 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -229,6 +229,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -5117,10 +5117,10 @@ index cd789c235acf740ec29c30b180e7fbe1a140caa9..edaaaf0ecc412504b32fe7481f95e594 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 0ab53d46f0b8f3f3791dd01766738522c86932e8..ba749cf277aad319709e3da550155488bb33591b 100644 +index 157a0eb8194c8fb6da4d0322b40c805918867e7f..ab87de7af1a06a82a451c853bc2900933257129c 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -597,6 +597,15 @@ public class CraftEventFactory { +@@ -601,6 +601,15 @@ public class CraftEventFactory { // Paper end craftServer.getPluginManager().callEvent(event); @@ -5136,7 +5136,7 @@ index 0ab53d46f0b8f3f3791dd01766738522c86932e8..ba749cf277aad319709e3da550155488 return event; } -@@ -1187,6 +1196,7 @@ public class CraftEventFactory { +@@ -1191,6 +1200,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); diff --git a/patches/server/0016-Anvil-API.patch b/patches/server/0016-Anvil-API.patch index 0f77bfc16..9569656a3 100644 --- a/patches/server/0016-Anvil-API.patch +++ b/patches/server/0016-Anvil-API.patch @@ -17,11 +17,11 @@ index 32910f677b0522ac8ec513fa0d00b714b52cfae4..c491291b522aebf34c7d990d2b485d1a // CraftBukkit start public boolean checkReachable = true; diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 7198dc9ffc9a37dab3654e12aa497c442a9993c5..99bfa7cdc58c690d6f0c742dafedd40cace3223f 100644 +index d685511104ac552dfc9ae2111e1bfb60fa812102..b1810b5dfc89dd2921607b0040afd69b05d36b9e 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -25,6 +25,12 @@ import org.slf4j.Logger; - import org.bukkit.craftbukkit.inventory.CraftInventoryView; + import org.bukkit.craftbukkit.inventory.view.CraftAnvilView; // CraftBukkit end +// Purpur start - Anvil API @@ -35,7 +35,7 @@ index 7198dc9ffc9a37dab3654e12aa497c442a9993c5..99bfa7cdc58c690d6f0c742dafedd40c public static final int INPUT_SLOT = 0; @@ -53,6 +59,10 @@ public class AnvilMenu extends ItemCombinerMenu { public int maximumRepairCost = 40; - private CraftInventoryView bukkitEntity; + private CraftAnvilView bukkitEntity; // CraftBukkit end + // Purpur start - Anvil API + public boolean bypassCost = false; @@ -136,21 +136,73 @@ index 7de5e47f9a54263734eeef855a2dc07ef64d30ea..b3bd9bbd96efc4784b86c2be6bb857da return itemstack; diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java -index 9ee14589d63bbfc0880f2eee5e924fe946ee0035..062783f30f41761c34d7679844e443e9a55c6011 100644 +index 792cb6adf0c7a6335cc5985fce8bed2e0f1149af..aa59dcdea74434993dbb9d8a7b2fc3bfae9d0a77 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java -@@ -9,7 +9,7 @@ import org.bukkit.inventory.AnvilInventory; - public class CraftInventoryAnvil extends CraftResultInventory implements AnvilInventory { - - private final Location location; -- private final AnvilMenu container; -+ public final AnvilMenu container; // Purpur - private -> public - Anvil API - - public CraftInventoryAnvil(Location location, Container inventory, Container resultInventory, AnvilMenu container) { +@@ -3,6 +3,7 @@ package org.bukkit.craftbukkit.inventory; + import com.google.common.base.Preconditions; + import java.util.function.Consumer; + import net.minecraft.world.Container; ++import net.minecraft.world.inventory.AnvilMenu; + import org.bukkit.Location; + import org.bukkit.craftbukkit.inventory.view.CraftAnvilView; + import org.bukkit.entity.HumanEntity; +@@ -19,6 +20,8 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn + private int repairCost; + private int repairCostAmount; + private int maximumRepairCost; ++ private boolean bypassCost; ++ private boolean canDoUnsafeEnchants; + + public CraftInventoryAnvil(Location location, Container inventory, Container resultInventory) { super(inventory, resultInventory); -@@ -57,4 +57,26 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn - Preconditions.checkArgument(levels >= 0, "Maximum repair cost must be positive (or 0)"); - this.container.maximumRepairCost = levels; +@@ -27,6 +30,8 @@ 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; ++ this.bypassCost = false; ++ this.canDoUnsafeEnchants = false; + } + + @Override +@@ -113,4 +118,30 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn + consumer.accept(cav); + } + } ++ ++ // Purpur start - Anvil API ++ @Override ++ public boolean canBypassCost() { ++ this.syncWithArbitraryViewValue((cav) -> this.bypassCost = cav.canBypassCost()); ++ return this.bypassCost; ++ } ++ ++ @Override ++ public void setBypassCost(boolean bypassCost) { ++ this.bypassCost = bypassCost; ++ this.syncViews((cav) -> cav.setBypassCost(bypassCost)); ++ } ++ ++ @Override ++ public boolean canDoUnsafeEnchants() { ++ this.syncWithArbitraryViewValue((cav) -> this.canDoUnsafeEnchants = cav.canDoUnsafeEnchants()); ++ return this.canDoUnsafeEnchants; ++ } ++ ++ @Override ++ public void setDoUnsafeEnchants(boolean canDoUnsafeEnchants) { ++ this.canDoUnsafeEnchants = canDoUnsafeEnchants; ++ this.syncViews((cav) -> cav.setDoUnsafeEnchants(canDoUnsafeEnchants)); ++ } ++ // Purpur end - Anvil API + } +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 e2d8d69c5ae8feb6840462ba8332344972658d83..d1505efcf861224f0b3c9837072690155b36ae32 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java +@@ -63,4 +63,26 @@ public class CraftAnvilView extends CraftInventoryView implements Anv + this.setMaximumRepairCost(legacy.getMaximumRepairCost()); + } } + + // Purpur start - Anvil API diff --git a/patches/server/0022-Disable-outdated-build-check.patch b/patches/server/0022-Disable-outdated-build-check.patch index 80a4322d9..9d555ab01 100644 --- a/patches/server/0022-Disable-outdated-build-check.patch +++ b/patches/server/0022-Disable-outdated-build-check.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable outdated build check diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 98dd06878b76b0c1d70242afd49738b253cd0e80..577b2f19e625ca71b13477eb96e42e04954fa449 100644 +index 1950f81bd8682757dd1dd6de0bc9664fcccd0ea3..8fe2e71f001b37a5e9a08d397cd32cf98eeae9ac 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -273,7 +273,7 @@ public class Main { +@@ -254,7 +254,7 @@ public class Main { System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper } diff --git a/patches/server/0039-Minecart-settings-and-WASD-controls.patch b/patches/server/0039-Minecart-settings-and-WASD-controls.patch index 0cb1939e8..ff069bc9d 100644 --- a/patches/server/0039-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0039-Minecart-settings-and-WASD-controls.patch @@ -136,10 +136,10 @@ index d524fcc191cb95d6ec7f12ae7fceeb8077bb08fc..4b8cebb321eddc852b4ec7def7f51d78 } } diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index ded6d148110fe3fbb6272ce44582a28472dd49a6..61918a4a1ea8e1a0f5965bbf2c9fdb2d7b7863e8 100644 +index d0109633e8bdf109cfc9178963d7b6cf92f8b189..dd607038f42a73f6311d7a6003a2cf57c1589c83 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -93,7 +93,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -94,7 +94,7 @@ public abstract class BlockBehaviour implements FeatureElement { protected final float jumpFactor; protected final boolean dynamicShape; protected final FeatureFlagSet requiredFeatures; diff --git a/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch index a4830134c..d98b67465 100644 --- a/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch +++ b/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Crying obsidian valid for portal frames diff --git a/src/main/java/net/minecraft/world/level/portal/PortalShape.java b/src/main/java/net/minecraft/world/level/portal/PortalShape.java -index 57139a0b8adcd1ea25cd100be78402681856ee75..e8793e11e94eea41ea9be615f0d46c7add836919 100644 +index b2561207336336de92bf2cc609e4f1b1106cc5d5..d2969aa7c14f6ec6bc29958140402e4d5d9485ef 100644 --- a/src/main/java/net/minecraft/world/level/portal/PortalShape.java +++ b/src/main/java/net/minecraft/world/level/portal/PortalShape.java -@@ -32,7 +32,7 @@ public class PortalShape { +@@ -31,7 +31,7 @@ public class PortalShape { private static final int MIN_HEIGHT = 3; public static final int MAX_HEIGHT = 21; private static final BlockBehaviour.StatePredicate FRAME = (iblockdata, iblockaccess, blockposition) -> { diff --git a/patches/server/0181-Store-placer-on-Block-when-placed.patch b/patches/server/0181-Store-placer-on-Block-when-placed.patch index 34f3b77c2..87d0adcd3 100644 --- a/patches/server/0181-Store-placer-on-Block-when-placed.patch +++ b/patches/server/0181-Store-placer-on-Block-when-placed.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Store placer on Block when placed diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index fab7bebb8c7fd21a3bcfbd2f04702eb56f9eb310..0527f7e6b7971c32d366107ff4e4c499fcd7b42c 100644 +index 4ca65631e19b1064c84551aea3b46702aafc7b98..f6e5f18e2d70261eb4e0bea9818ae59e953f455d 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -497,6 +497,7 @@ public final class ItemStack implements DataComponentHolder { @@ -18,7 +18,7 @@ index fab7bebb8c7fd21a3bcfbd2f04702eb56f9eb310..0527f7e6b7971c32d366107ff4e4c499 world.preventPoiUpdated = false; @@ -529,6 +530,7 @@ public final class ItemStack implements DataComponentHolder { if (!(block.getBlock() instanceof BaseEntityBlock)) { // Containers get placed automatically - block.onPlace(world, newblockposition, oldBlock, true, context); // Paper - pass context + block.onPlace(world, newblockposition, oldBlock, true, context); } + block.getBlock().forgetPlacer(); // Purpur diff --git a/patches/server/0182-Summoner-API.patch b/patches/server/0182-Summoner-API.patch index 8b1bab34b..1a2b99ee2 100644 --- a/patches/server/0182-Summoner-API.patch +++ b/patches/server/0182-Summoner-API.patch @@ -210,13 +210,13 @@ index 63cae1a2e95d8da17c45c4404a8dd0ca6a413c39..966587c2788b5c93be83259ddc962a89 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java -index 4ce2373ff71c3c1b8951646e057587a3ab09e145..4f7f6cf6ca24406570d2d29dc63dc89401119961 100644 +index 05cee4906169425ee6e80cf1302f2fa01f09d58f..a21690ef9dc8b64249ce75a47bd3ce0c7aa0913f 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 - public String toString() { - return "CraftSnowman"; +@@ -40,4 +40,17 @@ public class CraftSnowman extends CraftGolem implements Snowman, com.destroystok + return this.isDerp(); } + // Paper end + + // Purpur start + @Override diff --git a/patches/server/0214-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0214-Persistent-BlockEntity-Lore-and-DisplayName.patch index dd384bace..14ae9c745 100644 --- a/patches/server/0214-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0214-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -85,10 +85,10 @@ index 57595a781a3cbdd8575c4af36328684ce7fc28d9..0f677573083ac806cfc105321b39edab double d0 = (double) EntityType.ITEM.getHeight() / 2.0D; double d1 = (double) pos.getX() + 0.5D + Mth.nextDouble(world.random, -0.25D, 0.25D); diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index c0563260277f9f4bd9ff08993b2efb4bca9a0c60..cd0e43f4c53a746dd6183a8406269f9b11ad3571 100644 +index 9a5f68ef8609843bd70545294a9a634e7eb8d99f..493e008a752a7dfbbbff2c0145ea1ce2bc588617 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -87,6 +87,12 @@ public abstract class BlockEntity { +@@ -100,6 +100,12 @@ public abstract class BlockEntity { if (persistentDataTag instanceof CompoundTag) { this.persistentDataContainer.putAll((CompoundTag) persistentDataTag); } @@ -101,7 +101,7 @@ index c0563260277f9f4bd9ff08993b2efb4bca9a0c60..cd0e43f4c53a746dd6183a8406269f9b } // CraftBukkit end -@@ -103,6 +109,15 @@ public abstract class BlockEntity { +@@ -116,6 +122,15 @@ public abstract class BlockEntity { this.loadAdditional(nbt, registryLookup); } @@ -117,7 +117,7 @@ index c0563260277f9f4bd9ff08993b2efb4bca9a0c60..cd0e43f4c53a746dd6183a8406269f9b protected void saveAdditional(CompoundTag nbt, HolderLookup.Provider registryLookup) {} public final CompoundTag saveWithFullMetadata(HolderLookup.Provider registryLookup) { -@@ -407,4 +422,16 @@ public abstract class BlockEntity { +@@ -423,4 +438,16 @@ public abstract class BlockEntity { T getOrDefault(DataComponentType type, T fallback); } diff --git a/patches/server/0241-Stonecutter-damage.patch b/patches/server/0241-Stonecutter-damage.patch index 47d12f216..bb2d0be87 100644 --- a/patches/server/0241-Stonecutter-damage.patch +++ b/patches/server/0241-Stonecutter-damage.patch @@ -115,10 +115,10 @@ index 31ae0f466ae522d767907ec5066b26695f327b96..f26383cf896785333dbd6f86348d5a5f } else if (blockState.is(Blocks.HONEY_BLOCK)) { return PathType.STICKY_HONEY; diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index ba749cf277aad319709e3da550155488bb33591b..98891112f992978c97b21ab0d7d54228819b7536 100644 +index ab87de7af1a06a82a451c853bc2900933257129c..41214395c076338a4df9258fdc12b6de02bf71d9 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1136,7 +1136,7 @@ public class CraftEventFactory { +@@ -1140,7 +1140,7 @@ public class CraftEventFactory { return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), source.getDirectBlockState(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled); } else if (source.getDirectBlock() != null) { DamageCause cause; diff --git a/patches/server/0245-Enchantment-Table-Persists-Lapis.patch b/patches/server/0245-Enchantment-Table-Persists-Lapis.patch index 18d7d958d..2dff1c2ad 100644 --- a/patches/server/0245-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0245-Enchantment-Table-Persists-Lapis.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Enchantment Table Persists Lapis diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -index 07223046761cb2186d75de8edc03a91d2e8e8b2f..4e5d497b966a04d42b988d26039cbbcc3da7121c 100644 +index 1ef014b29645ed09ccffb898f1819428c3dc6259..859deb56915dba0e9189103708060cafd196c58e 100644 --- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -@@ -45,6 +45,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; +@@ -42,6 +42,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; import org.bukkit.entity.Player; // CraftBukkit end @@ -21,7 +21,7 @@ index 07223046761cb2186d75de8edc03a91d2e8e8b2f..4e5d497b966a04d42b988d26039cbbcc public class EnchantmentMenu extends AbstractContainerMenu { static final ResourceLocation EMPTY_SLOT_LAPIS_LAZULI = ResourceLocation.withDefaultNamespace("item/empty_slot_lapis_lazuli"); -@@ -79,6 +85,22 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -76,6 +82,22 @@ public class EnchantmentMenu extends AbstractContainerMenu { return context.getLocation(); } // CraftBukkit end @@ -44,7 +44,7 @@ index 07223046761cb2186d75de8edc03a91d2e8e8b2f..4e5d497b966a04d42b988d26039cbbcc }; this.random = RandomSource.create(); this.enchantmentSeed = DataSlot.standalone(); -@@ -104,6 +126,17 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -101,6 +123,17 @@ public class EnchantmentMenu extends AbstractContainerMenu { } }); @@ -62,7 +62,7 @@ index 07223046761cb2186d75de8edc03a91d2e8e8b2f..4e5d497b966a04d42b988d26039cbbcc int j; for (j = 0; j < 3; ++j) { -@@ -344,6 +377,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -341,6 +374,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { public void removed(net.minecraft.world.entity.player.Player player) { super.removed(player); this.access.execute((world, blockposition) -> { diff --git a/patches/server/0251-Remove-Timings.patch b/patches/server/0251-Remove-Timings.patch index 26dd42b8c..58a5e8bc3 100644 --- a/patches/server/0251-Remove-Timings.patch +++ b/patches/server/0251-Remove-Timings.patch @@ -635,10 +635,10 @@ index e524b27d185da3e88668f8ef107517272860bd66..735f39fed209e086a52185565f8bd687 } diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 5453b7051337908ac1c8201827c1b5eec9e1608b..c68a3ab2129d4eba7f7c08b811fe3461d86ebd97 100644 +index 7c11853c5090fbc4fa5b3e73a69acf166158fdec..1d2986780d75272422e678cf25c9a31666ba8866 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -661,7 +661,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -666,7 +666,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)this.level).moonrise$getChunkTaskScheduler().chunkHolderManager.getChunkHolder(this.locX, this.locZ).getEntityChunk().callEntitiesLoadEvent(); // Paper - rewrite chunk system if (this.needsDecoration) { @@ -647,7 +647,7 @@ index 5453b7051337908ac1c8201827c1b5eec9e1608b..c68a3ab2129d4eba7f7c08b811fe3461 this.needsDecoration = false; java.util.Random random = new java.util.Random(); random.setSeed(this.level.getSeed()); -@@ -681,7 +681,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -686,7 +686,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p } } server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk)); @@ -656,7 +656,7 @@ index 5453b7051337908ac1c8201827c1b5eec9e1608b..c68a3ab2129d4eba7f7c08b811fe3461 } } } -@@ -1021,7 +1021,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1026,7 +1026,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler(); gameprofilerfiller.push(this::getType); @@ -665,7 +665,7 @@ index 5453b7051337908ac1c8201827c1b5eec9e1608b..c68a3ab2129d4eba7f7c08b811fe3461 BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); if (this.blockEntity.getType().isValid(iblockdata)) { -@@ -1048,7 +1048,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1053,7 +1053,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p // Paper end - Prevent block entity and entity crashes // Spigot start } finally { diff --git a/patches/server/0252-Remove-Mojang-Profiler.patch b/patches/server/0252-Remove-Mojang-Profiler.patch index d1536c1d4..4b581206d 100644 --- a/patches/server/0252-Remove-Mojang-Profiler.patch +++ b/patches/server/0252-Remove-Mojang-Profiler.patch @@ -808,7 +808,7 @@ index dc7db7a2c8b42f7ed2b7b28fe2ed6224be8da2fe..2c15fc6e4f46c5873cc5ce67edf10b73 while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 9326e785c2e6524e172f6385c1310d44a40f0af8..a85068c94c0ebad462b983fda73c9ba63e022e25 100644 +index 3814486fe7cf7fb3c743345f6800e4b463aefe04..4c51f93c3d28ede9a8b811f88159cc19aaabc8b1 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1399,7 +1399,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -1067,7 +1067,7 @@ index a715ecf4a8ac91d3e5e5c6269d89e54b2c1cd279..223c3665126c576eddb1a8f7c9f5bc60 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8a7d0064356afed74850a679c5d6b513ce478c47..17b883484b83db75454e3b004da3a8adc0506c0e 100644 +index cf8e00378b0be5e78c6252e1850cb556424003b6..bc9a42b1dba6d089291e1b4d279933b0b47872b1 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -880,7 +880,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -1886,7 +1886,7 @@ index 735f39fed209e086a52185565f8bd6873c0b8d6e..4dc060bc677984d91a30a88155c576d5 // Paper start - Add mobcaps commands diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index c68a3ab2129d4eba7f7c08b811fe3461d86ebd97..3ec4ba40f6ff44365eaa4b33ac447c191670f259 100644 +index 1d2986780d75272422e678cf25c9a31666ba8866..4666b51278dbe65b8e4911bcf1dbb867110c146f 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -383,11 +383,11 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p @@ -1904,7 +1904,7 @@ index c68a3ab2129d4eba7f7c08b811fe3461d86ebd97..3ec4ba40f6ff44365eaa4b33ac447c19 } boolean flag3 = iblockdata1.hasBlockEntity(); -@@ -1018,9 +1018,9 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1023,9 +1023,9 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p if (LevelChunk.this.isTicking(blockposition)) { try { @@ -1916,7 +1916,7 @@ index c68a3ab2129d4eba7f7c08b811fe3461d86ebd97..3ec4ba40f6ff44365eaa4b33ac447c19 //this.blockEntity.tickTimer.startTiming(); // Spigot // Purpur BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); -@@ -1037,7 +1037,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -1042,7 +1042,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p // Paper end - Remove the Block Entity if it's invalid } diff --git a/patches/server/0260-Configurable-block-blast-resistance.patch b/patches/server/0260-Configurable-block-blast-resistance.patch index 5a6845a46..09b38658d 100644 --- a/patches/server/0260-Configurable-block-blast-resistance.patch +++ b/patches/server/0260-Configurable-block-blast-resistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable block blast resistance diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 61918a4a1ea8e1a0f5965bbf2c9fdb2d7b7863e8..80d68b91ea4e4eb97e31d1df0c430740fb56bd74 100644 +index dd607038f42a73f6311d7a6003a2cf57c1589c83..40f15a30b1a0dd2040e75045f32f33082e70aaeb 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -85,7 +85,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -86,7 +86,7 @@ public abstract class BlockBehaviour implements FeatureElement { protected static final Direction[] UPDATE_SHAPE_ORDER = new Direction[]{Direction.WEST, Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.DOWN, Direction.UP}; public final boolean hasCollision; From afabbc965298aaedd3e7917d499c5c98f18103c2 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 8 Aug 2024 21:36:33 -0700 Subject: [PATCH 03/10] missed these --- README.md | 4 ++-- patches/server/0016-Anvil-API.patch | 20 ++++++++------------ 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index ab83fa4b8..fcb63daad 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ Maven org.purpurmc.purpur purpur-api - 1.21-R0.1-SNAPSHOT + 1.21.1-R0.1-SNAPSHOT provided ``` @@ -80,7 +80,7 @@ repositories { ``` ```kotlin dependencies { - compileOnly("org.purpurmc.purpur:purpur-api:1.21-R0.1-SNAPSHOT") + compileOnly("org.purpurmc.purpur:purpur-api:1.21.1-R0.1-SNAPSHOT") } ``` diff --git a/patches/server/0016-Anvil-API.patch b/patches/server/0016-Anvil-API.patch index 9569656a3..ba90d7340 100644 --- a/patches/server/0016-Anvil-API.patch +++ b/patches/server/0016-Anvil-API.patch @@ -136,36 +136,32 @@ index 7de5e47f9a54263734eeef855a2dc07ef64d30ea..b3bd9bbd96efc4784b86c2be6bb857da return itemstack; diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java -index 792cb6adf0c7a6335cc5985fce8bed2e0f1149af..aa59dcdea74434993dbb9d8a7b2fc3bfae9d0a77 100644 +index 792cb6adf0c7a6335cc5985fce8bed2e0f1149af..5734c5caffda79383ae30df20c3defb51b87f39e 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java -@@ -3,6 +3,7 @@ package org.bukkit.craftbukkit.inventory; - import com.google.common.base.Preconditions; - import java.util.function.Consumer; - import net.minecraft.world.Container; -+import net.minecraft.world.inventory.AnvilMenu; - import org.bukkit.Location; - import org.bukkit.craftbukkit.inventory.view.CraftAnvilView; - import org.bukkit.entity.HumanEntity; -@@ -19,6 +20,8 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn +@@ -19,6 +19,10 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn private int repairCost; private int repairCostAmount; private int maximumRepairCost; ++ // Purpur start - Anvil API + private boolean bypassCost; + private boolean canDoUnsafeEnchants; ++ // Purpur end - Anvil API public CraftInventoryAnvil(Location location, Container inventory, Container resultInventory) { super(inventory, resultInventory); -@@ -27,6 +30,8 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn +@@ -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; ++ // Purpur start - Anvil API + this.bypassCost = false; + this.canDoUnsafeEnchants = false; ++ // Purpur end - Anvil API } @Override -@@ -113,4 +118,30 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn +@@ -113,4 +121,30 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn consumer.accept(cav); } } From 73a90e8a664ca7a228909cd7a80b4c8b76f8bbfe Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 9 Aug 2024 21:51:16 -0700 Subject: [PATCH 04/10] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@77a5779 Updated Upstream (Bukkit/CraftBukkit/Spigot) (#11197) PaperMC/Paper@4d7cef3 Fix source of knockback for spigot events (#11176) --- gradle.properties | 2 +- patches/api/0014-Anvil-API.patch | 23 +++++- patches/server/0007-Ridables.patch | 10 +-- patches/server/0016-Anvil-API.patch | 76 +++++++++++++++---- .../0022-Disable-outdated-build-check.patch | 4 +- ...-Minecart-settings-and-WASD-controls.patch | 4 +- ...ing-obsidian-valid-for-portal-frames.patch | 4 +- ...81-Store-placer-on-Block-when-placed.patch | 4 +- patches/server/0241-Stonecutter-damage.patch | 4 +- ...245-Enchantment-Table-Persists-Lapis.patch | 10 +-- ...-Configurable-block-blast-resistance.patch | 4 +- 11 files changed, 106 insertions(+), 39 deletions(-) diff --git a/gradle.properties b/gradle.properties index eb8faa204..32a2a8e43 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21-R0.1-SNAPSHOT mcVersion = 1.21 -paperCommit = 4e6a2a13a3e1f6fa1067a7821d2f018339395533 +paperCommit = 4d7cef34181162e301365ada2d0a3e98b4a7cc88 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0014-Anvil-API.patch b/patches/api/0014-Anvil-API.patch index 5ed2626ed..4a1bd52a7 100644 --- a/patches/api/0014-Anvil-API.patch +++ b/patches/api/0014-Anvil-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Anvil API diff --git a/src/main/java/org/bukkit/inventory/AnvilInventory.java b/src/main/java/org/bukkit/inventory/AnvilInventory.java -index c60be4fd24c7fdf65251dd6169e5e1ac3b588d95..569deccd2f1cf21da9b5906433ac493c1f2081be 100644 +index f1f97a85ec713c05c882d7588f4a3e4a017f4795..468d8b336c8060da346e2dfe60900868148376f6 100644 --- a/src/main/java/org/bukkit/inventory/AnvilInventory.java +++ b/src/main/java/org/bukkit/inventory/AnvilInventory.java -@@ -123,4 +123,14 @@ public interface AnvilInventory extends Inventory { +@@ -138,4 +138,14 @@ public interface AnvilInventory extends Inventory { setItem(2, result); } // Paper end @@ -21,6 +21,25 @@ index c60be4fd24c7fdf65251dd6169e5e1ac3b588d95..569deccd2f1cf21da9b5906433ac493c + boolean canDoUnsafeEnchants(); + + void setDoUnsafeEnchants(boolean canDoUnsafeEnchants); ++ // Purpur end + } +diff --git a/src/main/java/org/bukkit/inventory/view/AnvilView.java b/src/main/java/org/bukkit/inventory/view/AnvilView.java +index 0344b3db789baf1da0b59f2d2cd66154b69b38a9..c824a94f81925abc91eff7424c8021da10980bad 100644 +--- a/src/main/java/org/bukkit/inventory/view/AnvilView.java ++++ b/src/main/java/org/bukkit/inventory/view/AnvilView.java +@@ -59,4 +59,14 @@ public interface AnvilView extends InventoryView { + * @param levels the levels to set + */ + void setMaximumRepairCost(int levels); ++ ++ // Purpur start ++ boolean canBypassCost(); ++ ++ void setBypassCost(boolean bypassCost); ++ ++ boolean canDoUnsafeEnchants(); ++ ++ void setDoUnsafeEnchants(boolean canDoUnsafeEnchants); + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/event/inventory/AnvilTakeResultEvent.java b/src/main/java/org/purpurmc/purpur/event/inventory/AnvilTakeResultEvent.java diff --git a/patches/server/0007-Ridables.patch b/patches/server/0007-Ridables.patch index 8063d58d0..1f76dabc8 100644 --- a/patches/server/0007-Ridables.patch +++ b/patches/server/0007-Ridables.patch @@ -34,7 +34,7 @@ index 23ddd26af762c1cd7fb3920669abb96b3213ab37..e5ae7478cf2d3ef9d484116db742dd8c this.profiler.push(() -> { String s = String.valueOf(worldserver); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 2766ec28f028c0bd672009928bf64c1a6e5d07d6..1d0f9fa24e8ead7710249575795951dad97ea51f 100644 +index 2fe9d9b38c01d04416843fdd48d3e33899b7de63..559bec25060eb8981bf80213ceedb79d6c99e411 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -229,6 +229,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -190,7 +190,7 @@ index 09fdea983772612ef3fff6b2da3cf469a34e4ec0..aa76a24421cdb3908a3544d92eb3d1e3 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index fe435d4a387bb28be6831cec0c8bb0a7c8b603a4..a387268659a17a4508359f2a69d50593cefd4629 100644 +index ccd9dff20a60f019e0c320acfb526b8bf3e5f806..b32460d324d93fed734be5d92baf0359ad5b0a80 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -237,9 +237,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -5117,10 +5117,10 @@ index cd789c235acf740ec29c30b180e7fbe1a140caa9..edaaaf0ecc412504b32fe7481f95e594 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 0ab53d46f0b8f3f3791dd01766738522c86932e8..ba749cf277aad319709e3da550155488bb33591b 100644 +index 8dd85b9ca3b3e3429de4d0ec0654982589c6e93e..8c1fdda7c30c12bc5262d373474deb6930e811e8 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -597,6 +597,15 @@ public class CraftEventFactory { +@@ -601,6 +601,15 @@ public class CraftEventFactory { // Paper end craftServer.getPluginManager().callEvent(event); @@ -5136,7 +5136,7 @@ index 0ab53d46f0b8f3f3791dd01766738522c86932e8..ba749cf277aad319709e3da550155488 return event; } -@@ -1187,6 +1196,7 @@ public class CraftEventFactory { +@@ -1191,6 +1200,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); diff --git a/patches/server/0016-Anvil-API.patch b/patches/server/0016-Anvil-API.patch index 0f77bfc16..ba90d7340 100644 --- a/patches/server/0016-Anvil-API.patch +++ b/patches/server/0016-Anvil-API.patch @@ -17,11 +17,11 @@ index 32910f677b0522ac8ec513fa0d00b714b52cfae4..c491291b522aebf34c7d990d2b485d1a // CraftBukkit start public boolean checkReachable = true; diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 7198dc9ffc9a37dab3654e12aa497c442a9993c5..99bfa7cdc58c690d6f0c742dafedd40cace3223f 100644 +index d685511104ac552dfc9ae2111e1bfb60fa812102..b1810b5dfc89dd2921607b0040afd69b05d36b9e 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -25,6 +25,12 @@ import org.slf4j.Logger; - import org.bukkit.craftbukkit.inventory.CraftInventoryView; + import org.bukkit.craftbukkit.inventory.view.CraftAnvilView; // CraftBukkit end +// Purpur start - Anvil API @@ -35,7 +35,7 @@ index 7198dc9ffc9a37dab3654e12aa497c442a9993c5..99bfa7cdc58c690d6f0c742dafedd40c public static final int INPUT_SLOT = 0; @@ -53,6 +59,10 @@ public class AnvilMenu extends ItemCombinerMenu { public int maximumRepairCost = 40; - private CraftInventoryView bukkitEntity; + private CraftAnvilView bukkitEntity; // CraftBukkit end + // Purpur start - Anvil API + public boolean bypassCost = false; @@ -136,21 +136,69 @@ index 7de5e47f9a54263734eeef855a2dc07ef64d30ea..b3bd9bbd96efc4784b86c2be6bb857da return itemstack; diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java -index 9ee14589d63bbfc0880f2eee5e924fe946ee0035..062783f30f41761c34d7679844e443e9a55c6011 100644 +index 792cb6adf0c7a6335cc5985fce8bed2e0f1149af..5734c5caffda79383ae30df20c3defb51b87f39e 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java -@@ -9,7 +9,7 @@ import org.bukkit.inventory.AnvilInventory; - public class CraftInventoryAnvil extends CraftResultInventory implements AnvilInventory { - - private final Location location; -- private final AnvilMenu container; -+ public final AnvilMenu container; // Purpur - private -> public - Anvil API +@@ -19,6 +19,10 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn + private int repairCost; + private int repairCostAmount; + private int maximumRepairCost; ++ // Purpur start - Anvil API ++ private boolean bypassCost; ++ private boolean canDoUnsafeEnchants; ++ // Purpur end - Anvil API - public CraftInventoryAnvil(Location location, Container inventory, Container resultInventory, AnvilMenu container) { + public CraftInventoryAnvil(Location location, Container inventory, Container resultInventory) { super(inventory, resultInventory); -@@ -57,4 +57,26 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn - Preconditions.checkArgument(levels >= 0, "Maximum repair cost must be positive (or 0)"); - this.container.maximumRepairCost = levels; +@@ -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; ++ // Purpur start - Anvil API ++ this.bypassCost = false; ++ this.canDoUnsafeEnchants = false; ++ // Purpur end - Anvil API + } + + @Override +@@ -113,4 +121,30 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn + consumer.accept(cav); + } + } ++ ++ // Purpur start - Anvil API ++ @Override ++ public boolean canBypassCost() { ++ this.syncWithArbitraryViewValue((cav) -> this.bypassCost = cav.canBypassCost()); ++ return this.bypassCost; ++ } ++ ++ @Override ++ public void setBypassCost(boolean bypassCost) { ++ this.bypassCost = bypassCost; ++ this.syncViews((cav) -> cav.setBypassCost(bypassCost)); ++ } ++ ++ @Override ++ public boolean canDoUnsafeEnchants() { ++ this.syncWithArbitraryViewValue((cav) -> this.canDoUnsafeEnchants = cav.canDoUnsafeEnchants()); ++ return this.canDoUnsafeEnchants; ++ } ++ ++ @Override ++ public void setDoUnsafeEnchants(boolean canDoUnsafeEnchants) { ++ this.canDoUnsafeEnchants = canDoUnsafeEnchants; ++ this.syncViews((cav) -> cav.setDoUnsafeEnchants(canDoUnsafeEnchants)); ++ } ++ // Purpur end - Anvil API + } +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 e2d8d69c5ae8feb6840462ba8332344972658d83..d1505efcf861224f0b3c9837072690155b36ae32 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java +@@ -63,4 +63,26 @@ public class CraftAnvilView extends CraftInventoryView implements Anv + this.setMaximumRepairCost(legacy.getMaximumRepairCost()); + } } + + // Purpur start - Anvil API diff --git a/patches/server/0022-Disable-outdated-build-check.patch b/patches/server/0022-Disable-outdated-build-check.patch index 80a4322d9..575b111ce 100644 --- a/patches/server/0022-Disable-outdated-build-check.patch +++ b/patches/server/0022-Disable-outdated-build-check.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable outdated build check diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 98dd06878b76b0c1d70242afd49738b253cd0e80..577b2f19e625ca71b13477eb96e42e04954fa449 100644 +index 22bdc8fe2796940eb971437e1c97d638bfbc42bb..316c5e1460ccf3386c4c8623eabb7f087df8c4b9 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -273,7 +273,7 @@ public class Main { +@@ -267,7 +267,7 @@ public class Main { System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper } diff --git a/patches/server/0039-Minecart-settings-and-WASD-controls.patch b/patches/server/0039-Minecart-settings-and-WASD-controls.patch index 0cb1939e8..ff069bc9d 100644 --- a/patches/server/0039-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0039-Minecart-settings-and-WASD-controls.patch @@ -136,10 +136,10 @@ index d524fcc191cb95d6ec7f12ae7fceeb8077bb08fc..4b8cebb321eddc852b4ec7def7f51d78 } } diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index ded6d148110fe3fbb6272ce44582a28472dd49a6..61918a4a1ea8e1a0f5965bbf2c9fdb2d7b7863e8 100644 +index d0109633e8bdf109cfc9178963d7b6cf92f8b189..dd607038f42a73f6311d7a6003a2cf57c1589c83 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -93,7 +93,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -94,7 +94,7 @@ public abstract class BlockBehaviour implements FeatureElement { protected final float jumpFactor; protected final boolean dynamicShape; protected final FeatureFlagSet requiredFeatures; diff --git a/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch index a4830134c..8f704e93f 100644 --- a/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch +++ b/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Crying obsidian valid for portal frames diff --git a/src/main/java/net/minecraft/world/level/portal/PortalShape.java b/src/main/java/net/minecraft/world/level/portal/PortalShape.java -index 57139a0b8adcd1ea25cd100be78402681856ee75..e8793e11e94eea41ea9be615f0d46c7add836919 100644 +index 86d95edc7dd1e42b4b38eba1177cd508e72e4fc4..6c07fc507df6070854f5950a8616d2949c040656 100644 --- a/src/main/java/net/minecraft/world/level/portal/PortalShape.java +++ b/src/main/java/net/minecraft/world/level/portal/PortalShape.java -@@ -32,7 +32,7 @@ public class PortalShape { +@@ -31,7 +31,7 @@ public class PortalShape { private static final int MIN_HEIGHT = 3; public static final int MAX_HEIGHT = 21; private static final BlockBehaviour.StatePredicate FRAME = (iblockdata, iblockaccess, blockposition) -> { diff --git a/patches/server/0181-Store-placer-on-Block-when-placed.patch b/patches/server/0181-Store-placer-on-Block-when-placed.patch index 34f3b77c2..87d0adcd3 100644 --- a/patches/server/0181-Store-placer-on-Block-when-placed.patch +++ b/patches/server/0181-Store-placer-on-Block-when-placed.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Store placer on Block when placed diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index fab7bebb8c7fd21a3bcfbd2f04702eb56f9eb310..0527f7e6b7971c32d366107ff4e4c499fcd7b42c 100644 +index 4ca65631e19b1064c84551aea3b46702aafc7b98..f6e5f18e2d70261eb4e0bea9818ae59e953f455d 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -497,6 +497,7 @@ public final class ItemStack implements DataComponentHolder { @@ -18,7 +18,7 @@ index fab7bebb8c7fd21a3bcfbd2f04702eb56f9eb310..0527f7e6b7971c32d366107ff4e4c499 world.preventPoiUpdated = false; @@ -529,6 +530,7 @@ public final class ItemStack implements DataComponentHolder { if (!(block.getBlock() instanceof BaseEntityBlock)) { // Containers get placed automatically - block.onPlace(world, newblockposition, oldBlock, true, context); // Paper - pass context + block.onPlace(world, newblockposition, oldBlock, true, context); } + block.getBlock().forgetPlacer(); // Purpur diff --git a/patches/server/0241-Stonecutter-damage.patch b/patches/server/0241-Stonecutter-damage.patch index 47d12f216..663a54930 100644 --- a/patches/server/0241-Stonecutter-damage.patch +++ b/patches/server/0241-Stonecutter-damage.patch @@ -115,10 +115,10 @@ index 31ae0f466ae522d767907ec5066b26695f327b96..f26383cf896785333dbd6f86348d5a5f } else if (blockState.is(Blocks.HONEY_BLOCK)) { return PathType.STICKY_HONEY; diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index ba749cf277aad319709e3da550155488bb33591b..98891112f992978c97b21ab0d7d54228819b7536 100644 +index 8c1fdda7c30c12bc5262d373474deb6930e811e8..198a86fc9b8c4dba8c8de27bccc4de65690b84de 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1136,7 +1136,7 @@ public class CraftEventFactory { +@@ -1140,7 +1140,7 @@ public class CraftEventFactory { return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), source.getDirectBlockState(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled); } else if (source.getDirectBlock() != null) { DamageCause cause; diff --git a/patches/server/0245-Enchantment-Table-Persists-Lapis.patch b/patches/server/0245-Enchantment-Table-Persists-Lapis.patch index 18d7d958d..2dff1c2ad 100644 --- a/patches/server/0245-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0245-Enchantment-Table-Persists-Lapis.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Enchantment Table Persists Lapis diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -index 07223046761cb2186d75de8edc03a91d2e8e8b2f..4e5d497b966a04d42b988d26039cbbcc3da7121c 100644 +index 1ef014b29645ed09ccffb898f1819428c3dc6259..859deb56915dba0e9189103708060cafd196c58e 100644 --- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java -@@ -45,6 +45,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; +@@ -42,6 +42,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; import org.bukkit.entity.Player; // CraftBukkit end @@ -21,7 +21,7 @@ index 07223046761cb2186d75de8edc03a91d2e8e8b2f..4e5d497b966a04d42b988d26039cbbcc public class EnchantmentMenu extends AbstractContainerMenu { static final ResourceLocation EMPTY_SLOT_LAPIS_LAZULI = ResourceLocation.withDefaultNamespace("item/empty_slot_lapis_lazuli"); -@@ -79,6 +85,22 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -76,6 +82,22 @@ public class EnchantmentMenu extends AbstractContainerMenu { return context.getLocation(); } // CraftBukkit end @@ -44,7 +44,7 @@ index 07223046761cb2186d75de8edc03a91d2e8e8b2f..4e5d497b966a04d42b988d26039cbbcc }; this.random = RandomSource.create(); this.enchantmentSeed = DataSlot.standalone(); -@@ -104,6 +126,17 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -101,6 +123,17 @@ public class EnchantmentMenu extends AbstractContainerMenu { } }); @@ -62,7 +62,7 @@ index 07223046761cb2186d75de8edc03a91d2e8e8b2f..4e5d497b966a04d42b988d26039cbbcc int j; for (j = 0; j < 3; ++j) { -@@ -344,6 +377,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { +@@ -341,6 +374,7 @@ public class EnchantmentMenu extends AbstractContainerMenu { public void removed(net.minecraft.world.entity.player.Player player) { super.removed(player); this.access.execute((world, blockposition) -> { diff --git a/patches/server/0260-Configurable-block-blast-resistance.patch b/patches/server/0260-Configurable-block-blast-resistance.patch index 5a6845a46..09b38658d 100644 --- a/patches/server/0260-Configurable-block-blast-resistance.patch +++ b/patches/server/0260-Configurable-block-blast-resistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable block blast resistance diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 61918a4a1ea8e1a0f5965bbf2c9fdb2d7b7863e8..80d68b91ea4e4eb97e31d1df0c430740fb56bd74 100644 +index dd607038f42a73f6311d7a6003a2cf57c1589c83..40f15a30b1a0dd2040e75045f32f33082e70aaeb 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -85,7 +85,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -86,7 +86,7 @@ public abstract class BlockBehaviour implements FeatureElement { protected static final Direction[] UPDATE_SHAPE_ORDER = new Direction[]{Direction.WEST, Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.DOWN, Direction.UP}; public final boolean hasCollision; From 75e81d8faa9e5185c888784f6b6cc6eeea2776a0 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 9 Aug 2024 22:16:33 -0700 Subject: [PATCH 05/10] deprecate old anvil api methods --- patches/api/0014-Anvil-API.patch | 56 +++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/patches/api/0014-Anvil-API.patch b/patches/api/0014-Anvil-API.patch index 4a1bd52a7..2c7a4aa67 100644 --- a/patches/api/0014-Anvil-API.patch +++ b/patches/api/0014-Anvil-API.patch @@ -5,40 +5,88 @@ Subject: [PATCH] Anvil API diff --git a/src/main/java/org/bukkit/inventory/AnvilInventory.java b/src/main/java/org/bukkit/inventory/AnvilInventory.java -index f1f97a85ec713c05c882d7588f4a3e4a017f4795..468d8b336c8060da346e2dfe60900868148376f6 100644 +index f1f97a85ec713c05c882d7588f4a3e4a017f4795..813f6cd253322538bdf96eb323dd23a7809a1c1e 100644 --- a/src/main/java/org/bukkit/inventory/AnvilInventory.java +++ b/src/main/java/org/bukkit/inventory/AnvilInventory.java -@@ -138,4 +138,14 @@ public interface AnvilInventory extends Inventory { +@@ -138,4 +138,42 @@ public interface AnvilInventory extends Inventory { setItem(2, result); } // Paper end + + // Purpur start ++ /** ++ * Gets if the player viewing the anvil inventory can bypass experience cost ++ * ++ * @return whether the player viewing the anvil inventory can bypass the experience cost ++ * @deprecated use {@link AnvilView#canBypassCost()}. ++ */ ++ @Deprecated(forRemoval = true, since = "1.21") + boolean canBypassCost(); + ++ /** ++ * Set if the player viewing the anvil inventory can bypass the experience cost ++ * ++ * @param bypassCost whether the player viewing the anvil inventory can bypass the experience cost ++ * @deprecated use {@link AnvilView#setBypassCost(boolean)}. ++ */ ++ @Deprecated(forRemoval = true, since = "1.21") + void setBypassCost(boolean bypassCost); + ++ /** ++ * Gets if the player viewing the anvil inventory can do unsafe enchants ++ * ++ * @return whether the player viewing the anvil inventory can do unsafe enchants ++ * @deprecated use {@link AnvilView#canDoUnsafeEnchants()}. ++ */ ++ @Deprecated(forRemoval = true, since = "1.21") + boolean canDoUnsafeEnchants(); + ++ /** ++ * Set if the player viewing the anvil inventory can do unsafe enchants ++ * ++ * @param canDoUnsafeEnchants whether the player viewing the anvil inventory can do unsafe enchants ++ * @deprecated use {@link AnvilView#setDoUnsafeEnchants(boolean)}. ++ */ ++ @Deprecated(forRemoval = true, since = "1.21") + void setDoUnsafeEnchants(boolean canDoUnsafeEnchants); + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/view/AnvilView.java b/src/main/java/org/bukkit/inventory/view/AnvilView.java -index 0344b3db789baf1da0b59f2d2cd66154b69b38a9..c824a94f81925abc91eff7424c8021da10980bad 100644 +index 0344b3db789baf1da0b59f2d2cd66154b69b38a9..4b130327c84b05938d21d563f78361f9483a6a4e 100644 --- a/src/main/java/org/bukkit/inventory/view/AnvilView.java +++ b/src/main/java/org/bukkit/inventory/view/AnvilView.java -@@ -59,4 +59,14 @@ public interface AnvilView extends InventoryView { +@@ -59,4 +59,34 @@ public interface AnvilView extends InventoryView { * @param levels the levels to set */ void setMaximumRepairCost(int levels); + + // Purpur start ++ /** ++ * Gets if the player viewing the anvil inventory can bypass experience cost ++ * ++ * @return whether the player viewing the anvil inventory can bypass the experience cost ++ */ + boolean canBypassCost(); + ++ /** ++ * Set if the player viewing the anvil inventory can bypass the experience cost ++ * ++ * @param bypassCost whether the player viewing the anvil inventory can bypass the experience cost ++ */ + void setBypassCost(boolean bypassCost); + ++ /** ++ * Gets if the player viewing the anvil inventory can do unsafe enchants ++ * ++ * @return whether the player viewing the anvil inventory can do unsafe enchants ++ */ + boolean canDoUnsafeEnchants(); + ++ /** ++ * Set if the player viewing the anvil inventory can do unsafe enchants ++ * ++ * @param canDoUnsafeEnchants whether the player viewing the anvil inventory can do unsafe enchants ++ */ + void setDoUnsafeEnchants(boolean canDoUnsafeEnchants); + // Purpur end } From 4e55e26f4dcd046f68c977b6348ad3ae265aa896 Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 10 Aug 2024 10:31:59 -0700 Subject: [PATCH 06/10] final 1.21 Paper upstream Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@b1b5d4c Check shooter in configurable projectile relative velocity patch --- gradle.properties | 2 +- ...0117-Add-mobGriefing-bypass-to-everything-affected.patch | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index 32a2a8e43..0523c3e69 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21-R0.1-SNAPSHOT mcVersion = 1.21 -paperCommit = 4d7cef34181162e301365ada2d0a3e98b4a7cc88 +paperCommit = b1b5d4c1e4b7c95afd5c932ca392bee66533a60c org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0117-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0117-Add-mobGriefing-bypass-to-everything-affected.patch index 689018f47..dfe0dad47 100644 --- a/patches/server/0117-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0117-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 609260d43c42d9978f5e849b4dd7191fd21a6c32..b07d0fc6cbcf209f5c69f4b43011d3f7182aa16c 100644 +index ffe1e4fdd908c8825e78c6e1c9aac6683c10a13a..2c47a6189030a06483db45e47d38a860472da6cc 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1845,7 +1845,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -284,10 +284,10 @@ index 28a65f2a9ef441ae96a7a635e0695b14ce2ee367..7b6c58a31d37896daccb5f570d3cb924 // CraftBukkit start - fire ExplosionPrimeEvent ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index a01c0d9ae53d1b748c5da914069bd672cb1215c7..dcdca2374b4844d5ba06a01bd34b537c7d2a3339 100644 +index de64de5d1328d3e0826c9990eb7c7eca5088cb9c..e8e1fe11d6c9042979345941833fa2895000c39a 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -361,7 +361,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -367,7 +367,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { public boolean mayInteract(Level world, BlockPos pos) { Entity entity = this.getOwner(); From abf2f2109bd550623a8b3e9d398995aa0185e70c Mon Sep 17 00:00:00 2001 From: granny Date: Sat, 10 Aug 2024 10:49:42 -0700 Subject: [PATCH 07/10] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@b1b5d4c Check shooter in configurable projectile relative velocity patch PaperMC/Paper@83b6b26 Update to 1.21.1 PaperMC/Paper@306d0df Update generated code PaperMC/Paper@70dfa46 Fix CraftMetaShield equality (#11232) --- gradle.properties | 2 +- patches/server/0022-Disable-outdated-build-check.patch | 4 ++-- patches/server/0182-Summoner-API.patch | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gradle.properties b/gradle.properties index 13180a64b..560ecf900 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.1-R0.1-SNAPSHOT mcVersion = 1.21.1 -paperCommit = 958666a8f6ab8b45652d1a682b25e42100bcb0da +paperCommit = 70dfa467e796a0dfaf74147fe3560e07a5816054 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0022-Disable-outdated-build-check.patch b/patches/server/0022-Disable-outdated-build-check.patch index 9d555ab01..575b111ce 100644 --- a/patches/server/0022-Disable-outdated-build-check.patch +++ b/patches/server/0022-Disable-outdated-build-check.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable outdated build check diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 1950f81bd8682757dd1dd6de0bc9664fcccd0ea3..8fe2e71f001b37a5e9a08d397cd32cf98eeae9ac 100644 +index 22bdc8fe2796940eb971437e1c97d638bfbc42bb..316c5e1460ccf3386c4c8623eabb7f087df8c4b9 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -254,7 +254,7 @@ public class Main { +@@ -267,7 +267,7 @@ public class Main { System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper } diff --git a/patches/server/0182-Summoner-API.patch b/patches/server/0182-Summoner-API.patch index 1a2b99ee2..8b1bab34b 100644 --- a/patches/server/0182-Summoner-API.patch +++ b/patches/server/0182-Summoner-API.patch @@ -210,13 +210,13 @@ index 63cae1a2e95d8da17c45c4404a8dd0ca6a413c39..966587c2788b5c93be83259ddc962a89 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java -index 05cee4906169425ee6e80cf1302f2fa01f09d58f..a21690ef9dc8b64249ce75a47bd3ce0c7aa0913f 100644 +index 4ce2373ff71c3c1b8951646e057587a3ab09e145..4f7f6cf6ca24406570d2d29dc63dc89401119961 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java -@@ -40,4 +40,17 @@ public class CraftSnowman extends CraftGolem implements Snowman, com.destroystok - return this.isDerp(); +@@ -28,4 +28,17 @@ public class CraftSnowman extends CraftGolem implements Snowman, com.destroystok + public String toString() { + return "CraftSnowman"; } - // Paper end + + // Purpur start + @Override From 366af801553647682121f30ccabb9bfe74e9b11f Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 11 Aug 2024 21:51:59 +0000 Subject: [PATCH 08/10] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@1cecc24 Fix tag key generator output inconsistencies (#11218) PaperMC/Paper@7d7f123 Fix wrong spawn reason for trial spawners (#11229) PaperMC/Paper@1c3c47a Correctly check enchants for ItemStack#damage (#11240) PaperMC/Paper@1187544 Fix teleport event getTo returning null (#11239) PaperMC/Paper@dd941cc Re-add patches for can-place/can-destroy API (#11238) --- gradle.properties | 2 +- patches/generated-api/0001-Ridables.patch | 6 +++--- ...antoms-attracted-to-crystals-and-crystals-shoot-ph.patch | 4 ++-- ...d-option-to-disable-zombie-aggressiveness-towards-.patch | 4 ++-- patches/generated-api/0004-Rabid-Wolf-API.patch | 4 ++-- .../generated-api/0005-Iron-golem-poppy-calms-anger.patch | 4 ++-- patches/server/0293-Adopt-MaterialRerouting.patch | 6 +++--- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/gradle.properties b/gradle.properties index 560ecf900..5e1611a49 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.1-R0.1-SNAPSHOT mcVersion = 1.21.1 -paperCommit = 70dfa467e796a0dfaf74147fe3560e07a5816054 +paperCommit = dd941cc40a25a4c6217f09c121b891962726f3ee org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/generated-api/0001-Ridables.patch b/patches/generated-api/0001-Ridables.patch index 30f2e6399..25297a8ec 100644 --- a/patches/generated-api/0001-Ridables.patch +++ b/patches/generated-api/0001-Ridables.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Ridables diff --git a/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/com/destroystokyo/paper/entity/ai/VanillaGoal.java -index 3add91218dd3f07052aa932f0503d1f10ac3799b..fa119ead66390aaed9436fbbaf2abdcef71c4c64 100644 +index 02411466bdcf4ff731f01ccebb2c99942e0db878..e81f3efa9986a3199ceb8e58c93dcf48d358fd35 100644 --- a/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/com/destroystokyo/paper/entity/ai/VanillaGoal.java @@ -436,6 +436,12 @@ public interface VanillaGoal extends Goal { @@ -18,6 +18,6 @@ index 3add91218dd3f07052aa932f0503d1f10ac3799b..fa119ead66390aaed9436fbbaf2abdce + GoalKey LLAMA_HAS_RIDER = GoalKey.of(Llama.class, NamespacedKey.minecraft("llama_has_rider")); + // Purpur end + - private static @NotNull GoalKey create(final @NotNull String key, - final @NotNull Class type) { + private static @NonNull GoalKey create(final @NonNull String key, + final @NonNull Class type) { return GoalKey.of(type, NamespacedKey.minecraft(key)); diff --git a/patches/generated-api/0002-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/generated-api/0002-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 66c56e9a2..35075e881 100644 --- a/patches/generated-api/0002-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/generated-api/0002-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms diff --git a/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/com/destroystokyo/paper/entity/ai/VanillaGoal.java -index fa119ead66390aaed9436fbbaf2abdcef71c4c64..596308b83ef30471d8ab60fdc6065480909d6271 100644 +index e81f3efa9986a3199ceb8e58c93dcf48d358fd35..7c814236923319f41de9abd5cbc12f95ce95b525 100644 --- a/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/com/destroystokyo/paper/entity/ai/VanillaGoal.java @@ -440,6 +440,8 @@ public interface VanillaGoal extends Goal { @@ -16,4 +16,4 @@ index fa119ead66390aaed9436fbbaf2abdcef71c4c64..596308b83ef30471d8ab60fdc6065480 + GoalKey ORBIT_CRYSTAL = GoalKey.of(Phantom.class, NamespacedKey.minecraft("orbit_crystal")); // Purpur end - private static @NotNull GoalKey create(final @NotNull String key, + private static @NonNull GoalKey create(final @NonNull String key, diff --git a/patches/generated-api/0003-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/generated-api/0003-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 7bc257362..eb99d75ae 100644 --- a/patches/generated-api/0003-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/generated-api/0003-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Add option to disable zombie aggressiveness towards villagers diff --git a/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/com/destroystokyo/paper/entity/ai/VanillaGoal.java -index 596308b83ef30471d8ab60fdc6065480909d6271..3672800b18e0b54b32c1b691c59dc4d127213e48 100644 +index 7c814236923319f41de9abd5cbc12f95ce95b525..3c5b1b91f066110b3535210e9bbb1b139c1783a0 100644 --- a/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/com/destroystokyo/paper/entity/ai/VanillaGoal.java @@ -442,6 +442,8 @@ public interface VanillaGoal extends Goal { @@ -17,4 +17,4 @@ index 596308b83ef30471d8ab60fdc6065480909d6271..3672800b18e0b54b32c1b691c59dc4d1 + GoalKey ZOMBIE_ATTACK_VILLAGER = GoalKey.of(Zombie.class, NamespacedKey.minecraft("zombie_attack_villager")); // Purpur end - private static @NotNull GoalKey create(final @NotNull String key, + private static @NonNull GoalKey create(final @NonNull String key, diff --git a/patches/generated-api/0004-Rabid-Wolf-API.patch b/patches/generated-api/0004-Rabid-Wolf-API.patch index 88541f216..0ea7c2f8e 100644 --- a/patches/generated-api/0004-Rabid-Wolf-API.patch +++ b/patches/generated-api/0004-Rabid-Wolf-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rabid Wolf API diff --git a/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/com/destroystokyo/paper/entity/ai/VanillaGoal.java -index 3672800b18e0b54b32c1b691c59dc4d127213e48..37da5e3ae1349c5406e7c700d9f6174657a807d5 100644 +index 3c5b1b91f066110b3535210e9bbb1b139c1783a0..3e5b701a6fb2b8a89a61221f3e68b65547a0717f 100644 --- a/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/com/destroystokyo/paper/entity/ai/VanillaGoal.java @@ -444,6 +444,7 @@ public interface VanillaGoal extends Goal { @@ -15,4 +15,4 @@ index 3672800b18e0b54b32c1b691c59dc4d127213e48..37da5e3ae1349c5406e7c700d9f61746 + GoalKey AVOID_RABID_WOLF = GoalKey.of(Wolf.class, NamespacedKey.minecraft("avoid_rabid_wolf")); // Purpur end - private static @NotNull GoalKey create(final @NotNull String key, + private static @NonNull GoalKey create(final @NonNull String key, diff --git a/patches/generated-api/0005-Iron-golem-poppy-calms-anger.patch b/patches/generated-api/0005-Iron-golem-poppy-calms-anger.patch index 4e024b250..e6f72f11c 100644 --- a/patches/generated-api/0005-Iron-golem-poppy-calms-anger.patch +++ b/patches/generated-api/0005-Iron-golem-poppy-calms-anger.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Iron golem poppy calms anger diff --git a/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/com/destroystokyo/paper/entity/ai/VanillaGoal.java -index 37da5e3ae1349c5406e7c700d9f6174657a807d5..3e41a4141095bce989c75e989293deb3f47e8e6d 100644 +index 3e5b701a6fb2b8a89a61221f3e68b65547a0717f..2718c0e5061838b01881bb231c53f4da348adce3 100644 --- a/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/com/destroystokyo/paper/entity/ai/VanillaGoal.java @@ -445,6 +445,7 @@ public interface VanillaGoal extends Goal { @@ -15,4 +15,4 @@ index 37da5e3ae1349c5406e7c700d9f6174657a807d5..3e41a4141095bce989c75e989293deb3 + GoalKey RECEIVE_FLOWER = GoalKey.of(IronGolem.class, NamespacedKey.minecraft("receive_flower")); // Purpur end - private static @NotNull GoalKey create(final @NotNull String key, + private static @NonNull GoalKey create(final @NonNull String key, diff --git a/patches/server/0293-Adopt-MaterialRerouting.patch b/patches/server/0293-Adopt-MaterialRerouting.patch index 7959836cb..49463aba8 100644 --- a/patches/server/0293-Adopt-MaterialRerouting.patch +++ b/patches/server/0293-Adopt-MaterialRerouting.patch @@ -7,11 +7,11 @@ Adopts the purpur-api to the material rerouting infrastructure introduced by upstream's upstream. diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java b/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java -index d7c8f26b21276d9ff1d5c7c9738cc1126ce7d4b9..f0471f92044612e3a2fd12a575b8b1f844790d3a 100644 +index db8d8e2a07296d62c3097f02b03319e2e1ba9394..e5c30847297e056782084d81fb9300f98d4a8f75 100644 --- a/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java +++ b/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java -@@ -690,4 +690,32 @@ public class MaterialRerouting { - return ItemStack.of(material, amount); +@@ -708,4 +708,32 @@ public class MaterialRerouting { + meta.setCanPlaceOn(materials); } // Paper end + // Purpur start From 07979c301479f990a6f4b36f4fb20dc6c1cea45e Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 14 Aug 2024 00:30:56 -0700 Subject: [PATCH 09/10] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@ab0d24a Configuration for horizontal-only item merging (#11219) PaperMC/Paper@098bd39 Remove arbitrary book page limit (#11228) PaperMC/Paper@f97aff7 [ci skip] Fix Effect javadocs (#11182) PaperMC/Paper@4a97ba3 Fix `setSendViewDistance`'s return (#11247) PaperMC/Paper@1798e94 Fix BasicCommand suggestion arg count (#11241) PaperMC/Paper@7c9240f Improve standard messenger logging --- gradle.properties | 2 +- patches/server/0007-Ridables.patch | 6 +++--- patches/server/0011-AFK-API.patch | 10 +++++----- .../0069-Allow-color-codes-in-books.patch | 12 ++++++------ patches/server/0070-Entity-lifespan.patch | 4 ++-- .../server/0115-PlayerBookTooLargeEvent.patch | 19 ++++++++----------- .../server/0127-Dont-run-with-scissors.patch | 6 +++--- ...t-right-click-to-use-exp-for-mending.patch | 4 ++-- ...er-output-for-invalid-movement-kicks.patch | 4 ++-- 9 files changed, 32 insertions(+), 35 deletions(-) diff --git a/gradle.properties b/gradle.properties index 5e1611a49..b09fb3b6f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.1-R0.1-SNAPSHOT mcVersion = 1.21.1 -paperCommit = dd941cc40a25a4c6217f09c121b891962726f3ee +paperCommit = 7c9240f4a63b13be1fdcedbfb0270f9b49b75518 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0007-Ridables.patch b/patches/server/0007-Ridables.patch index 1f76dabc8..0742b41ee 100644 --- a/patches/server/0007-Ridables.patch +++ b/patches/server/0007-Ridables.patch @@ -46,7 +46,7 @@ index 2fe9d9b38c01d04416843fdd48d3e33899b7de63..559bec25060eb8981bf80213ceedb79d public LevelChunk getChunkIfLoaded(int x, int z) { return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 37adf5d3c6248547d830248714f32dbec653d653..f21573f92d6703d74203b205aa2aebd0588a12e7 100644 +index 2bd74f003b132b9925002ac79ea066973c9047a4..50ff7afa040c54e538e191322146df48c6675df0 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -805,6 +805,15 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -66,10 +66,10 @@ index 37adf5d3c6248547d830248714f32dbec653d653..f21573f92d6703d74203b205aa2aebd0 private void updatePlayerAttributes() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 624b80c796e9c95040d71d1595d11f98e2899cf3..152aff15307dabafdd0f3b3cf8f61b216c5d9f3f 100644 +index 60ff21c8df4168f14da04a12073bde47cd4693c4..a7f7c140b2c6ee936699e25a72b7e4fcb3705b97 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2717,6 +2717,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2712,6 +2712,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); diff --git a/patches/server/0011-AFK-API.patch b/patches/server/0011-AFK-API.patch index 9d3a3a573..e3964d532 100644 --- a/patches/server/0011-AFK-API.patch +++ b/patches/server/0011-AFK-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f21573f92d6703d74203b205aa2aebd0588a12e7..585b41a7e890aa6b5ea27f8fb84a8ca0310ddeb6 100644 +index 50ff7afa040c54e538e191322146df48c6675df0..f19907853edae46b0db4edcbec286add2da6c5f6 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -2368,8 +2368,68 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -78,7 +78,7 @@ index f21573f92d6703d74203b205aa2aebd0588a12e7..585b41a7e890aa6b5ea27f8fb84a8ca0 return this.stats; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 82f60de72bc0f9b01eb97dbc0e296e80579b0968..07d8b2536c2c95b91467edd2ece8674eeaa6ad2f 100644 +index a7f7c140b2c6ee936699e25a72b7e4fcb3705b97..a38be909672f833b70ae74817673e6080e4a467a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -332,6 +332,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -124,7 +124,7 @@ index 82f60de72bc0f9b01eb97dbc0e296e80579b0968..07d8b2536c2c95b91467edd2ece8674e Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -1454,7 +1476,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1449,7 +1471,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl movedWrongly = true; if (event.getLogWarning()) // Paper end @@ -133,7 +133,7 @@ index 82f60de72bc0f9b01eb97dbc0e296e80579b0968..07d8b2536c2c95b91467edd2ece8674e } // Paper } -@@ -1512,6 +1534,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1507,6 +1529,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -223,7 +223,7 @@ index 141b748abe80402731cdaf14a3d36aa7cef4f4bd..d5d2a6467b48bcf8e5322dd5938f6e4f if (range < 0.0 || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index c2e0baa40e556fd8bb2ae406b321da01f1d05079..1faf1c4b777333030d164e277ee3552900f10cd3 100644 +index 39bb873b5207e83aef36dbf362079eaff31fbb9e..263c4fd61219bb151d9b58fac5d5a75a3dae7029 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -576,10 +576,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0069-Allow-color-codes-in-books.patch b/patches/server/0069-Allow-color-codes-in-books.patch index ef002a5b6..9a9e99e7d 100644 --- a/patches/server/0069-Allow-color-codes-in-books.patch +++ b/patches/server/0069-Allow-color-codes-in-books.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow color codes in books diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 07d8b2536c2c95b91467edd2ece8674eeaa6ad2f..68c4e3d9a3f928a52357e25820ac73adbfb3332c 100644 +index a38be909672f833b70ae74817673e6080e4a467a..4319a191f03caa56baeecdc537b61aacfa2291cd 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1203,10 +1203,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1198,10 +1198,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl Objects.requireNonNull(list); stream.forEach(list::add); @@ -25,7 +25,7 @@ index 07d8b2536c2c95b91467edd2ece8674eeaa6ad2f..68c4e3d9a3f928a52357e25820ac73ad }; this.filterTextPacket((List) list).thenAcceptAsync(consumer, this.server); -@@ -1214,13 +1218,18 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1209,13 +1213,18 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } private void updateBookContents(List pages, int slotId) { @@ -45,7 +45,7 @@ index 07d8b2536c2c95b91467edd2ece8674eeaa6ad2f..68c4e3d9a3f928a52357e25820ac73ad itemstack.set(DataComponents.WRITABLE_BOOK_CONTENT, new WritableBookContent(list1)); this.player.getInventory().setItem(slotId, CraftEventFactory.handleEditBookEvent(this.player, slotId, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) -@@ -1228,6 +1237,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1223,6 +1232,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } private void signBook(FilteredText title, List pages, int slotId) { @@ -57,7 +57,7 @@ index 07d8b2536c2c95b91467edd2ece8674eeaa6ad2f..68c4e3d9a3f928a52357e25820ac73ad ItemStack itemstack = this.player.getInventory().getItem(slotId); if (itemstack.is(Items.WRITABLE_BOOK)) { -@@ -1235,10 +1249,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1230,10 +1244,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl itemstack1.remove(DataComponents.WRITABLE_BOOK_CONTENT); List> list1 = (List>) (List) pages.stream().map((filteredtext1) -> { // CraftBukkit - decompile error @@ -70,7 +70,7 @@ index 07d8b2536c2c95b91467edd2ece8674eeaa6ad2f..68c4e3d9a3f928a52357e25820ac73ad CraftEventFactory.handleEditBookEvent(this.player, slotId, itemstack, itemstack1); // CraftBukkit this.player.getInventory().setItem(slotId, itemstack); // CraftBukkit - event factory updates the hand book } -@@ -1248,6 +1262,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1243,6 +1257,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl return this.player.isTextFilteringEnabled() ? Filterable.passThrough(message.filteredOrEmpty()) : Filterable.from(message); } diff --git a/patches/server/0070-Entity-lifespan.patch b/patches/server/0070-Entity-lifespan.patch index 30549fbd3..ee872d30f 100644 --- a/patches/server/0070-Entity-lifespan.patch +++ b/patches/server/0070-Entity-lifespan.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entity lifespan diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 99d78eace196c5ad93d19c709862d8db7582f80b..600b8280c11032339c056b2b3ad371674072e2c2 100644 +index 4319a191f03caa56baeecdc537b61aacfa2291cd..1908af9183d290a1a6815866ba10172d05ff56d1 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2752,6 +2752,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2747,6 +2747,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); if (this.player.canInteractWithEntity(axisalignedbb, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(1.0D))) { // Paper - configurable lenience value for interact range diff --git a/patches/server/0115-PlayerBookTooLargeEvent.patch b/patches/server/0115-PlayerBookTooLargeEvent.patch index a8c1b44c3..b7a9897bc 100644 --- a/patches/server/0115-PlayerBookTooLargeEvent.patch +++ b/patches/server/0115-PlayerBookTooLargeEvent.patch @@ -5,12 +5,12 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 600b8280c11032339c056b2b3ad371674072e2c2..46cc4aabf1fb349d1ecead78c0041b9de8cde99d 100644 +index 1908af9183d290a1a6815866ba10172d05ff56d1..ea4ac42372919722109cd85c213877b892e8fcf9 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1152,10 +1152,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1152,6 +1152,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl int maxBookPageSize = io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.pageMax; - double multiplier = Math.max(0.3D, Math.min(1D, io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier)); + double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D); long byteAllowed = maxBookPageSize; + // Purpur start + int slot = packet.slot(); @@ -18,16 +18,13 @@ index 600b8280c11032339c056b2b3ad371674072e2c2..46cc4aabf1fb349d1ecead78c0041b9d + // Purpur end for (String testString : pageList) { int byteLength = testString.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; - if (byteLength > 256 * 4) { - ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send a book with with a page too large!"); -+ org.purpurmc.purpur.event.player.PlayerBookTooLargeEvent event = new org.purpurmc.purpur.event.player.PlayerBookTooLargeEvent(player.getBukkitEntity(), itemstack.asBukkitCopy()); if (event.shouldKickPlayer()) // Purpur - this.disconnect(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause - return; - } -@@ -1179,6 +1184,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl + byteTotal += byteLength; +@@ -1173,7 +1177,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl + } if (byteTotal > byteAllowed) { - ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); +- ServerGamePacketListenerImpl.LOGGER.warn("{} tried to send a book too large. Book size: {} - Allowed: {} - Pages: {}", this.player.getScoreboardName(), byteTotal, byteAllowed, pageList.size()); ++ ServerGamePacketListenerImpl.LOGGER.warn("{} tried to send too large of a book. Book size: {} - Allowed: {} - Pages: {}", this.player.getScoreboardName(), byteTotal, byteAllowed, pageList.size()); + org.purpurmc.purpur.event.player.PlayerBookTooLargeEvent event = new org.purpurmc.purpur.event.player.PlayerBookTooLargeEvent(player.getBukkitEntity(), itemstack.asBukkitCopy()); if (event.shouldKickPlayer()) // Purpur this.disconnect(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause return; diff --git a/patches/server/0127-Dont-run-with-scissors.patch b/patches/server/0127-Dont-run-with-scissors.patch index d7350f738..ef398cf11 100644 --- a/patches/server/0127-Dont-run-with-scissors.patch +++ b/patches/server/0127-Dont-run-with-scissors.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Dont run with scissors! inspired by https://modrinth.com/mod/dont-run-with-scissors diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 46cc4aabf1fb349d1ecead78c0041b9de8cde99d..29c567fc3a7e4b30b670eeda2fd28cc55e57e451 100644 +index ea4ac42372919722109cd85c213877b892e8fcf9..f4392eb11dfba8b7423b6e917a38fa44be5c35fa 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1610,6 +1610,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1604,6 +1604,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.player.tryResetCurrentImpulseContext(); } @@ -23,7 +23,7 @@ index 46cc4aabf1fb349d1ecead78c0041b9de8cde99d..29c567fc3a7e4b30b670eeda2fd28cc5 this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1637,6 +1644,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1631,6 +1638,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } } diff --git a/patches/server/0204-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0204-Shift-right-click-to-use-exp-for-mending.patch index bc4453a29..a1f20b7dd 100644 --- a/patches/server/0204-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0204-Shift-right-click-to-use-exp-for-mending.patch @@ -36,10 +36,10 @@ index fe734df8b4521101c3e55c042957a531b3bdf945..7c06b284a6cc74c0b31f8921706c7796 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 29c567fc3a7e4b30b670eeda2fd28cc55e57e451..c0c854296bc920cf79d710ad4896a895ff45c058 100644 +index f4392eb11dfba8b7423b6e917a38fa44be5c35fa..95494ad10f18bb6b700e11b6c338a52ff5a880cc 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2004,6 +2004,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1998,6 +1998,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { diff --git a/patches/server/0253-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0253-Add-more-logger-output-for-invalid-movement-kicks.patch index b86328bfc..d18048245 100644 --- a/patches/server/0253-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0253-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index c0c854296bc920cf79d710ad4896a895ff45c058..ed8825f1bcd8e182078f16dd717cf232223ed208 100644 +index 95494ad10f18bb6b700e11b6c338a52ff5a880cc..3c038a992083f96b6406e786c5bb1177c1fe4c51 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -721,6 +721,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -16,7 +16,7 @@ index c0c854296bc920cf79d710ad4896a895ff45c058..ed8825f1bcd8e182078f16dd717cf232 this.disconnect((Component) Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause return; } -@@ -1327,7 +1328,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1321,7 +1322,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); From 3f790ac3a718930d7c20d77853fe2ed0df3eb5d3 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 15 Aug 2024 13:26:28 -0700 Subject: [PATCH 10/10] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@9ab644e Fix `TooltipContext.create` being wrong(#11254) PaperMC/Paper@11b4ac7 Fix disableEndCredits world config (#11261) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index b09fb3b6f..00d47d13a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.1-R0.1-SNAPSHOT mcVersion = 1.21.1 -paperCommit = 7c9240f4a63b13be1fdcedbfb0270f9b49b75518 +paperCommit = 11b4ac7c659ffb7e4790b0856b14117b6d532200 org.gradle.caching = true org.gradle.parallel = true