diff --git a/gradle.properties b/gradle.properties index 58780efc0..2072e4b3e 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 = 57c75a4b67a8b3b3c607126130b7503658b5e98a +paperCommit = 4430e96e1b82f3e8244a5c979afb7a69f38222aa org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0016-Anvil-API.patch b/patches/api/0016-Anvil-API.patch index d3458d680..0710c76ae 100644 --- a/patches/api/0016-Anvil-API.patch +++ b/patches/api/0016-Anvil-API.patch @@ -52,13 +52,13 @@ index f1f97a85ec713c05c882d7588f4a3e4a017f4795..813f6cd253322538bdf96eb323dd23a7 + // 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..4b130327c84b05938d21d563f78361f9483a6a4e 100644 +index cc5ffd28a6d6244b99a94e52c6f5a0f73a64aed7..76e2b4fe49febb2897e1e9c5487a6b1e2e6bd76a 100644 --- a/src/main/java/org/bukkit/inventory/view/AnvilView.java +++ b/src/main/java/org/bukkit/inventory/view/AnvilView.java -@@ -59,4 +59,34 @@ public interface AnvilView extends InventoryView { - * @param levels the levels to set +@@ -83,4 +83,34 @@ public interface AnvilView extends InventoryView { */ - void setMaximumRepairCost(int levels); + void bypassEnchantmentLevelRestriction(boolean bypassEnchantmentLevelRestriction); + // Paper end - bypass anvil level restrictions + + // Purpur start + /** diff --git a/patches/api/0031-Extended-OfflinePlayer-API.patch b/patches/api/0031-Extended-OfflinePlayer-API.patch index 583ed5e63..0ec08e967 100644 --- a/patches/api/0031-Extended-OfflinePlayer-API.patch +++ b/patches/api/0031-Extended-OfflinePlayer-API.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Extended OfflinePlayer API diff --git a/src/main/java/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java -index 3993fecec5b4c2bbd77e175a168afcad571ce4d1..d0206c9c2f423a9b77237d9a005b9ee139dae70f 100644 +index a028f2fe541491729856051780b33dba07832fb6..fc64902368a068481f16d5db99c94386caf6b60b 100644 --- a/src/main/java/org/bukkit/OfflinePlayer.java +++ b/src/main/java/org/bukkit/OfflinePlayer.java -@@ -557,4 +557,106 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio - */ - @Nullable - public Location getLocation(); +@@ -573,4 +573,106 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio + @Override + io.papermc.paper.persistence.@NotNull PersistentDataContainerView getPersistentDataContainer(); + // Paper end - add pdc to offline player + + // Purpur start - OfflinePlayer API + /** diff --git a/patches/server/0018-Anvil-API.patch b/patches/server/0018-Anvil-API.patch index ba90d7340..03bc98866 100644 --- a/patches/server/0018-Anvil-API.patch +++ b/patches/server/0018-Anvil-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Anvil API diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java -index 32910f677b0522ac8ec513fa0d00b714b52cfae4..c491291b522aebf34c7d990d2b485d1a0d19cdcd 100644 +index dd4218e108f87f3305b76fbc8d88f488b447c609..ecfa807e78c16a24099d40becd0c7916f239aed1 100644 --- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java @@ -76,6 +76,7 @@ public abstract class AbstractContainerMenu { @@ -17,7 +17,7 @@ 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 d685511104ac552dfc9ae2111e1bfb60fa812102..b1810b5dfc89dd2921607b0040afd69b05d36b9e 100644 +index 362278407679f245ebcea778f2199b357339e1fe..07e4c67ed1e5b14315ccbce4f0dd8abf0e5e6635 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; @@ -33,10 +33,10 @@ index d685511104ac552dfc9ae2111e1bfb60fa812102..b1810b5dfc89dd2921607b0040afd69b public class AnvilMenu extends ItemCombinerMenu { public static final int INPUT_SLOT = 0; -@@ -53,6 +59,10 @@ public class AnvilMenu extends ItemCombinerMenu { - public int maximumRepairCost = 40; +@@ -54,6 +60,10 @@ public class AnvilMenu extends ItemCombinerMenu { private CraftAnvilView bukkitEntity; // CraftBukkit end + public boolean bypassEnchantmentLevelRestriction = false; // Paper - bypass anvil level restrictions + // Purpur start - Anvil API + public boolean bypassCost = false; + public boolean canDoUnsafeEnchants = false; @@ -44,7 +44,7 @@ index d685511104ac552dfc9ae2111e1bfb60fa812102..b1810b5dfc89dd2921607b0040afd69b public AnvilMenu(int syncId, Inventory inventory) { this(syncId, inventory, ContainerLevelAccess.NULL); -@@ -80,12 +90,17 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -81,12 +91,17 @@ public class AnvilMenu extends ItemCombinerMenu { @Override protected boolean mayPickup(Player player, boolean present) { @@ -63,7 +63,7 @@ index d685511104ac552dfc9ae2111e1bfb60fa812102..b1810b5dfc89dd2921607b0040afd69b player.giveExperienceLevels(-this.cost.get()); } -@@ -136,6 +151,12 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -137,6 +152,12 @@ public class AnvilMenu extends ItemCombinerMenu { @Override public void createResult() { @@ -76,7 +76,7 @@ index d685511104ac552dfc9ae2111e1bfb60fa812102..b1810b5dfc89dd2921607b0040afd69b ItemStack itemstack = this.inputSlots.getItem(0); this.cost.set(1); -@@ -143,7 +164,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -144,7 +165,7 @@ public class AnvilMenu extends ItemCombinerMenu { long j = 0L; byte b0 = 0; @@ -85,7 +85,7 @@ index d685511104ac552dfc9ae2111e1bfb60fa812102..b1810b5dfc89dd2921607b0040afd69b ItemStack itemstack1 = itemstack.copy(); ItemStack itemstack2 = this.inputSlots.getItem(1); ItemEnchantments.Mutable itemenchantments_a = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(itemstack1)); -@@ -222,7 +243,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -223,7 +244,7 @@ public class AnvilMenu extends ItemCombinerMenu { Holder holder1 = (Holder) iterator1.next(); if (!holder1.equals(holder) && !Enchantment.areCompatible(holder, holder1)) { @@ -94,7 +94,7 @@ index d685511104ac552dfc9ae2111e1bfb60fa812102..b1810b5dfc89dd2921607b0040afd69b ++i; } } -@@ -280,6 +301,12 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -281,6 +302,12 @@ public class AnvilMenu extends ItemCombinerMenu { this.cost.set(this.maximumRepairCost - 1); // CraftBukkit } @@ -107,7 +107,7 @@ index d685511104ac552dfc9ae2111e1bfb60fa812102..b1810b5dfc89dd2921607b0040afd69b if (this.cost.get() >= this.maximumRepairCost && !this.player.getAbilities().instabuild) { // CraftBukkit itemstack1 = ItemStack.EMPTY; } -@@ -301,6 +328,13 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -302,6 +329,13 @@ public class AnvilMenu extends ItemCombinerMenu { org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), itemstack1); // CraftBukkit this.sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client this.broadcastChanges(); @@ -193,10 +193,10 @@ index 792cb6adf0c7a6335cc5985fce8bed2e0f1149af..5734c5caffda79383ae30df20c3defb5 + // 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 +index 59f0b1207931a2a10d559f43e2926b17e6991257..02cef3b940822327e72c887f6b342c080c6d0f45 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 +@@ -75,4 +75,26 @@ public class CraftAnvilView extends CraftInventoryView implements Anv this.setMaximumRepairCost(legacy.getMaximumRepairCost()); } } diff --git a/patches/server/0081-Allow-anvil-colors.patch b/patches/server/0081-Allow-anvil-colors.patch index 4af7877f3..3f73e6f74 100644 --- a/patches/server/0081-Allow-anvil-colors.patch +++ b/patches/server/0081-Allow-anvil-colors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow anvil colors diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index b1810b5dfc89dd2921607b0040afd69b05d36b9e..3cdadb7028de83d3c2a939ba883061171137a620 100644 +index 07e4c67ed1e5b14315ccbce4f0dd8abf0e5e6635..58135a3292bcdfea17726f17d86192ced96eea9a 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -@@ -282,6 +282,54 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -283,6 +283,54 @@ public class AnvilMenu extends ItemCombinerMenu { if (!this.itemName.equals(itemstack.getHoverName().getString())) { b0 = 1; i += b0; diff --git a/patches/server/0147-Config-to-allow-unsafe-enchants.patch b/patches/server/0147-Config-to-allow-unsafe-enchants.patch index 3ae88c8c6..7acdbe48c 100644 --- a/patches/server/0147-Config-to-allow-unsafe-enchants.patch +++ b/patches/server/0147-Config-to-allow-unsafe-enchants.patch @@ -27,10 +27,10 @@ index 99695e38b6a10c3cffda6e453f9f0619c7406cc0..2283f69607cb769545c85bcae940ac95 i++; } else if (targets.size() == 1) { diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 3cdadb7028de83d3c2a939ba883061171137a620..e3c74f30eabfcbeef43a7a8096191e4bf4349c9a 100644 +index 58135a3292bcdfea17726f17d86192ced96eea9a..29e54876c22739f45565cd91bcbd76612e8bfad1 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -@@ -231,7 +231,10 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -232,7 +232,10 @@ public class AnvilMenu extends ItemCombinerMenu { i2 = l1 == i2 ? i2 + 1 : Math.max(i2, l1); Enchantment enchantment = (Enchantment) holder.value(); @@ -42,7 +42,7 @@ index 3cdadb7028de83d3c2a939ba883061171137a620..e3c74f30eabfcbeef43a7a8096191e4b if (this.player.getAbilities().instabuild || itemstack.is(Items.ENCHANTED_BOOK)) { flag3 = true; -@@ -243,16 +246,22 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -244,16 +247,22 @@ public class AnvilMenu extends ItemCombinerMenu { Holder holder1 = (Holder) iterator1.next(); if (!holder1.equals(holder) && !Enchantment.areCompatible(holder, holder1)) { @@ -63,12 +63,12 @@ index 3cdadb7028de83d3c2a939ba883061171137a620..e3c74f30eabfcbeef43a7a8096191e4b flag2 = true; } else { flag1 = true; -- if (i2 > enchantment.getMaxLevel()) { -+ if (!org.purpurmc.purpur.PurpurConfig.allowHigherEnchantsLevels && i2 > enchantment.getMaxLevel()) { // Purpur - Config to allow unsafe enchants +- if (i2 > enchantment.getMaxLevel() && !this.bypassEnchantmentLevelRestriction) { // Paper - bypass anvil level restrictions ++ if (!org.purpurmc.purpur.PurpurConfig.allowHigherEnchantsLevels && i2 > enchantment.getMaxLevel() && !this.bypassEnchantmentLevelRestriction) { // Paper - bypass anvil level restrictions // Purpur - Config to allow unsafe enchants i2 = enchantment.getMaxLevel(); } -@@ -378,7 +387,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -379,7 +388,7 @@ public class AnvilMenu extends ItemCombinerMenu { this.broadcastChanges(); // Purpur start - Anvil API diff --git a/patches/server/0166-Make-anvil-cumulative-cost-configurable.patch b/patches/server/0166-Make-anvil-cumulative-cost-configurable.patch index e7af9685f..c7c61dc7b 100644 --- a/patches/server/0166-Make-anvil-cumulative-cost-configurable.patch +++ b/patches/server/0166-Make-anvil-cumulative-cost-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make anvil cumulative cost configurable diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index e3c74f30eabfcbeef43a7a8096191e4bf4349c9a..6c2e2c929810c60009f121b9a505cb9f775f2323 100644 +index 29e54876c22739f45565cd91bcbd76612e8bfad1..bd146be65c558dcd388359081e2625c4f5fbdc79 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -@@ -399,7 +399,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -400,7 +400,7 @@ public class AnvilMenu extends ItemCombinerMenu { } public static int calculateIncreasedRepairCost(int cost) { diff --git a/patches/server/0201-Extended-OfflinePlayer-API.patch b/patches/server/0201-Extended-OfflinePlayer-API.patch index da1665fa8..c5c430fe4 100644 --- a/patches/server/0201-Extended-OfflinePlayer-API.patch +++ b/patches/server/0201-Extended-OfflinePlayer-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Extended OfflinePlayer API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -index 4f4e3ee18d586f61706504218cddc06a38ca5580..95cf30c1ded4a46791e1739fbae2d06c50f3be5f 100644 +index 94ca0407303c4493ab4928b12ec6ecc75aaca549..a138e1b6b66d99f2035de054137a607aa6b7f0b9 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -@@ -335,14 +335,26 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa +@@ -363,14 +363,26 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa @Override public Location getLocation() { @@ -38,7 +38,7 @@ index 4f4e3ee18d586f61706504218cddc06a38ca5580..95cf30c1ded4a46791e1739fbae2d06c UUID uuid = new UUID(data.getLong("WorldUUIDMost"), data.getLong("WorldUUIDLeast")); -@@ -353,9 +365,9 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa +@@ -381,9 +393,9 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa rotation.getFloat(0), rotation.getFloat(1) ); @@ -50,7 +50,7 @@ index 4f4e3ee18d586f61706504218cddc06a38ca5580..95cf30c1ded4a46791e1739fbae2d06c } @Override -@@ -598,4 +610,191 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa +@@ -626,4 +638,191 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa manager.save(); } } diff --git a/patches/server/0297-ItemStack-convenience-methods.patch b/patches/server/0297-ItemStack-convenience-methods.patch index 62eca1dd2..5ae335088 100644 --- a/patches/server/0297-ItemStack-convenience-methods.patch +++ b/patches/server/0297-ItemStack-convenience-methods.patch @@ -5,10 +5,10 @@ Subject: [PATCH] ItemStack convenience methods diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -index f84e07fa0876bb6da0f99f4de6cb811f897adca2..090c485990f11ad72597bcd7473f7b439f7a6d86 100644 +index 6081c588c61406d0d21a15e8e6140d5d5240f0a8..52811706808f3adff16fb0e969ebbcae36c609c3 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -@@ -543,4 +543,285 @@ public final class CraftItemStack extends ItemStack { +@@ -514,4 +514,285 @@ public final class CraftItemStack extends ItemStack { return this.pdcView; } // Paper end - pdc