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 { +@@ -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; - 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) { + 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;