diff --git a/build.gradle.kts b/build.gradle.kts index b24f6b6..0a54062 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,7 +15,7 @@ repositories { } dependencies { - remapper("net.fabricmc:tiny-remapper:0.10.2:fat") + remapper("net.fabricmc:tiny-remapper:0.10.3:fat") decompiler("org.vineflower:vineflower:1.10.1") paperclip("io.papermc:paperclip:3.0.3") } diff --git a/gradle.properties b/gradle.properties index 44e5afc..580d171 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = gg.projecteden.parchment -version = 1.20.6-R0.1-SNAPSHOT +version = 1.21-R0.1-SNAPSHOT -mcVersion = 1.20.6 -paperRef = 0ad09de75bfb1db2a84bb760cdee09b06d609bb3 +mcVersion = 1.21 +paperRef = 97afc9a00cb8725361f43d039e412cb475f96585 edenVersion = 2.2.8-SNAPSHOT updatingMinecraft=true diff --git a/patches/api/0002-Add-Getter-interfaces.patch b/patches/api/0002-Add-Getter-interfaces.patch index 2540e1a..9a9f6d8 100644 --- a/patches/api/0002-Add-Getter-interfaces.patch +++ b/patches/api/0002-Add-Getter-interfaces.patch @@ -424,7 +424,7 @@ index 2cac7e27991c04a9ced261f2dd8ad8657ccddf6b..2dc9666fac98e3ff8b569f9510fa0db3 private static final HandlerList HANDLER_LIST = new HandlerList(); diff --git a/src/main/java/org/bukkit/Location.java b/src/main/java/org/bukkit/Location.java -index c6049747fc286acb4e8053901fcc517e5170afa2..5ab9b3e73c9cc6ee9cc4471a1f40c9c60a75b99c 100644 +index 65618b6b3c950fb27707f243a766511d6cd3aab4..cccf6f315e2aae9d67afe726c7bad4f619e47860 100644 --- a/src/main/java/org/bukkit/Location.java +++ b/src/main/java/org/bukkit/Location.java @@ -30,7 +30,7 @@ import org.bukkit.entity.Player; @@ -451,7 +451,7 @@ index c6049747fc286acb4e8053901fcc517e5170afa2..5ab9b3e73c9cc6ee9cc4471a1f40c9c6 * Constructs a new Location with the given coordinates * diff --git a/src/main/java/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java -index 30298a629b39bd43ce14b414fc697b2dfcbea89c..5f50d10c79990a96ae3f954fbff41b5b39a4d7b8 100644 +index 3993fecec5b4c2bbd77e175a168afcad571ce4d1..f2a98e4e25262c452d20e27a9617bf7cfbee9e77 100644 --- a/src/main/java/org/bukkit/OfflinePlayer.java +++ b/src/main/java/org/bukkit/OfflinePlayer.java @@ -19,7 +19,14 @@ import org.jetbrains.annotations.Nullable; @@ -497,20 +497,20 @@ index bbc01e7c192ae6689c301670047ff114306c57cb..2a83ba61686caffb247f17a67af47429 private final Location block; diff --git a/src/main/java/org/bukkit/attribute/AttributeModifier.java b/src/main/java/org/bukkit/attribute/AttributeModifier.java -index 8ba00f743b61cd33dd41ae7f1c272ee2b0c8546d..6e2d3f7e8e2f96016d28bb941f16706d228b542d 100644 +index a0750d457a9cd7cf3ab9c45bb28ce5a2aef35298..386608311d3be08002cbac6346d115f728dcc823 100644 --- a/src/main/java/org/bukkit/attribute/AttributeModifier.java +++ b/src/main/java/org/bukkit/attribute/AttributeModifier.java -@@ -15,7 +15,7 @@ import org.jetbrains.annotations.Nullable; +@@ -18,7 +18,7 @@ import org.jetbrains.annotations.Nullable; /** * Concrete implementation of an attribute modifier. */ --public class AttributeModifier implements ConfigurationSerializable { -+public class AttributeModifier implements ConfigurationSerializable, gg.projecteden.api.interfaces.HasUniqueId { // Parchment +-public class AttributeModifier implements ConfigurationSerializable, Keyed { ++public class AttributeModifier implements ConfigurationSerializable, Keyed, gg.projecteden.api.interfaces.HasUniqueId { // Parchment - private final UUID uuid; - private final String name; + private final NamespacedKey key; + private final double amount; diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java -index 8a842840e1a2652a6356d4a56e4749a5ba36e902..c5b6ec1c6dfa8789afcde1bf22b2507d20c0545f 100644 +index a13c8ddd4a1222e7a16debb61769af3758502d7c..6672aaad187bb4ac23d9a3397fc0ef2ae3708bb2 100644 --- a/src/main/java/org/bukkit/block/Block.java +++ b/src/main/java/org/bukkit/block/Block.java @@ -32,7 +32,7 @@ import org.jetbrains.annotations.Nullable; @@ -562,7 +562,7 @@ index 2e17b2d4f759531fbe9ee8e9b00c839186af09ca..8f4a293c131cb8b63c31b410ffa211bd /** * This is the name of the specified AnimalTamer. diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 62e3793903905b94eb1a120345015149abb33713..8f35e0c9e778d98ca191d45eec76a7a74d51959a 100644 +index 725ef320f929d5e3d141c1ed3246d73a7d741f31..93506536af557bc9972c295ee3957fe0e3c22053 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java @@ -31,7 +31,7 @@ import org.jetbrains.annotations.Nullable; @@ -596,10 +596,10 @@ index ee866f3497ed56708d4062685f5585ca06a03955..4c8f373cb946f4db769be566c163f27a // Paper start @Override diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 6c327a07bf8a6aa11a2d7dad12b2830acc539484..42e186ffdb421ccea61c4325f4b9800d55f624a8 100644 +index 7c56182acaf827f4b1a986a61cea8e9960604c98..9a6f2ed1eb9559789317e21226f67cb6f02c0761 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -56,7 +56,17 @@ import org.jetbrains.annotations.Nullable; +@@ -57,7 +57,17 @@ import org.jetbrains.annotations.Nullable; /** * Represents a player, connected or not */ @@ -853,10 +853,10 @@ index cc5781f276ec0a503b1bfef19d630c85db897c2a..89b38f2ce9a355f39abc657eff49c3a5 private boolean cancelled; private final Player player; diff --git a/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java b/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java -index a965b6a78073c5da86ad671752eff4a270029420..84cc90c085ae5ab788bcbc83bf1a0081be3b8186 100644 +index 5ffd28fd24b4477a07fc9f6a3f669a6f4da9fa26..7611905895d414eeb45a92ed0e3b6124f3dd85cd 100644 --- a/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java +++ b/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java -@@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull; +@@ -13,7 +13,7 @@ import org.jetbrains.annotations.NotNull; * {@link org.bukkit.block.Furnace}, {@link org.bukkit.block.Smoker}, or * {@link org.bukkit.block.BlastFurnace}. */ @@ -957,12 +957,12 @@ index 128e43cf12205f82f2b119a773208502cdccfdd4..ca1fed3081e2b0a3271a2dfa0f49cce7 private static final HandlerList handlers = new HandlerList(); // diff --git a/src/main/java/org/bukkit/event/server/TabCompleteEvent.java b/src/main/java/org/bukkit/event/server/TabCompleteEvent.java -index b43c3cb5c88eada186d6f81712c244aaa18fb53e..a37055d864038a0090fa0c71f7d8e22aea69b3fe 100644 +index ea26cb90d988d693f26e37229fbdee975c0b11f4..f19aa180b7d4f19f57b9968a4c35a76ad29029c3 100644 --- a/src/main/java/org/bukkit/event/server/TabCompleteEvent.java +++ b/src/main/java/org/bukkit/event/server/TabCompleteEvent.java -@@ -19,7 +19,7 @@ import org.jetbrains.annotations.NotNull; - * advised to ensure the client does not have permission for the relevant - * commands, or use {@link PlayerCommandSendEvent}. +@@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull; + * @apiNote Only called for bukkit API commands {@link org.bukkit.command.Command} and + * {@link org.bukkit.command.CommandExecutor} and not for brigadier commands ({@link io.papermc.paper.command.brigadier.Commands}). */ -public class TabCompleteEvent extends Event implements Cancellable { +public class TabCompleteEvent extends Event implements Cancellable, gg.projecteden.parchment.OptionalLocation { // Parchment @@ -1009,20 +1009,20 @@ index 0d519813c12d98b28d62e6d01d7ec6e8c2dba3c3..469b9cc0c4b77844ba0317af51bd9ad8 /** * Returns the size of the inventory diff --git a/src/main/java/org/bukkit/inventory/InventoryView.java b/src/main/java/org/bukkit/inventory/InventoryView.java -index ac6c5c7a58c2c88b6cb0f6632fb53e8d67f8a059..464c69fd652db3384b1a4a5f4151933c3cd7df7b 100644 +index 1e50dba6bb8753e6c1adff59ee0ff93adf3bfd4f..dd7b53d81202dbe994a4cc30a709d99fe8b5acb8 100644 --- a/src/main/java/org/bukkit/inventory/InventoryView.java +++ b/src/main/java/org/bukkit/inventory/InventoryView.java -@@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable; +@@ -13,7 +13,7 @@ import org.jetbrains.annotations.Nullable; * contracts of certain methods, there's no guarantee that the game will work * as it should. */ --public abstract class InventoryView { -+public abstract class InventoryView implements gg.projecteden.parchment.HasHumanEntity { // Parchment +-public interface InventoryView { ++public interface InventoryView extends gg.projecteden.parchment.HasHumanEntity { // Parchment public static final int OUTSIDE = -999; /** * Represents various extra properties of certain inventory windows. diff --git a/src/main/java/org/bukkit/loot/LootContext.java b/src/main/java/org/bukkit/loot/LootContext.java -index b35dba42069f771db8727bf98f9d17aff9d6094e..0b4a90259952185c0897d4c6b68124dd3d42db26 100644 +index 9c1ccaed727ec5e5dad93146bbfda798e3f536e7..b4dc13b03d8a33ac13e8af6677e1a8418edc8e20 100644 --- a/src/main/java/org/bukkit/loot/LootContext.java +++ b/src/main/java/org/bukkit/loot/LootContext.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.Nullable; diff --git a/patches/api/0006-Expanded-Adventure-support.patch b/patches/api/0006-Expanded-Adventure-support.patch index c009014..e2fb867 100644 --- a/patches/api/0006-Expanded-Adventure-support.patch +++ b/patches/api/0006-Expanded-Adventure-support.patch @@ -81,10 +81,10 @@ index 918a045165cdcde264bc24082b7afebb407271de..3f912d3fbf5fdef3b95f81585d2fcf76 * Gets the char value associated with this color * diff --git a/src/main/java/org/bukkit/Color.java b/src/main/java/org/bukkit/Color.java -index e088390ec3fb87eeabc73dfe90e3544980c02e5b..5d4fbb08832fd0490a9375580f909beaf941e8fa 100644 +index f8edb964c4af597b03a2de06c464cc06a96b791c..3957d290c606a50b59c7c421ea7c163f4625449c 100644 --- a/src/main/java/org/bukkit/Color.java +++ b/src/main/java/org/bukkit/Color.java -@@ -16,7 +16,7 @@ import org.jetbrains.annotations.Nullable; +@@ -17,7 +17,7 @@ import org.jetbrains.annotations.Nullable; * but subject to change. */ @SerializableAs("Color") @@ -93,7 +93,7 @@ index e088390ec3fb87eeabc73dfe90e3544980c02e5b..5d4fbb08832fd0490a9375580f909bea private static final int BIT_MASK = 0xff; private static final int DEFAULT_ALPHA = 255; -@@ -309,6 +309,13 @@ public final class Color implements ConfigurationSerializable { +@@ -310,6 +310,13 @@ public final class Color implements ConfigurationSerializable { return getAlpha() << 24 | getRed() << 16 | getGreen() << 8 | getBlue(); } @@ -108,7 +108,7 @@ index e088390ec3fb87eeabc73dfe90e3544980c02e5b..5d4fbb08832fd0490a9375580f909bea * Gets the color as an BGR integer. * diff --git a/src/main/java/org/bukkit/DyeColor.java b/src/main/java/org/bukkit/DyeColor.java -index bd213cabddd8752e609544f24cfba95405726155..7e89cadecde96f9c2394446669dc4d98df391940 100644 +index 47df858e095c4423c20e49e029d72f0f50d2c924..c7504e017bc57df6903a2d76ce98e9fd4c35a7cc 100644 --- a/src/main/java/org/bukkit/DyeColor.java +++ b/src/main/java/org/bukkit/DyeColor.java @@ -8,7 +8,7 @@ import org.jetbrains.annotations.Nullable; diff --git a/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch b/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch index 9ed6a8e..ff26e85 100644 --- a/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch +++ b/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Add UnsafeValues#canPlaceItemOn diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java -index 0857a65ecbc36e0e4b8a7d0cda52be35f238f660..1a3151814ef669db1c8530c7afaa810be99ca267 100644 +index 11bccf6c27b8b2a2ed558a1375a3b3adc7952076..f8071399ad218e30d06de5835df1cef1d77dc2d8 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java -@@ -282,4 +282,19 @@ public interface UnsafeValues { - // Paper end - lifecycle event API +@@ -279,4 +279,18 @@ public interface UnsafeValues { + io.papermc.paper.registry.tag.@Nullable Tag getTag(io.papermc.paper.registry.tag.@NotNull TagKey tagKey); // Paper - hack to get tags for non-server backed registries - @NotNull java.util.List computeTooltipLines(@NotNull ItemStack itemStack, @NotNull io.papermc.paper.inventory.tooltip.TooltipContext tooltipContext, @Nullable org.bukkit.entity.Player player); // Paper - expose itemstack tooltip lines + ItemStack createEmptyStack(); // Paper - proxy ItemStack + + // Parchment start + /** @@ -25,6 +25,5 @@ index 0857a65ecbc36e0e4b8a7d0cda52be35f238f660..1a3151814ef669db1c8530c7afaa810b + */ + java.util.concurrent.CompletableFuture canPlaceItemOn(@org.jetbrains.annotations.NotNull ItemStack item, @org.jetbrains.annotations.Nullable gg.projecteden.parchment.OptionalHumanEntity player, @org.jetbrains.annotations.NotNull org.bukkit.block.Block block, @org.jetbrains.annotations.NotNull org.bukkit.block.BlockFace face); + // Parchment end -+ + } diff --git a/patches/api/0008-Expose-MCUtil-Executors.patch b/patches/api/0008-Expose-MCUtil-Executors.patch index 415cbc3..ceb3ad4 100644 --- a/patches/api/0008-Expose-MCUtil-Executors.patch +++ b/patches/api/0008-Expose-MCUtil-Executors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose MCUtil Executors diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index c8595ffcfcbdd79794d464415287d46acef72b72..e018920520c8d747fb10e8365d4dd0326b04c50c 100644 +index bbc4d7d3ca84642828f9a3f788ca26bba900d15b..5405dcb3883966e8b8ee7f3ce3a5489128e07e1d 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2229,6 +2229,22 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2223,6 +2223,22 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi @NotNull UnsafeValues getUnsafe(); diff --git a/patches/api/0011-Add-HangingFrame-Tick-API.patch b/patches/api/0011-Add-HangingFrame-Tick-API.patch index 552ebb1..587e7f9 100644 --- a/patches/api/0011-Add-HangingFrame-Tick-API.patch +++ b/patches/api/0011-Add-HangingFrame-Tick-API.patch @@ -20,7 +20,7 @@ index 2f07efac03f4d12fd2ae9a340d34cf92a90b6cfa..a16d681d5338fdb2a974a2c67dcc0155 + * + * @return True if the entity is allowed to tick. + */ -+ public boolean canTick(); ++ default boolean canTick() { return true; } + + /** + * Sets whether the hanging entity is allowed to tick. @@ -28,6 +28,6 @@ index 2f07efac03f4d12fd2ae9a340d34cf92a90b6cfa..a16d681d5338fdb2a974a2c67dcc0155 + * + * @param tick True if the entity is allowed to tick. + */ -+ public void setCanTick(boolean tick); ++ default void setCanTick(boolean tick) { throw new UnsupportedOperationException(); } + // Parchment end } diff --git a/patches/api/0012-Add-Player-getHiddenEntities-API.patch b/patches/api/0012-Add-Player-getHiddenEntities-API.patch index 28bf971..d597568 100644 --- a/patches/api/0012-Add-Player-getHiddenEntities-API.patch +++ b/patches/api/0012-Add-Player-getHiddenEntities-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Player#getHiddenEntities API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 42e186ffdb421ccea61c4325f4b9800d55f624a8..8b2380241dbf40bd03941250a66e0a7b4a2282ec 100644 +index 9a6f2ed1eb9559789317e21226f67cb6f02c0761..14aee20cdbe0cb9a118582b605257115098760ac 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -2092,6 +2092,17 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -2097,6 +2097,17 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM */ public boolean canSee(@NotNull Entity entity); diff --git a/patches/api/0014-Expanded-Insomnia-API-methods.patch b/patches/api/0014-Expanded-Insomnia-API-methods.patch index 5af90fc..7193a89 100644 --- a/patches/api/0014-Expanded-Insomnia-API-methods.patch +++ b/patches/api/0014-Expanded-Insomnia-API-methods.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expanded Insomnia API methods diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 8b2380241dbf40bd03941250a66e0a7b4a2282ec..d86f8f80e0873dccd24b186d4860d1e5dbe2f450 100644 +index 14aee20cdbe0cb9a118582b605257115098760ac..ddfe7859ad921343214d3d82ef01bcc57a35790d 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -66,6 +66,45 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -67,6 +67,45 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM */ @Override @NotNull Player getPlayer(); diff --git a/patches/api/0015-Add-NPC-to-EntityType.patch b/patches/api/0015-Add-NPC-to-EntityType.patch index 8c69a39..6c57f2c 100644 --- a/patches/api/0015-Add-NPC-to-EntityType.patch +++ b/patches/api/0015-Add-NPC-to-EntityType.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add NPC to EntityType diff --git a/src/main/java/org/bukkit/entity/EntityType.java b/src/main/java/org/bukkit/entity/EntityType.java -index 1d1315262737d99bf9f5aabc0ae66eee4645cc65..825ad446bcee169c4735955d226dae18b512d7e3 100644 +index 6905614c3d277a3a725554f02cc92d4b3430eecc..36023edd1db4185243ffc417fe59a09c104fbb47 100644 --- a/src/main/java/org/bukkit/entity/EntityType.java +++ b/src/main/java/org/bukkit/entity/EntityType.java -@@ -317,6 +317,7 @@ public enum EntityType implements Keyed, Translatable, net.kyori.adventure.trans +@@ -305,6 +305,7 @@ public enum EntityType implements Keyed, Translatable, net.kyori.adventure.trans /** * An unknown entity without an Entity Class */ diff --git a/patches/api/0020-Entity-Data-Storage.patch b/patches/api/0020-Entity-Data-Storage.patch index c061fdd..cea8911 100644 --- a/patches/api/0020-Entity-Data-Storage.patch +++ b/patches/api/0020-Entity-Data-Storage.patch @@ -260,10 +260,10 @@ index 0000000000000000000000000000000000000000..c9f9c0d235f33925ee247ba4af56bf9f + } +} diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 8f35e0c9e778d98ca191d45eec76a7a74d51959a..f865c4dbdf29e3cd718de7a325d478252895d940 100644 +index 93506536af557bc9972c295ee3957fe0e3c22053..072567951ceecddb4f2bf269e6695b322d3a0f0e 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1155,4 +1155,7 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1159,4 +1159,7 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent */ @NotNull String getScoreboardEntryName(); // Paper end - entity scoreboard name diff --git a/patches/server/0001-Build-changes.patch b/patches/server/0001-Build-changes.patch index a5070a8..f729841 100644 --- a/patches/server/0001-Build-changes.patch +++ b/patches/server/0001-Build-changes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Build changes diff --git a/build.gradle.kts b/build.gradle.kts -index 4998aff0b7cb084dcda15c6a18bbe45e99b6000a..34f1acc44c17b53d93b750a35817131145db454f 100644 +index 299b7b029384c58fed80d53cc0b77c420d62eed7..2e1ac152fc3706fb2b585b5ca9da31a53bfa4251 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,8 @@ @@ -112,10 +112,10 @@ index 532306cacd52579cdf37e4aca25887b1ed3ba6a1..87db580c74d20714e2ebe01df23811c7 final @Nullable Component history = this.getHistory(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index e02102280ed1dc300191d19bbca8f00e17701753..9b5d9729288ac11d21365c900a3b2af454c765dc 100644 +index 6e1f92b45504cef0c4dcbbebf3df339ef4cad0a1..19ccccb3b7e6ab81504923717ecf5a8e88ca5757 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -303,7 +303,7 @@ public class Main { +@@ -273,7 +273,7 @@ public class Main { if (buildDate.before(deadline.getTime())) { // Paper start - This is some stupid bullshit System.err.println("*** Warning, you've not updated in a while! ***"); @@ -138,10 +138,10 @@ index 774556a62eb240da42e84db4502e2ed43495be17..6f1b3fa6ebeabc7596034663ed06686f if (stream != null) { diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java -index 6db566e3111ec08a99aa429624979cb83a85e272..d3a5867e9202d1f34e66c4e6d3842211c40a6255 100644 +index e5e41dc2d4f7a8c3fea704212507ca0b951664db..3561e409bc05a97e05216ef10efb800ece42ff67 100644 --- a/src/main/java/org/spigotmc/WatchdogThread.java +++ b/src/main/java/org/spigotmc/WatchdogThread.java -@@ -162,7 +162,7 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa +@@ -90,7 +90,7 @@ public class WatchdogThread extends Thread log.log( Level.SEVERE, "\t If this is the case, consider increasing timeout-time in spigot.yml but note that this will replace the crash with LARGE lag spikes" ); log.log( Level.SEVERE, "If you are unsure or still think this is a Paper bug, please report this to https://github.com/PaperMC/Paper/issues" ); log.log( Level.SEVERE, "Be sure to include ALL relevant console errors and Minecraft crash reports" ); diff --git a/patches/server/0003-Add-SoundEvent.patch b/patches/server/0003-Add-SoundEvent.patch index 68125b3..d339767 100644 --- a/patches/server/0003-Add-SoundEvent.patch +++ b/patches/server/0003-Add-SoundEvent.patch @@ -39,10 +39,10 @@ index 0000000000000000000000000000000000000000..44245b61f64e4e2eb21ac4f5e540aa9a + } +} diff --git a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java -index badd85a92f38caae257181f67a322fc79599d1ce..4fc829f26512159f430ea26af462bbad0d602149 100644 +index 22fe529890f34f66534c01248f654dc911b44c3b..dfa777529d3eb3cc0a6713c58b91b74cff25bc0e 100644 --- a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java +++ b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java -@@ -363,6 +363,40 @@ public final class PaperAdventure { +@@ -364,6 +364,40 @@ public final class PaperAdventure { return asVanilla(source); } @@ -84,10 +84,10 @@ index badd85a92f38caae257181f67a322fc79599d1ce..4fc829f26512159f430ea26af462bbad final ResourceLocation name = asVanilla(sound.name()); final Optional soundEvent = BuiltInRegistries.SOUND_EVENT.getOptional(name); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index ca56a0b596976448da6bb2a0e82b3d5cd4133e12..c3891adadf9b49c8b17ec387bb63713285621b76 100644 +index 798016774df02c3f7ebf909c9cc125f8427a39be..59fbbfc4fbb7501be62935c1aa466c5bec21b358 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1813,12 +1813,46 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1551,12 +1551,46 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @Override public void playSeededSound(@Nullable Player source, double x, double y, double z, Holder sound, SoundSource category, float volume, float pitch, long seed) { @@ -137,10 +137,10 @@ index ca56a0b596976448da6bb2a0e82b3d5cd4133e12..c3891adadf9b49c8b17ec387bb637132 @Override diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index a645ad66af061966c5e47cae677026b35a55c486..b1e1717b3b63b9c554c7925ed63ed217bff7e792 100644 +index 89ed20e9c629cf39a24c7a0ce5c4fee41fc64fd5..071e38a48114b6cb0155c1dbd60628cdc81189e8 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2528,7 +2528,20 @@ public class ServerPlayer extends Player { +@@ -2559,7 +2559,20 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @Override public void playNotifySound(SoundEvent sound, SoundSource category, float volume, float pitch) { @@ -163,27 +163,32 @@ index a645ad66af061966c5e47cae677026b35a55c486..b1e1717b3b63b9c554c7925ed63ed217 @Override diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index a2142930b4d4b05987c90496fb9d733d99040aa0..ca96202a50f36dfc870e418c7816bc871f098eab 100644 +index ef177f21d654d69c128f3f39ea58f2d8ee598628..a97b890311e42433b71137e4b8dafdcdac656116 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -967,7 +967,7 @@ public abstract class PlayerList { - BlockState data = worldserver1.getBlockState(blockposition); - worldserver1.setBlock(blockposition, data.setValue(net.minecraft.world.level.block.RespawnAnchorBlock.CHARGE, data.getValue(net.minecraft.world.level.block.RespawnAnchorBlock.CHARGE) - 1), 3); +@@ -905,6 +905,9 @@ public abstract class PlayerList { + isBedSpawn = true; } -- entityplayer1.connection.send(new ClientboundSoundPacket(SoundEvents.RESPAWN_ANCHOR_DEPLETE, SoundSource.BLOCKS, (double) location.getX(), (double) location.getY(), (double) location.getZ(), 1.0F, 1.0F, worldserver1.getRandom().nextLong())); + // Paper end - Add PlayerPostRespawnEvent + entityplayer1.playNotifySound(SoundEvents.RESPAWN_ANCHOR_DEPLETE.value(), SoundSource.BLOCKS, 1.0F, 1.0F); // Parchment - use existing play sound method - // Paper end - Fix SPIGOT-5989 ++ // Paper end - Fix SPIGOT-5989 ++ } // Added from changeDimension + this.sendAllPlayerInfo(entityplayer); // Update health, etc... diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 686374e89e41b0917791264f3281f7384835bca8..75995354090771370ba6b4aa8f4ded28186583e8 100644 +index 54ba25632c2a9e1c93a5b3a0b92e5280864c49d6..d9604fb92476f61f618e2ef6a8aeefe4e9fe7653 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1882,7 +1882,21 @@ public abstract class Player extends LivingEntity { +@@ -1891,9 +1891,23 @@ public abstract class Player extends LivingEntity { + } + // Paper start - send while respecting visibility private static void sendSoundEffect(Player fromEntity, double x, double y, double z, SoundEvent soundEffect, SoundSource soundCategory, float volume, float pitch) { - fromEntity.level().playSound(fromEntity, x, y, z, soundEffect, soundCategory, volume, pitch); // This will not send the effect to the entity himself - if (fromEntity instanceof ServerPlayer) { -- ((ServerPlayer) fromEntity).connection.send(new net.minecraft.network.protocol.game.ClientboundSoundPacket(net.minecraft.core.registries.BuiltInRegistries.SOUND_EVENT.wrapAsHolder(soundEffect), soundCategory, x, y, z, volume, pitch, fromEntity.random.nextLong())); +- fromEntity.level().playSound(fromEntity, x, y, z, soundEffect, soundCategory, volume, pitch); // This will not send the effect to the entity itself +- if (fromEntity instanceof ServerPlayer serverPlayer) { +- serverPlayer.connection.send(new net.minecraft.network.protocol.game.ClientboundSoundPacket(net.minecraft.core.registries.BuiltInRegistries.SOUND_EVENT.wrapAsHolder(soundEffect), soundCategory, x, y, z, volume, pitch, fromEntity.random.nextLong())); ++ fromEntity.level().playSound(fromEntity, x, y, z, soundEffect, soundCategory, volume, pitch); // This will not send the effect to the entity himself ++ if (fromEntity instanceof ServerPlayer) { + // Parchment start - sound event + CraftEventFactory.playSoundEvent(new gg.projecteden.parchment.event.sound.SoundEvent( + null, @@ -203,10 +208,10 @@ index 686374e89e41b0917791264f3281f7384835bca8..75995354090771370ba6b4aa8f4ded28 } // Paper end - send while respecting visibility diff --git a/src/main/java/net/minecraft/world/entity/raid/Raid.java b/src/main/java/net/minecraft/world/entity/raid/Raid.java -index fdff9788eaf663be79214b2ca491f0f0444f6136..4b26f4a4620bacd40efe22b685f48fdda1012e8a 100644 +index dcbef04bbaab988096bf416163264833e84d1967..4117f12172d1d67283fab21851bf2d1c167da1cb 100644 --- a/src/main/java/net/minecraft/world/entity/raid/Raid.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raid.java -@@ -564,7 +564,7 @@ public class Raid { +@@ -561,7 +561,7 @@ public class Raid { double d2 = vec3d.z + 13.0D / d0 * (vec3d1.z - vec3d.z); if (d0 <= 64.0D || collection.contains(entityplayer)) { @@ -216,10 +221,10 @@ index fdff9788eaf663be79214b2ca491f0f0444f6136..4b26f4a4620bacd40efe22b685f48fdd } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 34b91eff3190848bae38b20e1d956ece497b1473..75a3d42d0ac458e1f7161e88cf27ec6087828926 100644 +index bd6fee3e3ad9116802ff8bb57bfa741b881c4057..43ae279d4d7be8b2addd62178189d14f183cdcfb 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -2182,4 +2182,42 @@ public class CraftEventFactory { +@@ -2204,4 +2204,42 @@ public class CraftEventFactory { return event; } // Paper end - add EntityFertilizeEggEvent diff --git a/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch b/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch index 2c673bd..8ab79d8 100644 --- a/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch +++ b/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add origin location to EntityDamageByBlockEvent diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 75a3d42d0ac458e1f7161e88cf27ec6087828926..ca52d30944a067bb156cae6290663ab20cb160e9 100644 +index 43ae279d4d7be8b2addd62178189d14f183cdcfb..ab3387231bd81d692bb508e7f0144f884e7b4c9f 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1188,7 +1188,7 @@ public class CraftEventFactory { +@@ -1191,7 +1191,7 @@ public class CraftEventFactory { } private static EntityDamageEvent callEntityDamageEvent(Block damager, BlockState damagerState, Entity damagee, DamageCause cause, org.bukkit.damage.DamageSource bukkitDamageSource, Map modifiers, Map> modifierFunctions, boolean cancelled) { diff --git a/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch b/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch index ff4d898..bdb3717 100644 --- a/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch +++ b/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Add UnsafeValues#canPlaceItemOn diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 5a382907285a288f2a223189e690d3dbdf45594c..fab345b24eebeac1935bff9f0ece4334748d1b17 100644 +index d70c5546c8bd6f364fad9b24880b6867efdab644..acddf6e14be66531afb68109d130bc5ccb096471 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -693,6 +693,55 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -707,6 +707,55 @@ public final class CraftMagicNumbers implements UnsafeValues { } - // Paper end - lifecycle event API + // Paper end - proxy ItemStack + // Parchment start + @Override diff --git a/patches/server/0007-Add-Player-setGameProfile.patch b/patches/server/0007-Add-Player-setGameProfile.patch index 1b73321..b118583 100644 --- a/patches/server/0007-Add-Player-setGameProfile.patch +++ b/patches/server/0007-Add-Player-setGameProfile.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Player#setGameProfile diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 75995354090771370ba6b4aa8f4ded28186583e8..38388feb2a578d71568fbe17799c4f9a0d5f2c2c 100644 +index d9604fb92476f61f618e2ef6a8aeefe4e9fe7653..2e224f2d9d271eec84171c316aa13472c14e52bc 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1541,6 +1541,12 @@ public abstract class Player extends LivingEntity { +@@ -1563,6 +1563,12 @@ public abstract class Player extends LivingEntity { return this.gameProfile; } diff --git a/patches/server/0008-Expose-MCUtil-Executors.patch b/patches/server/0008-Expose-MCUtil-Executors.patch index ce282d1..0972ad5 100644 --- a/patches/server/0008-Expose-MCUtil-Executors.patch +++ b/patches/server/0008-Expose-MCUtil-Executors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose MCUtil Executors diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 2fa5507aa2153a05208077f9547c165a1099b5bb..50f91ac8303dd33f3b493c85cb713dba1b89d294 100644 +index caf6ff33b42472d30f28629470e12889f50490cc..534e48db353fae98880bce454c5a843740f96436 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3264,4 +3264,16 @@ public final class CraftServer implements Server { +@@ -3205,4 +3205,16 @@ public final class CraftServer implements Server { return this.potionBrewer; } // Paper end diff --git a/patches/server/0009-Add-BlockDropResourcesEvent.patch b/patches/server/0009-Add-BlockDropResourcesEvent.patch index 033b310..ae46a33 100644 --- a/patches/server/0009-Add-BlockDropResourcesEvent.patch +++ b/patches/server/0009-Add-BlockDropResourcesEvent.patch @@ -8,10 +8,10 @@ to easily get the items being dropped by any block instead of only blocks broken by players. diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index cf8b8c8efd1c9c81eb5f02d75bd75875eb66771f..46330f02d04f9e8a921ddf14bb34e94392c17431 100644 +index 45704653310efe9cb755a644674b54b8722c2c84..f388ff2ba19f25e24de4b7dac5fbdb6e82d7c3c3 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -301,7 +301,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -300,7 +300,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, Level world, BlockPos pos) { if (world instanceof ServerLevel) { @@ -20,7 +20,7 @@ index cf8b8c8efd1c9c81eb5f02d75bd75875eb66771f..46330f02d04f9e8a921ddf14bb34e943 Block.popResource(world, pos, itemstack); }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true); -@@ -311,7 +311,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -310,7 +310,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, LevelAccessor world, BlockPos pos, @Nullable BlockEntity blockEntity) { if (world instanceof ServerLevel) { @@ -29,7 +29,7 @@ index cf8b8c8efd1c9c81eb5f02d75bd75875eb66771f..46330f02d04f9e8a921ddf14bb34e943 Block.popResource((ServerLevel) world, pos, itemstack); }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true); -@@ -347,7 +347,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -346,7 +346,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, Level world, BlockPos pos, @Nullable BlockEntity blockEntity, @Nullable Entity entity, ItemStack tool, boolean dropExperience) { // Paper end - Properly handle xp dropping if (world instanceof ServerLevel) { @@ -39,10 +39,10 @@ index cf8b8c8efd1c9c81eb5f02d75bd75875eb66771f..46330f02d04f9e8a921ddf14bb34e943 }); state.spawnAfterBreak((ServerLevel) world, pos, tool, dropExperience); // Paper - Properly handle xp dropping diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index ca52d30944a067bb156cae6290663ab20cb160e9..bbd231e085b3d14693a56c4b2abf393f86ff0683 100644 +index ab3387231bd81d692bb508e7f0144f884e7b4c9f..5f3e58115b1a25c6915661847dcb8ae6e90bb3fc 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -2219,5 +2219,19 @@ public class CraftEventFactory { +@@ -2241,5 +2241,19 @@ public class CraftEventFactory { } }); } diff --git a/patches/server/0010-Add-Furnace-Recipe-API.patch b/patches/server/0010-Add-Furnace-Recipe-API.patch index 86c0065..36abaad 100644 --- a/patches/server/0010-Add-Furnace-Recipe-API.patch +++ b/patches/server/0010-Add-Furnace-Recipe-API.patch @@ -215,10 +215,10 @@ index 0000000000000000000000000000000000000000..e7114e456f818d7bdd4081620f4b9b93 + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index f2b20ed5063a293f0b464548f590d652170cd1d8..b6c14eaeb9e1c0f186e0ec15b76e6ba8814287d3 100644 +index 8045d6c9398d1c88595da6e41aa1ed27fb6fbad0..a5a98d23f1b339b320761446a3c4f1f6a3ec3b1f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2561,4 +2561,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2475,4 +2475,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { return this.adventure$pointers; } // Paper end @@ -226,7 +226,7 @@ index f2b20ed5063a293f0b464548f590d652170cd1d8..b6c14eaeb9e1c0f186e0ec15b76e6ba8 + // Parchment start + @Override + public ItemStack smeltItem(ItemStack toSmelt, gg.projecteden.parchment.inventory.RecipeType recipeType) { -+ return world.getRecipeManager().getRecipeFor(gg.projecteden.parchment.inventory.CraftRecipeType.asCookingRecipe(recipeType), new gg.projecteden.parchment.inventory.SingletonContainer(toSmelt), world).map(recipe -> recipe.value().getResultItem(world.registryAccess()).getBukkitStack()).orElse(null); ++ return world.getRecipeManager().getRecipeFor(gg.projecteden.parchment.inventory.CraftRecipeType.asCookingRecipe(recipeType), new net.minecraft.world.item.crafting.SingleRecipeInput(CraftItemStack.asNMSCopy(toSmelt)), world).map(recipe -> recipe.value().getResultItem(world.registryAccess()).getBukkitStack()).orElse(null); + } + // Parchment end } diff --git a/patches/server/0011-Disable-sleep-status-announcements.patch b/patches/server/0011-Disable-sleep-status-announcements.patch index 475c1b7..c6522c9 100644 --- a/patches/server/0011-Disable-sleep-status-announcements.patch +++ b/patches/server/0011-Disable-sleep-status-announcements.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable sleep status announcements diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index c3891adadf9b49c8b17ec387bb63713285621b76..05ffad3a3bf6eeb720db239238b2d3189585cce9 100644 +index 59fbbfc4fbb7501be62935c1aa466c5bec21b358..79296c2b2907360c37d071a56afcb614a0dc4b29 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1178,7 +1178,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -973,7 +973,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } private void announceSleepStatus() { diff --git a/patches/server/0012-Add-config-for-ticking-TIME_SINCE_REST.patch b/patches/server/0012-Add-config-for-ticking-TIME_SINCE_REST.patch index 74db4fe..cd9e5d2 100644 --- a/patches/server/0012-Add-config-for-ticking-TIME_SINCE_REST.patch +++ b/patches/server/0012-Add-config-for-ticking-TIME_SINCE_REST.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add config for ticking TIME_SINCE_REST diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java -index efc91ff91827872c62b8bd060282549ccdcf67dd..2555be33b41c7011c9acceb5ac777e7ab6752c10 100644 +index 7509b17414f836e8b53fc62b02b386ba4e8c5ca9..6e50da6a2fa63b44166b4e52fc4f6530c83f346f 100644 --- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java -@@ -288,6 +288,7 @@ public class WorldConfiguration extends ConfigurationPart { +@@ -289,6 +289,7 @@ public class WorldConfiguration extends ConfigurationPart { } public boolean disablePlayerCrits = false; @@ -17,10 +17,10 @@ index efc91ff91827872c62b8bd060282549ccdcf67dd..2555be33b41c7011c9acceb5ac777e7a public PillagerPatrols pillagerPatrols; diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 38388feb2a578d71568fbe17799c4f9a0d5f2c2c..a11c18605c0fbaead1163466a38089265a5ac5a8 100644 +index 2e224f2d9d271eec84171c316aa13472c14e52bc..9339c0de87e52402d70af810ad1274c75b81ce8b 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -302,7 +302,7 @@ public abstract class Player extends LivingEntity { +@@ -303,7 +303,7 @@ public abstract class Player extends LivingEntity { this.awardStat(Stats.CROUCH_TIME); } diff --git a/patches/server/0013-Add-HangingFrame-Tick-API.patch b/patches/server/0013-Add-HangingFrame-Tick-API.patch index dbd71cc..f0316c7 100644 --- a/patches/server/0013-Add-HangingFrame-Tick-API.patch +++ b/patches/server/0013-Add-HangingFrame-Tick-API.patch @@ -5,31 +5,65 @@ Subject: [PATCH] Add HangingFrame Tick API diff --git a/src/main/java/net/minecraft/world/entity/decoration/HangingEntity.java b/src/main/java/net/minecraft/world/entity/decoration/HangingEntity.java -index bf2d91bbb4bf401696f5f5d14a67e3920a179084..47a38704eba3ce3da1bf0d5dc18856f2c02c3ea8 100644 +index 25f5c7346f06bcb58cdaaee2a61b0154761925df..dfc29d0f7a5c7f10588438f4b1d3b00b003a7974 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/HangingEntity.java +++ b/src/main/java/net/minecraft/world/entity/decoration/HangingEntity.java -@@ -43,6 +43,7 @@ public abstract class HangingEntity extends Entity { - private int checkInterval; { this.checkInterval = this.getId() % this.level().spigotConfig.hangingTickFrequency; } // Paper - Perf: offset item frame ticking - public BlockPos pos; - protected Direction direction; +@@ -20,7 +20,11 @@ import org.apache.commons.lang3.Validate; + + public abstract class HangingEntity extends BlockAttachedEntity { + protected static final Predicate HANGING_ENTITY = entity -> entity instanceof HangingEntity; ++ ++ private int checkInterval; { this.checkInterval = this.getId() % this.level().spigotConfig.hangingTickFrequency; } // Paper - Perf: offset item frame ticking ++ public BlockPos pos; + protected Direction direction = Direction.SOUTH; + public boolean tick = true; // Parchment protected HangingEntity(EntityType type, Level world) { super(type, world); -@@ -118,7 +119,7 @@ public abstract class HangingEntity extends Entity { +@@ -53,6 +57,38 @@ public abstract class HangingEntity extends BlockAttachedEntity { + protected abstract AABB calculateBoundingBox(BlockPos pos, Direction side); @Override - public void tick() { -- if (!this.level().isClientSide) { ++ public void tick() { + if (tick && !this.level().isClientSide) { // Parchment - this.checkBelowWorld(); - if (this.checkInterval++ == this.level().spigotConfig.hangingTickFrequency) { // Spigot - this.checkInterval = 0; ++ this.checkBelowWorld(); ++ if (this.checkInterval++ == this.level().spigotConfig.hangingTickFrequency) { // Spigot ++ this.checkInterval = 0; ++ if (!this.isRemoved() && !this.survives()) { ++ // CraftBukkit start - fire break events ++ BlockState material = this.level().getBlockState(this.blockPosition()); ++ org.bukkit.event.hanging.HangingBreakEvent.RemoveCause cause; ++ ++ if (!material.isAir()) { ++ // TODO: This feels insufficient to catch 100% of suffocation cases ++ cause = org.bukkit.event.hanging.HangingBreakEvent.RemoveCause.OBSTRUCTION; ++ } else { ++ cause = org.bukkit.event.hanging.HangingBreakEvent.RemoveCause.PHYSICS; ++ } ++ ++ org.bukkit.event.hanging.HangingBreakEvent event = new org.bukkit.event.hanging.HangingBreakEvent((org.bukkit.entity.Hanging) this.getBukkitEntity(), cause); ++ this.level().getCraftServer().getPluginManager().callEvent(event); ++ ++ if (this.isRemoved() || event.isCancelled()) { ++ return; ++ } ++ // CraftBukkit end ++ this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DROP); // CraftBukkit - add Bukkit remove cause ++ this.dropItem((Entity) null); ++ } ++ } ++ } ++ ++ } ++ + public boolean survives() { + if (!this.level().noCollision(this)) { + return false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHanging.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHanging.java -index cbdcf767c01e2c173913f56747d2dacbda2f0094..a74f783df0225223a2b2ae3dc632541ccf078893 100644 +index f1e3f2b89bcd969f3c80548e165881a9b290eb53..f2d46e908ca0030da514a686763e65a57f02cf35 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHanging.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHanging.java -@@ -66,4 +66,16 @@ public class CraftHanging extends CraftEntity implements Hanging { +@@ -66,4 +66,16 @@ public class CraftHanging extends CraftBlockAttachedEntity implements Hanging { public String toString() { return "CraftHanging"; } diff --git a/patches/server/0014-Add-Player-getHiddenEntities-API.patch b/patches/server/0014-Add-Player-getHiddenEntities-API.patch index dc8d5d2..fc6c118 100644 --- a/patches/server/0014-Add-Player-getHiddenEntities-API.patch +++ b/patches/server/0014-Add-Player-getHiddenEntities-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Player#getHiddenEntities API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 7e6116963d835d4606ef3d93b69d3e44b61288e1..1da9415f141aabe8df5b82392c142c1f3fd960fb 100644 +index 7eea190ce8a62960ecc42ff56a4ef71b754184fb..b06595a7e247806fbc145ee941e0886fc3f0266d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2145,6 +2145,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2164,6 +2164,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player { this.server.getPluginManager().callEvent(new PlayerShowEntityEvent(this, entity)); } // Paper start diff --git a/patches/server/0017-Expanded-Insomnia-API.patch b/patches/server/0017-Expanded-Insomnia-API.patch index 77dc767..dfee518 100644 --- a/patches/server/0017-Expanded-Insomnia-API.patch +++ b/patches/server/0017-Expanded-Insomnia-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expanded Insomnia API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 1da9415f141aabe8df5b82392c142c1f3fd960fb..f8aaccfebf81debf807eb74fb7accaa86d5f1a9e 100644 +index b06595a7e247806fbc145ee941e0886fc3f0266d..a6ea5a1b665af5c3dcf9337d5e3f235ea72c5d7f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -211,6 +211,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -213,6 +213,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player { private static final boolean DISABLE_CHANNEL_LIMIT = System.getProperty("paper.disableChannelLimit") != null; // Paper - add a flag to disable the channel limit private long lastSaveTime; // Paper - getLastPlayed replacement API @@ -17,9 +17,9 @@ index 1da9415f141aabe8df5b82392c142c1f3fd960fb..f8aaccfebf81debf807eb74fb7accaa8 public CraftPlayer(CraftServer server, ServerPlayer entity) { super(server, entity); -@@ -3530,4 +3532,31 @@ public class CraftPlayer extends CraftHumanEntity implements Player { - public void setSendViewDistance(final int viewDistance) { - this.getHandle().setSendViewDistance(viewDistance); +@@ -3564,4 +3566,31 @@ public class CraftPlayer extends CraftHumanEntity implements Player { + ((ca.spottedleaf.moonrise.patches.chunk_system.player.ChunkSystemServerPlayer)this.getHandle()) + .moonrise$getViewDistanceHolder().setSendViewDistance(viewDistance); } + + // Parchment start diff --git a/patches/server/0018-Add-spam-bypass-permission.patch b/patches/server/0018-Add-spam-bypass-permission.patch index 84eecdc..d43f8e9 100644 --- a/patches/server/0018-Add-spam-bypass-permission.patch +++ b/patches/server/0018-Add-spam-bypass-permission.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add spam bypass permission diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index b9b3277c8ed94e0cd30b20b9c00a33eaad48e5ac..c68329a2668220b0884eafd88440f3aaffd9e0fa 100644 +index 7796e191747be545e744564a2b0b65790f69114d..e3d2b5fb731de55e2921c4bee05e87a3070aa2aa 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -787,9 +787,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -756,9 +756,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handleCustomCommandSuggestions(ServerboundCommandSuggestionPacket packet) { // PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // Paper - AsyncTabCompleteEvent; run this async // CraftBukkit start @@ -23,7 +23,7 @@ index b9b3277c8ed94e0cd30b20b9c00a33eaad48e5ac..c68329a2668220b0884eafd88440f3aa } // CraftBukkit end // Paper start - Don't suggest if tab-complete is disabled -@@ -2512,6 +2514,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2457,6 +2459,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl // Spigot start - spam exclusions private void detectRateSpam(String s) { @@ -31,12 +31,12 @@ index b9b3277c8ed94e0cd30b20b9c00a33eaad48e5ac..c68329a2668220b0884eafd88440f3aa // CraftBukkit start - replaced with thread safe throttle boolean counted = true; for ( String exclude : org.spigotmc.SpigotConfig.spamExclusions ) -@@ -3273,10 +3276,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3211,10 +3214,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handlePlaceRecipe(ServerboundPlaceRecipePacket packet) { // Paper start - auto recipe limit if (!org.bukkit.Bukkit.isPrimaryThread()) { - if (this.recipeSpamPackets.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamLimit) { -- this.server.scheduleOnMain(() -> this.disconnect(net.minecraft.network.chat.Component.translatable("disconnect.spam"), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM)); // Paper - kick event cause +- this.disconnect(net.minecraft.network.chat.Component.translatable("disconnect.spam"), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM); // Paper - kick event cause - return; - } + if (!this.getCraftPlayer().hasPermission("spam.bypass")) { // Parchment - spam bypass diff --git a/patches/server/0019-Disable-set-respawn-message.patch b/patches/server/0019-Disable-set-respawn-message.patch index 318a4e9..a092d4f 100644 --- a/patches/server/0019-Disable-set-respawn-message.patch +++ b/patches/server/0019-Disable-set-respawn-message.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable set respawn message diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index b1e1717b3b63b9c554c7925ed63ed217bff7e792..606384fa11d6aab9384278e89481cd7e07cdb945 100644 +index 071e38a48114b6cb0155c1dbd60628cdc81189e8..0297c95ca67f5f113b696b4cbd149119b92eca2f 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2492,9 +2492,10 @@ public class ServerPlayer extends Player { +@@ -2523,9 +2523,10 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple forced = event.isForced(); // Paper end - Add PlayerSetSpawnEvent diff --git a/patches/server/0020-Make-FixLight-use-action-bar.patch b/patches/server/0020-Make-FixLight-use-action-bar.patch index 964f98c..dd58f9c 100644 --- a/patches/server/0020-Make-FixLight-use-action-bar.patch +++ b/patches/server/0020-Make-FixLight-use-action-bar.patch @@ -5,16 +5,17 @@ Subject: [PATCH] Make FixLight use action bar diff --git a/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java b/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java -index 56524cbe4303901007e1e7fb3703a19efbf79ae7..e13e1da7fc814e83bed1f0f32cd5d115c1c3b710 100644 +index 85950a1aa732ab8c01ad28bec9e0de140e1a172e..e8186e9569c57bc68ac20f6fac0c90001986b5e6 100644 --- a/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java +++ b/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java -@@ -87,17 +87,20 @@ public final class FixLightCommand implements PaperSubcommand { - lightengine.relight(chunks, +@@ -95,16 +95,22 @@ public final class FixLightCommand implements PaperSubcommand { + ((StarLightLightingProvider)lightengine).starlight$serverRelightChunks(chunks, (final ChunkPos chunkPos) -> { ++relitChunks[0]; - sender.getBukkitEntity().sendMessage(text().color(DARK_AQUA).append( - text("Relit chunk ", BLUE), text(chunkPos.toString()), -- text(", progress: ", BLUE), text((int) (Math.round(100.0 * (double) (relitChunks[0]) / (double) pending[0])) + "%") +- text(", progress: ", BLUE), text(ONE_DECIMAL_PLACES.get().format(100.0 * (double) (relitChunks[0]) / (double) pending[0]) + "%") ++ + sender.getBukkitEntity().sendActionBar(text().color(DARK_AQUA).append( + text("Relighting Chunks: ", DARK_AQUA), text(chunkPos.toString()), + text(" " + relitChunks[0], net.kyori.adventure.text.format.NamedTextColor.YELLOW), @@ -25,10 +26,11 @@ index 56524cbe4303901007e1e7fb3703a19efbf79ae7..e13e1da7fc814e83bed1f0f32cd5d115 }, (final int totalRelit) -> { final long end = System.nanoTime(); - final long diff = Math.round(1.0e-6 * (end - start)); ++ final long diff = Math.round(1.0e-6 * (end - start)); sender.getBukkitEntity().sendMessage(text().color(DARK_AQUA).append( - text("Relit ", BLUE), text(totalRelit), -- text(" chunks. Took ", BLUE), text(diff + "ms") +- text(" chunks. Took ", BLUE), text(ONE_DECIMAL_PLACES.get().format(1.0e-6 * (end - start)) + "ms") ++ + text("Relit ", DARK_AQUA), text(totalRelit, net.kyori.adventure.text.format.NamedTextColor.YELLOW), + text(" chunks. Took ", DARK_AQUA), text(diff + "ms", net.kyori.adventure.text.format.NamedTextColor.YELLOW) )); diff --git a/patches/server/0022-Add-PreEntityShootBowEvent.patch b/patches/server/0021-Add-PreEntityShootBowEvent.patch similarity index 74% rename from patches/server/0022-Add-PreEntityShootBowEvent.patch rename to patches/server/0021-Add-PreEntityShootBowEvent.patch index f669bf3..e735640 100644 --- a/patches/server/0022-Add-PreEntityShootBowEvent.patch +++ b/patches/server/0021-Add-PreEntityShootBowEvent.patch @@ -5,18 +5,22 @@ Subject: [PATCH] Add PreEntityShootBowEvent diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 0c5fe46d2da113beff3e220843593d616e37d4ca..7a57f18eeb052a451c54f232f012a8cffa4803f4 100644 +index 3b5cf6ffb74d11bea5eb21bd66d679734ff5000c..321499a52848101b6c36bef18a35f5367c62913c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -@@ -199,13 +199,17 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -201,15 +201,21 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo + @Override public void performRangedAttack(LivingEntity target, float pullProgress) { - ItemStack itemstack = this.getProjectile(this.getItemInHand(ProjectileUtil.getWeaponHoldingHand(this, Items.BOW))); ++ + ItemStack itemstack = this.getItemInHand(ProjectileUtil.getWeaponHoldingHand(this, Items.BOW)); + ItemStack itemstack1 = this.getProjectile(itemstack); + AbstractArrow entityarrow = this.getArrow(itemstack1, pullProgress, itemstack); ++ + // Parchment start -+ gg.projecteden.parchment.event.entity.PreEntityShootBowEvent preEvent = new gg.projecteden.parchment.event.entity.PreEntityShootBowEvent(this.getBukkitEntity(), this.getMainHandItem().asBukkitCopy(), itemstack.asBukkitCopy()); ++ gg.projecteden.parchment.event.entity.PreEntityShootBowEvent preEvent = new gg.projecteden.parchment.event.entity.PreEntityShootBowEvent(this.getBukkitEntity(), this.getMainHandItem().asBukkitCopy(), itemstack1.asBukkitCopy()); + if (!preEvent.callEvent()) return; + // Parchment end - AbstractArrow entityarrow = this.getArrow(itemstack, pullProgress); double d0 = target.getX() - this.getX(); double d1 = target.getY(0.3333333333333333D) - entityarrow.getY(); double d2 = target.getZ() - this.getZ(); @@ -28,18 +32,17 @@ index 0c5fe46d2da113beff3e220843593d616e37d4ca..7a57f18eeb052a451c54f232f012a8cf org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java -index a7964208c952cb4e34916ae6523850fc3921b07e..776bfaf8bc5f3d7afe8c2e2cdafe734eb32aac82 100644 +index c858556ea457931aa14e338e20672cb50cb19f0e..b93db38d69ea6f12f4c1d2f73800753a04309772 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java +++ b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java -@@ -176,13 +176,17 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { - @Override - public void performRangedAttack(LivingEntity target, float pullProgress) { - ItemStack itemstack = this.getProjectile(this.getItemInHand(ProjectileUtil.getWeaponHoldingHand(this, Items.BOW))); -+ // Parchment start -+ gg.projecteden.parchment.event.entity.PreEntityShootBowEvent preEvent = new gg.projecteden.parchment.event.entity.PreEntityShootBowEvent(this.getBukkitEntity(), this.getMainHandItem().asBukkitCopy(), itemstack.asBukkitCopy()); +@@ -179,12 +179,16 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { + ItemStack itemstack = this.getItemInHand(ProjectileUtil.getWeaponHoldingHand(this, Items.BOW)); + ItemStack itemstack1 = this.getProjectile(itemstack); + AbstractArrow entityarrow = ProjectileUtil.getMobArrow(this, itemstack1, pullProgress, itemstack); ++ ++ gg.projecteden.parchment.event.entity.PreEntityShootBowEvent preEvent = new gg.projecteden.parchment.event.entity.PreEntityShootBowEvent(this.getBukkitEntity(), this.getMainHandItem().asBukkitCopy(), itemstack1.asBukkitCopy()); + if (!preEvent.callEvent()) return; + // Parchment end - AbstractArrow entityarrow = ProjectileUtil.getMobArrow(this, itemstack, pullProgress); double d0 = target.getX() - this.getX(); double d1 = target.getY(0.3333333333333333D) - entityarrow.getY(); double d2 = target.getZ() - this.getZ(); @@ -51,10 +54,10 @@ index a7964208c952cb4e34916ae6523850fc3921b07e..776bfaf8bc5f3d7afe8c2e2cdafe734e org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, target.getUsedItemHand(), 0.8F, true); if (event.isCancelled()) { diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index 31b8a8bf78d52b5f11b68e780ec09bf78e7bda84..d296e1ce4798bd223a98bbc5693f29713a1fde7e 100644 +index ddf47dab1ab92c45e3eea09239d418a9798ed59e..05343ee370c3bb166b80a65308fbe8fa218d1773 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -143,8 +143,10 @@ public abstract class AbstractArrow extends Projectile { +@@ -167,8 +167,10 @@ public abstract class AbstractArrow extends Projectile { } @Override @@ -68,10 +71,10 @@ index 31b8a8bf78d52b5f11b68e780ec09bf78e7bda84..d296e1ce4798bd223a98bbc5693f2971 } 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 74c596264d4da551437bd2a23e1c70022cfc73fc..968bfd2004ec8bd2243f886ffee660f235e80241 100644 +index 5f7d152f41eb85f17bcded4bc8099b998e5a338b..ab746e98d3364df0919d27be5e1828f2ba49de51 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -175,9 +175,17 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -181,9 +181,17 @@ public abstract class Projectile extends Entity implements TraceableEntity { } public void shoot(double x, double y, double z, float power, float uncertainty) { @@ -88,10 +91,10 @@ index 74c596264d4da551437bd2a23e1c70022cfc73fc..968bfd2004ec8bd2243f886ffee660f2 + if (relative) { // Parchment + this.setDeltaMovement(vec3d); + } // Parchment + this.hasImpulse = true; double d3 = vec3d.horizontalDistance(); - this.setYRot((float) (Mth.atan2(vec3d.x, vec3d.z) * 57.2957763671875D)); -@@ -187,6 +195,12 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -194,6 +202,12 @@ public abstract class Projectile extends Entity implements TraceableEntity { } public void shootFromRotation(Entity shooter, float pitch, float yaw, float roll, float speed, float divergence) { @@ -104,9 +107,9 @@ index 74c596264d4da551437bd2a23e1c70022cfc73fc..968bfd2004ec8bd2243f886ffee660f2 float f5 = -Mth.sin(yaw * 0.017453292F) * Mth.cos(pitch * 0.017453292F); float f6 = -Mth.sin((pitch + roll) * 0.017453292F); float f7 = Mth.cos(yaw * 0.017453292F) * Mth.cos(pitch * 0.017453292F); -@@ -194,7 +208,9 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -201,7 +215,9 @@ public abstract class Projectile extends Entity implements TraceableEntity { this.shoot((double) f5, (double) f6, (double) f7, speed, divergence); - Vec3 vec3d = shooter.getDeltaMovement(); + Vec3 vec3d = shooter.getKnownMovement(); - if (!shooter.level().paperConfig().misc.disableRelativeProjectileVelocity) this.setDeltaMovement(this.getDeltaMovement().add(vec3d.x, shooter.onGround() ? 0.0D : vec3d.y, vec3d.z)); // Paper - allow disabling relative velocity + if (relative) { // Parchment @@ -116,23 +119,26 @@ index 74c596264d4da551437bd2a23e1c70022cfc73fc..968bfd2004ec8bd2243f886ffee660f2 // CraftBukkit start - call projectile hit event diff --git a/src/main/java/net/minecraft/world/item/BowItem.java b/src/main/java/net/minecraft/world/item/BowItem.java -index 5ca843df5b4caa668953e5e36a9b20fabeb35046..68012cc58dc794afae8b74b7d81eab0080929707 100644 +index 6eb5c0f23d9dc61e69ad5ad493c89602a9dcd4b5..19dd0efd5aefacaca3fea0fc93710628bafd9f9a 100644 --- a/src/main/java/net/minecraft/world/item/BowItem.java +++ b/src/main/java/net/minecraft/world/item/BowItem.java -@@ -31,7 +31,11 @@ public class BowItem extends ProjectileWeaponItem { +@@ -31,8 +31,13 @@ public class BowItem extends ProjectileWeaponItem { + float f = getPowerForTime(i); if (!((double)f < 0.1)) { List list = draw(stack, itemStack, player); - if (!world.isClientSide() && !list.isEmpty()) { -- this.shoot(world, player, player.getUsedItemHand(), stack, list, f * 3.0F, 1.0F, f == 1.0F, null); +- if (world instanceof ServerLevel serverLevel && !list.isEmpty()) { +- this.shoot(serverLevel, player, player.getUsedItemHand(), stack, list, f * 3.0F, 1.0F, f == 1.0F, null); ++ ++ if (!world.isClientSide() && !list.isEmpty()) { + // Parchment start + gg.projecteden.parchment.event.entity.PreEntityShootBowEvent preEvent = new gg.projecteden.parchment.event.entity.PreEntityShootBowEvent(user.getBukkitEntity(), stack.asBukkitCopy(), itemStack.asBukkitCopy()); + if (!preEvent.callEvent()) return; + // Parchment end -+ this.shoot(world, player, player.getUsedItemHand(), stack, list, f * 3.0F, 1.0F, f == 1.0F, null, preEvent.isRelative()); ++ this.shoot((ServerLevel) world, player, player.getUsedItemHand(), stack, list, f * 3.0F, 1.0F, f == 1.0F, null, preEvent.isRelative()); } world.playSound( -@@ -52,9 +56,9 @@ public class BowItem extends ProjectileWeaponItem { +@@ -53,9 +58,9 @@ public class BowItem extends ProjectileWeaponItem { @Override protected void shootProjectile( @@ -145,10 +151,10 @@ index 5ca843df5b4caa668953e5e36a9b20fabeb35046..68012cc58dc794afae8b74b7d81eab00 public static float getPowerForTime(int useTicks) { diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java -index 1f52feb5684ee1bab710e1557cf69b43b4d4dfd4..b4633be6d59f5b05d0b59e2aff2d8452ffd29736 100644 +index c39fa953accd6cf35672f452052cca42fe6f29d0..9bbdf240f7ee520e5d13155ca34f26235f4e5f5b 100644 --- a/src/main/java/net/minecraft/world/item/CrossbowItem.java +++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java -@@ -124,7 +124,7 @@ public class CrossbowItem extends ProjectileWeaponItem { +@@ -137,7 +137,7 @@ public class CrossbowItem extends ProjectileWeaponItem { @Override protected void shootProjectile( @@ -157,9 +163,9 @@ index 1f52feb5684ee1bab710e1557cf69b43b4d4dfd4..b4633be6d59f5b05d0b59e2aff2d8452 ) { Vector3f vector3f; if (target != null) { -@@ -186,8 +186,14 @@ public class CrossbowItem extends ProjectileWeaponItem { +@@ -198,8 +198,14 @@ public class CrossbowItem extends ProjectileWeaponItem { ) { - if (!world.isClientSide()) { + if (world instanceof ServerLevel serverLevel) { ChargedProjectiles chargedProjectiles = stack.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.EMPTY); + // Parchment start + gg.projecteden.parchment.event.entity.PreEntityShootBowEvent preEvent = new gg.projecteden.parchment.event.entity.PreEntityShootBowEvent(shooter.getBukkitEntity(), stack.asBukkitCopy(), chargedProjectiles.getItems().get(0).asBukkitCopy()); @@ -168,26 +174,30 @@ index 1f52feb5684ee1bab710e1557cf69b43b4d4dfd4..b4633be6d59f5b05d0b59e2aff2d8452 + // Parchment end + if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) { -- this.shoot(world, shooter, hand, stack, chargedProjectiles.getItems(), speed, divergence, shooter instanceof Player, livingEntity); -+ this.shoot(world, shooter, hand, stack, chargedProjectiles.getItems(), speed, divergence, shooter instanceof Player, livingEntity, preEvent.isRelative()); +- this.shoot(serverLevel, shooter, hand, stack, chargedProjectiles.getItems(), speed, divergence, shooter instanceof Player, target); ++ this.shoot(serverLevel, shooter, hand, stack, chargedProjectiles.getItems(), speed, divergence, shooter instanceof Player, target, preEvent.isRelative()); if (shooter instanceof ServerPlayer serverPlayer) { CriteriaTriggers.SHOT_CROSSBOW.trigger(serverPlayer, stack); serverPlayer.awardStat(Stats.ITEM_USED.get(stack.getItem())); diff --git a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java -index d27e83c08c45b8514207f26e48ceb1a91ded94be..9d4460201093fa34a37c118c9a38dcd596448265 100644 +index 32dd0b13a0819f597d8a93c6bc3a155781067544..a74540e3a0aa61534fd84868bf8a29d97ccb6e6b 100644 --- a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java +++ b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java -@@ -46,7 +46,7 @@ public abstract class ProjectileWeaponItem extends Item { +@@ -46,9 +46,10 @@ public abstract class ProjectileWeaponItem extends Item { public abstract int getDefaultProjectileRange(); -- protected void shoot(Level world, LivingEntity shooter, InteractionHand hand, ItemStack stack, List projectiles, float speed, float divergence, boolean critical, @Nullable LivingEntity target) { -+ protected void shoot(Level world, LivingEntity shooter, InteractionHand hand, ItemStack stack, List projectiles, float speed, float divergence, boolean critical, @Nullable LivingEntity target, boolean relative) { - float f2 = 10.0F; - float f3 = projectiles.size() == 1 ? 0.0F : 20.0F / (float) (projectiles.size() - 1); +- protected void shoot(ServerLevel world, LivingEntity shooter, InteractionHand hand, ItemStack stack, List projectiles, float speed, float divergence, boolean critical, @Nullable LivingEntity target) { ++ ++ protected void shoot(ServerLevel world, LivingEntity shooter, InteractionHand hand, ItemStack stack, List projectiles, float speed, float divergence, boolean critical, @Nullable LivingEntity target, boolean relative) { + float f2 = EnchantmentHelper.processProjectileSpread(world, stack, shooter, 0.0F); +- float f3 = projectiles.size() == 1 ? 0.0F : 2.0F * f2 / (float) (projectiles.size() - 1); ++ float f3 = projectiles.size() == 1 ? 0.0F : 20.0F / (float) (projectiles.size() - 1); float f4 = (float) ((projectiles.size() - 1) % 2) * f3 / 2.0F; -@@ -62,7 +62,7 @@ public abstract class ProjectileWeaponItem extends Item { - // itemstack.hurtAndBreak(this.getDurabilityUse(itemstack1), entityliving, EntityLiving.getSlotForHand(enumhand)); // CraftBukkit - moved down + float f5 = 1.0F; + +@@ -61,7 +62,7 @@ public abstract class ProjectileWeaponItem extends Item { + f5 = -f5; Projectile iprojectile = this.createProjectile(world, shooter, stack, itemstack1, critical); - this.shootProjectile(shooter, iprojectile, i, speed, divergence, f6, target); @@ -195,7 +205,7 @@ index d27e83c08c45b8514207f26e48ceb1a91ded94be..9d4460201093fa34a37c118c9a38dcd5 // CraftBukkit start org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(shooter, stack, itemstack1, iprojectile, hand, speed, true); if (event.isCancelled()) { -@@ -90,7 +90,7 @@ public abstract class ProjectileWeaponItem extends Item { +@@ -91,7 +92,7 @@ public abstract class ProjectileWeaponItem extends Item { return 1; } diff --git a/patches/server/0021-Remove-Hanging-Entity-Debug.patch b/patches/server/0021-Remove-Hanging-Entity-Debug.patch deleted file mode 100644 index a006ec6..0000000 --- a/patches/server/0021-Remove-Hanging-Entity-Debug.patch +++ /dev/null @@ -1,19 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Blast-MC -Date: Wed, 1 Mar 2023 22:02:23 -0500 -Subject: [PATCH] Remove Hanging Entity Debug - - -diff --git a/src/main/java/net/minecraft/world/entity/decoration/HangingEntity.java b/src/main/java/net/minecraft/world/entity/decoration/HangingEntity.java -index 374f73ac1dbfa27daef132373f7af4b9bb12daa0..015badafe28adc6ab121b24b7cb585a84bce12ff 100644 ---- a/src/main/java/net/minecraft/world/entity/decoration/HangingEntity.java -+++ b/src/main/java/net/minecraft/world/entity/decoration/HangingEntity.java -@@ -281,7 +281,7 @@ public abstract class HangingEntity extends Entity { - BlockPos blockposition = new BlockPos(nbt.getInt("TileX"), nbt.getInt("TileY"), nbt.getInt("TileZ")); - - if (!blockposition.closerThan(this.blockPosition(), 16.0D)) { -- HangingEntity.LOGGER.error("Hanging entity at invalid position: {}", blockposition); -+ //HangingEntity.LOGGER.error("Hanging entity at invalid position: {}", blockposition); - } else { - this.pos = blockposition; - } diff --git a/patches/server/0023-Return-Displays-in-getTargetEntity.patch b/patches/server/0022-Return-Displays-in-getTargetEntity.patch similarity index 89% rename from patches/server/0023-Return-Displays-in-getTargetEntity.patch rename to patches/server/0022-Return-Displays-in-getTargetEntity.patch index a16e327..7a1bc80 100644 --- a/patches/server/0023-Return-Displays-in-getTargetEntity.patch +++ b/patches/server/0022-Return-Displays-in-getTargetEntity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Return Displays in getTargetEntity diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index ef0f118aecf0893e45cb9423a677d7e42496324b..ac75ec5d0d0e9ec36030859d78082e0fa48a9b70 100644 +index e980c8c356b30d25e2fc5a73b91ad2c6edd4fe05..690a5ec3b28198690fc085d4b71c18f3707234a5 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -4117,7 +4117,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -4110,7 +4110,7 @@ public abstract class LivingEntity extends Entity implements Attackable { Vec3 direction = this.getLookAngle(); Vec3 end = start.add(direction.x * maxDistance, direction.y * maxDistance, direction.z * maxDistance); diff --git a/patches/server/0024-Add-CustomBlockUpdateEvent.patch b/patches/server/0023-Add-CustomBlockUpdateEvent.patch similarity index 100% rename from patches/server/0024-Add-CustomBlockUpdateEvent.patch rename to patches/server/0023-Add-CustomBlockUpdateEvent.patch diff --git a/patches/server/0025-Entity-Data-Storage.patch b/patches/server/0024-Entity-Data-Storage.patch similarity index 85% rename from patches/server/0025-Entity-Data-Storage.patch rename to patches/server/0024-Entity-Data-Storage.patch index 693dd72..dfa8f67 100644 --- a/patches/server/0025-Entity-Data-Storage.patch +++ b/patches/server/0024-Entity-Data-Storage.patch @@ -27,10 +27,10 @@ index 0000000000000000000000000000000000000000..30f8fd154136d05267e8737ff04a0be4 + +} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 2eb9c584cc77237f1c82d880a51a3f8b51008d73..dd0fa065e97f0ae0bc6a2f66392d6393e4c04b06 100644 +index 7d82cc6b847124cf4225428ba310309544928148..7b229e405877e31fbe5e292b236febbc5de8dd5c 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -281,6 +281,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -285,6 +285,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface return false; } @@ -40,12 +40,12 @@ index 2eb9c584cc77237f1c82d880a51a3f8b51008d73..dd0fa065e97f0ae0bc6a2f66392d6393 // this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage)); // Spigot - moved up this.server.loadPlugins(); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 25ea45a528612d1a2a2d77293b3802f473a52f38..169fdd2e21a192bfc834785a2e9eae2adde442c3 100644 +index 1a40128b06e70e39a82f170fc16dcae1e22c745c..962b84516be0ccd28ff7cab11bcdae6269abe3cb 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -164,6 +164,31 @@ import org.bukkit.plugin.PluginManager; +@@ -169,6 +169,31 @@ import org.bukkit.plugin.PluginManager; - public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, CommandSource, ScoreHolder { + public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, CommandSource, ScoreHolder, ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity { // Paper - rewrite chunk system + @javax.annotation.Nullable + private gg.projecteden.parchment.entity.EntityData storedEntityData; @@ -76,10 +76,10 @@ index 25ea45a528612d1a2a2d77293b3802f473a52f38..169fdd2e21a192bfc834785a2e9eae2a private static final int CURRENT_LEVEL = 2; public boolean preserveMotion = true; // Paper - Fix Entity Teleportation and cancel velocity if teleported; keep initial motion on first setPositionRotation diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index a2d336ceb52b63db5c03432ee7bc94dc6a742b82..a7a95547fc3f1614c7e6efdd0dcd24ba6af27fd8 100644 +index 2cde808bfa797256409879505ba205a71f381981..1bde22a5ec330980ee697830cb2c6a7441394722 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -78,6 +78,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -80,6 +80,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { }; // Paper end - Folia schedulers diff --git a/patches/server/0026-Add-Sidebar-Utility.patch b/patches/server/0025-Add-Sidebar-Utility.patch similarity index 99% rename from patches/server/0026-Add-Sidebar-Utility.patch rename to patches/server/0025-Add-Sidebar-Utility.patch index 2162b0f..a6a4cfe 100644 --- a/patches/server/0026-Add-Sidebar-Utility.patch +++ b/patches/server/0025-Add-Sidebar-Utility.patch @@ -27,7 +27,7 @@ index 30f8fd154136d05267e8737ff04a0be45b23a35d..7091340870607605521239893b8ab763 } diff --git a/src/main/java/gg/projecteden/parchment/sidebar/SidebarBufferImpl.java b/src/main/java/gg/projecteden/parchment/sidebar/SidebarBufferImpl.java new file mode 100644 -index 0000000000000000000000000000000000000000..79900376e8d91792a23dde07fd9f516c3694318f +index 0000000000000000000000000000000000000000..3184478d24e6c984d4e5b5f67253f966315b298c --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/sidebar/SidebarBufferImpl.java @@ -0,0 +1,181 @@ diff --git a/patches/server/0027-Add-Block-BreakNaturally-Overload.patch b/patches/server/0026-Add-Block-BreakNaturally-Overload.patch similarity index 95% rename from patches/server/0027-Add-Block-BreakNaturally-Overload.patch rename to patches/server/0026-Add-Block-BreakNaturally-Overload.patch index affd156..7909ce2 100644 --- a/patches/server/0027-Add-Block-BreakNaturally-Overload.patch +++ b/patches/server/0026-Add-Block-BreakNaturally-Overload.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Block BreakNaturally Overload diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index 46330f02d04f9e8a921ddf14bb34e94392c17431..e7695d630e17260708951090da89db7dbb3db09e 100644 +index f388ff2ba19f25e24de4b7dac5fbdb6e82d7c3c3..23a7206f8195a178cd9ef11a0b9ffa9b64148dfd 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -299,24 +299,28 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -298,24 +298,28 @@ public class Block extends BlockBehaviour implements ItemLike { return state.getDrops(lootparams_a); } @@ -43,7 +43,7 @@ index 46330f02d04f9e8a921ddf14bb34e94392c17431..e7695d630e17260708951090da89db7d } // Paper start - Add BlockBreakBlockEvent -@@ -344,15 +348,17 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -343,15 +347,17 @@ public class Block extends BlockBehaviour implements ItemLike { // Paper start - Properly handle xp dropping dropResources(state, world, pos, blockEntity, entity, tool, true); } @@ -64,7 +64,7 @@ index 46330f02d04f9e8a921ddf14bb34e94392c17431..e7695d630e17260708951090da89db7d } public static void popResource(Level world, BlockPos pos, ItemStack stack) { -@@ -366,6 +372,17 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -365,6 +371,17 @@ public class Block extends BlockBehaviour implements ItemLike { }, stack); } @@ -87,7 +87,7 @@ index ac11f18690434922179b61ffcc3036dea025b0cb..f9aae49eed516bce00cb968de36ca8b3 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java @@ -500,6 +500,11 @@ public class CraftBlock implements Block { - + @Override public boolean breakNaturally(ItemStack item, boolean triggerEffect, boolean dropExperience) { + return this.breakNaturally(null, item, triggerEffect, dropExperience); @@ -99,7 +99,7 @@ index ac11f18690434922179b61ffcc3036dea025b0cb..f9aae49eed516bce00cb968de36ca8b3 // Order matters here, need to drop before setting to air so skulls can get their data net.minecraft.world.level.block.state.BlockState iblockdata = this.getNMS(); @@ -509,7 +514,12 @@ public class CraftBlock implements Block { - + // Modelled off EntityHuman#hasBlock if (block != Blocks.AIR && (item == null || !iblockdata.requiresCorrectToolForDrops() || nmsItem.isCorrectToolForDrops(iblockdata))) { - net.minecraft.world.level.block.Block.dropResources(iblockdata, this.world.getMinecraftWorld(), this.position, this.world.getBlockEntity(this.position), null, nmsItem, false); // Paper - Properly handle xp dropping