diff --git a/patches/api/0001-Convert-project-to-Gradle.patch b/patches/api/0001-Convert-project-to-Gradle.patch index 1a1da14253..65d96647ff 100644 --- a/patches/api/0001-Convert-project-to-Gradle.patch +++ b/patches/api/0001-Convert-project-to-Gradle.patch @@ -27,10 +27,10 @@ index 11038da2e071699d6561a331565db0c8d7850d0e..317acfec5894101294a55abff6181943 +/.factorypath diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 -index 0000000000000000000000000000000000000000..1e8a4a87f963a8cf0e61e3c06925b864b437f8f5 +index 0000000000000000000000000000000000000000..41e77b687df6480adf8f5e21daad105dab208df2 --- /dev/null +++ b/build.gradle.kts -@@ -0,0 +1,87 @@ +@@ -0,0 +1,91 @@ +plugins { + `java-library` + `maven-publish` @@ -118,6 +118,10 @@ index 0000000000000000000000000000000000000000..1e8a4a87f963a8cf0e61e3c06925b864 + } + } +} ++ ++tasks.test { ++ useJUnitPlatform() ++} diff --git a/pom.xml b/pom.xml deleted file mode 100644 index e31246ebbe2af2950d63ad413460ea7c0c6baa36..0000000000000000000000000000000000000000 diff --git a/patches/api/0002-Build-system-changes.patch b/patches/api/0002-Build-system-changes.patch index 0dec8cc5b3..15840afd0e 100644 --- a/patches/api/0002-Build-system-changes.patch +++ b/patches/api/0002-Build-system-changes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Build system changes diff --git a/build.gradle.kts b/build.gradle.kts -index 1e8a4a87f963a8cf0e61e3c06925b864b437f8f5..048dc1ffa90672a00f61da0271a550f9e877e8cd 100644 +index 41e77b687df6480adf8f5e21daad105dab208df2..d86ee6acb78d249424c5df98a851178c0f62eec1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,15 +18,27 @@ dependencies { @@ -51,9 +51,9 @@ index 1e8a4a87f963a8cf0e61e3c06925b864b437f8f5..048dc1ffa90672a00f61da0271a550f9 ) options.tags("apiNote:a:API Note:") -@@ -85,3 +101,14 @@ tasks.withType { - } - } +@@ -89,3 +105,14 @@ tasks.withType { + tasks.test { + useJUnitPlatform() } + +// Paper start diff --git a/patches/api/0003-Test-changes.patch b/patches/api/0003-Test-changes.patch index a0c783657f..3bef4c7cdf 100644 --- a/patches/api/0003-Test-changes.patch +++ b/patches/api/0003-Test-changes.patch @@ -3,7 +3,6 @@ From: Shane Freeder Date: Sun, 17 Mar 2019 23:04:30 +0000 Subject: [PATCH] Test changes -- convert to mockito for mocking of types - Allow use of TYPE_USE annotations - Ignore package-private methods for nullability annotations - Add excludes for classes which don't pass @@ -12,6 +11,23 @@ Subject: [PATCH] Test changes Co-authored-by: Riley Park Co-authored-by: Jake Potrebic +diff --git a/build.gradle.kts b/build.gradle.kts +index d86ee6acb78d249424c5df98a851178c0f62eec1..75bfb0ab8049ebbb52240abf661d469de5526767 100644 +--- a/build.gradle.kts ++++ b/build.gradle.kts +@@ -106,6 +106,12 @@ tasks.test { + useJUnitPlatform() + } + ++// Paper start - compile tests with -parameters for better junit parameterized test names ++tasks.compileTestJava { ++ options.compilerArgs.add("-parameters") ++} ++// Paper end ++ + // Paper start + val scanJar = tasks.register("scanJarForBadCalls", io.papermc.paperweight.tasks.ScanJarForBadCalls::class) { + badAnnotations.add("Lio/papermc/paper/annotation/DoNotUse;") diff --git a/src/test/java/io/papermc/paper/testing/EmptyTag.java b/src/test/java/io/papermc/paper/testing/EmptyTag.java new file mode 100644 index 0000000000000000000000000000000000000000..77154095cfb8b259bdb318e8ff40cb6f559ebc18 @@ -205,17 +221,46 @@ index 64e7aef6220097edefdff3b98a771b988365930d..abadff47166722fdc756afdbc6ac7242 return false; } diff --git a/src/test/java/org/bukkit/BukkitMirrorTest.java b/src/test/java/org/bukkit/BukkitMirrorTest.java -index 89ca06ebecdaadd5dfc7bc74473ca15ad36f6eff..a07d35a6615e788361ac4c8b8954a2876d1306b2 100644 +index 89ca06ebecdaadd5dfc7bc74473ca15ad36f6eff..0970bcdf094a2026168b574848e4f7045e80db74 100644 --- a/src/test/java/org/bukkit/BukkitMirrorTest.java +++ b/src/test/java/org/bukkit/BukkitMirrorTest.java -@@ -12,6 +12,7 @@ import org.junit.jupiter.params.provider.MethodSource; - public class BukkitMirrorTest { +@@ -28,18 +28,21 @@ public class BukkitMirrorTest { - public static Stream data() { -+ if (true) return Stream.of(); // Paper - return Stream.of(Server.class.getDeclaredMethods()) - .map(method -> { - try { + @ParameterizedTest + @MethodSource("data") ++ @org.junit.jupiter.api.Disabled // Paper + public void isStatic(Method server, String name, Method bukkit) throws Throwable { + assertThat(Modifier.isStatic(bukkit.getModifiers()), is(true)); + } + + @ParameterizedTest + @MethodSource("data") ++ @org.junit.jupiter.api.Disabled // Paper + public void isDeprecated(Method server, String name, Method bukkit) throws Throwable { + assertThat(bukkit.isAnnotationPresent(Deprecated.class), is(server.isAnnotationPresent(Deprecated.class))); + } + + @ParameterizedTest + @MethodSource("data") ++ @org.junit.jupiter.api.Disabled // Paper + public void returnType(Method server, String name, Method bukkit) throws Throwable { + assertThat(bukkit.getReturnType(), is((Object) server.getReturnType())); + // assertThat(bukkit.getGenericReturnType(), is(server.getGenericReturnType())); // too strict on type generics +@@ -47,12 +50,14 @@ public class BukkitMirrorTest { + + @ParameterizedTest + @MethodSource("data") ++ @org.junit.jupiter.api.Disabled // Paper + public void parameterTypes(Method server, String name, Method bukkit) throws Throwable { + // assertThat(bukkit.getGenericParameterTypes(), is(server.getGenericParameterTypes())); // too strict on type generics + } + + @ParameterizedTest + @MethodSource("data") ++ @org.junit.jupiter.api.Disabled // Paper + public void declaredException(Method server, String name, Method bukkit) throws Throwable { + assertThat(bukkit.getGenericExceptionTypes(), is(server.getGenericExceptionTypes())); + } diff --git a/src/test/java/org/bukkit/support/TestServer.java b/src/test/java/org/bukkit/support/TestServer.java index 79173d6ed844f1e640e3aa745a9b560ec5e6a2bc..73ec679ac0d1f398b417bd174b47f9af93351e27 100644 --- a/src/test/java/org/bukkit/support/TestServer.java diff --git a/patches/api/0004-Add-FastUtil-to-Bukkit.patch b/patches/api/0004-Add-FastUtil-to-Bukkit.patch index 1bc6cc7d36..2498686f3c 100644 --- a/patches/api/0004-Add-FastUtil-to-Bukkit.patch +++ b/patches/api/0004-Add-FastUtil-to-Bukkit.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Add FastUtil to Bukkit Doesn't expose to plugins, just allows Paper-API to use it for optimization diff --git a/build.gradle.kts b/build.gradle.kts -index 048dc1ffa90672a00f61da0271a550f9e877e8cd..98d7bca03ee3805a1d32f3eb7dc520d88cb1787a 100644 +index 75bfb0ab8049ebbb52240abf661d469de5526767..ecba866b84bc5f86a442bf220ab24ed8706aadf9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -22,6 +22,7 @@ dependencies { diff --git a/patches/api/0005-Adventure.patch b/patches/api/0005-Adventure.patch index 40645ed743..69687107e6 100644 --- a/patches/api/0005-Adventure.patch +++ b/patches/api/0005-Adventure.patch @@ -7,7 +7,7 @@ Co-authored-by: zml Co-authored-by: Jake Potrebic diff --git a/build.gradle.kts b/build.gradle.kts -index 98d7bca03ee3805a1d32f3eb7dc520d88cb1787a..b649f81d11c043649fa3e6e65ebd5dd70d2e9469 100644 +index ecba866b84bc5f86a442bf220ab24ed8706aadf9..2377d476aee8c88d26ca715fdb756dc97749aac8 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -10,12 +10,24 @@ java { diff --git a/patches/api/0007-Use-ASM-for-event-executors.patch b/patches/api/0007-Use-ASM-for-event-executors.patch index 8a41b85faa..1bf57e8a2d 100644 --- a/patches/api/0007-Use-ASM-for-event-executors.patch +++ b/patches/api/0007-Use-ASM-for-event-executors.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Use ASM for event executors. Uses method handles for private or static methods. diff --git a/build.gradle.kts b/build.gradle.kts -index b649f81d11c043649fa3e6e65ebd5dd70d2e9469..df783fda358889a23e9219b364181c626ff3dfea 100644 +index 2377d476aee8c88d26ca715fdb756dc97749aac8..0c6e0bb90fe5ea29c467323a179a47ec122ba0f6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -42,6 +42,9 @@ dependencies { diff --git a/patches/api/0008-Paper-Plugins.patch b/patches/api/0008-Paper-Plugins.patch index 82a448bd28..4b8401f996 100644 --- a/patches/api/0008-Paper-Plugins.patch +++ b/patches/api/0008-Paper-Plugins.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Paper Plugins diff --git a/build.gradle.kts b/build.gradle.kts -index df783fda358889a23e9219b364181c626ff3dfea..d3a55d64623b2421740da4eb6ebb08cca56a05e8 100644 +index 0c6e0bb90fe5ea29c467323a179a47ec122ba0f6..145f6209a984e74da2d2de03cf725c06c77ef8da 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -47,7 +47,7 @@ dependencies { diff --git a/patches/api/0069-Allow-plugins-to-use-SLF4J-for-logging.patch b/patches/api/0069-Allow-plugins-to-use-SLF4J-for-logging.patch index 15223a0c2a..b530e27068 100644 --- a/patches/api/0069-Allow-plugins-to-use-SLF4J-for-logging.patch +++ b/patches/api/0069-Allow-plugins-to-use-SLF4J-for-logging.patch @@ -14,7 +14,7 @@ it without having to shade it in the plugin and going through several layers of logging abstraction. diff --git a/build.gradle.kts b/build.gradle.kts -index d3a55d64623b2421740da4eb6ebb08cca56a05e8..afe9e9b08499ac504f4198ffb8da34cd286a6b44 100644 +index 145f6209a984e74da2d2de03cf725c06c77ef8da..639651972fddce4dff63a0f0a7e566a15b9e2dd6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -11,6 +11,8 @@ java { diff --git a/patches/server/0001-Setup-Gradle-project.patch b/patches/server/0001-Setup-Gradle-project.patch index 770cfecb0e..9f400e92ea 100644 --- a/patches/server/0001-Setup-Gradle-project.patch +++ b/patches/server/0001-Setup-Gradle-project.patch @@ -28,10 +28,10 @@ index 3df8c60ab5cd1454660980883f80668d535b742b..37c3a00659ce21623be07317f4f6a45b +/.factorypath diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 -index 0000000000000000000000000000000000000000..398df317e5a84e8916a86209e10c127e23bdd563 +index 0000000000000000000000000000000000000000..813e9019e5bd487edfbb7a52592f979419fee0b5 --- /dev/null +++ b/build.gradle.kts -@@ -0,0 +1,138 @@ +@@ -0,0 +1,139 @@ +import io.papermc.paperweight.util.* + +plugins { @@ -111,6 +111,7 @@ index 0000000000000000000000000000000000000000..398df317e5a84e8916a86209e10c127e + +tasks.test { + exclude("org/bukkit/craftbukkit/inventory/ItemStack*Test.class") ++ useJUnitPlatform() +} + +fun TaskContainer.registerRunTask( diff --git a/patches/server/0003-Build-system-changes.patch b/patches/server/0003-Build-system-changes.patch index 06f4d093fa..2d6f516053 100644 --- a/patches/server/0003-Build-system-changes.patch +++ b/patches/server/0003-Build-system-changes.patch @@ -9,7 +9,7 @@ public net.minecraft.server.packs.VanillaPackResourcesBuilder safeGetPath(Ljava/ Co-authored-by: Jake Potrebic diff --git a/build.gradle.kts b/build.gradle.kts -index 398df317e5a84e8916a86209e10c127e23bdd563..09bd31c939125f97d7e9ebb2b0376af70a035ab0 100644 +index 813e9019e5bd487edfbb7a52592f979419fee0b5..0ced1beb116b1dc43a79415aa154d32cb22d23d0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,10 +9,9 @@ plugins { @@ -81,8 +81,8 @@ index 398df317e5a84e8916a86209e10c127e23bdd563..09bd31c939125f97d7e9ebb2b0376af7 + tasks.test { exclude("org/bukkit/craftbukkit/inventory/ItemStack*Test.class") - } -@@ -132,7 +153,14 @@ tasks.registerRunTask("runReobf") { + useJUnitPlatform() +@@ -133,7 +154,14 @@ tasks.registerRunTask("runReobf") { classpath(runtimeClasspathWithoutVanillaServer) } diff --git a/patches/server/0004-Test-changes.patch b/patches/server/0004-Test-changes.patch index 59928f2c5a..e9fa837f46 100644 --- a/patches/server/0004-Test-changes.patch +++ b/patches/server/0004-Test-changes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Test changes diff --git a/build.gradle.kts b/build.gradle.kts -index 09bd31c939125f97d7e9ebb2b0376af70a035ab0..46089768685b3bdb0620571de6ce81a17c00f5d5 100644 +index 0ced1beb116b1dc43a79415aa154d32cb22d23d0..067440c8cb05bee3539303716a93a4369849a5af 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,6 +12,7 @@ dependencies { @@ -16,12 +16,25 @@ index 09bd31c939125f97d7e9ebb2b0376af70a035ab0..46089768685b3bdb0620571de6ce81a1 implementation("commons-lang:commons-lang:2.6") runtimeOnly("org.xerial:sqlite-jdbc:3.43.0.0") runtimeOnly("com.mysql:mysql-connector-j:8.1.0") +@@ -59,6 +60,12 @@ tasks.compileJava { + options.setIncremental(false) + } + ++// Paper start - compile tests with -parameters for better junit parameterized test names ++tasks.compileTestJava { ++ options.compilerArgs.add("-parameters") ++} ++// Paper end ++ + publishing { + publications.create("maven") { + artifact(tasks.shadowJar) diff --git a/src/test/java/io/papermc/paper/testing/DummyServer.java b/src/test/java/io/papermc/paper/testing/DummyServer.java new file mode 100644 -index 0000000000000000000000000000000000000000..e944e9dca13883c57e93e480ae5adfe51c342532 +index 0000000000000000000000000000000000000000..fd40d6818fe6b511a57f60896cf523a5e871af64 --- /dev/null +++ b/src/test/java/io/papermc/paper/testing/DummyServer.java -@@ -0,0 +1,67 @@ +@@ -0,0 +1,66 @@ +package io.papermc.paper.testing; + +import java.util.logging.Logger; @@ -78,8 +91,7 @@ index 0000000000000000000000000000000000000000..e944e9dca13883c57e93e480ae5adfe5 + }); + + when(dummyServer.getRegistry(any())).thenAnswer(invocation -> { -+ // LazyRegistry because the vanilla data hasn't been bootstrapped yet. -+ return new LazyRegistry(() -> CraftRegistry.createRegistry(invocation.getArgument(0, Class.class), AbstractTestingBase.REGISTRY_CUSTOM)); ++ return CraftRegistry.createRegistry(invocation.getArgument(0), org.bukkit.support.AbstractTestingBase.REGISTRY_CUSTOM); + }); + + final PluginManager pluginManager = new SimplePluginManager(dummyServer, new SimpleCommandMap(dummyServer)); @@ -89,42 +101,6 @@ index 0000000000000000000000000000000000000000..e944e9dca13883c57e93e480ae5adfe5 + + } +} -diff --git a/src/test/java/io/papermc/paper/testing/LazyRegistry.java b/src/test/java/io/papermc/paper/testing/LazyRegistry.java -new file mode 100644 -index 0000000000000000000000000000000000000000..c88749e839ee1a9cf8439c4218c8a98afbd9c491 ---- /dev/null -+++ b/src/test/java/io/papermc/paper/testing/LazyRegistry.java -@@ -0,0 +1,30 @@ -+package io.papermc.paper.testing; -+ -+import java.util.Iterator; -+import java.util.function.Supplier; -+import java.util.stream.Stream; -+import java.util.stream.StreamSupport; -+import org.bukkit.Keyed; -+import org.bukkit.NamespacedKey; -+import org.bukkit.Registry; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; -+ -+public record LazyRegistry(Supplier> supplier) implements Registry { -+ -+ @NotNull -+ @Override -+ public Iterator iterator() { -+ return this.supplier().get().iterator(); -+ } -+ -+ @Override -+ public @Nullable Keyed get(@NotNull final NamespacedKey key) { -+ return this.supplier().get().get(key); -+ } -+ -+ @Override -+ public @NotNull Stream stream() { -+ return StreamSupport.stream(this.supplier.get().spliterator(), false); -+ } -+} diff --git a/src/test/java/org/bukkit/support/AbstractTestingBase.java b/src/test/java/org/bukkit/support/AbstractTestingBase.java index c3c0dff6497ba47604c29a9ff7bcc4692e9ba757..bedb1c43fd9d27eda2411e23d46eb1ad96429507 100644 --- a/src/test/java/org/bukkit/support/AbstractTestingBase.java diff --git a/patches/server/0005-Paper-config-files.patch b/patches/server/0005-Paper-config-files.patch index 90fc737a6d..9e319ed276 100644 --- a/patches/server/0005-Paper-config-files.patch +++ b/patches/server/0005-Paper-config-files.patch @@ -15,7 +15,7 @@ public net.minecraft.server.dedicated.DedicatedServerProperties reload(Lnet/mine public net.minecraft.world.level.NaturalSpawner SPAWNING_CATEGORIES diff --git a/build.gradle.kts b/build.gradle.kts -index 46089768685b3bdb0620571de6ce81a17c00f5d5..4dfc25fce6ec712838b2a080a649e5c718750a74 100644 +index 067440c8cb05bee3539303716a93a4369849a5af..82562c36460ae14aff6a2fafceeee36eddd8558a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,6 +13,7 @@ dependencies { diff --git a/patches/server/0013-Paper-Plugins.patch b/patches/server/0013-Paper-Plugins.patch index f601664a84..c12b8b945a 100644 --- a/patches/server/0013-Paper-Plugins.patch +++ b/patches/server/0013-Paper-Plugins.patch @@ -7892,11 +7892,11 @@ index 0000000000000000000000000000000000000000..ba271c35eb2804f94cfc893bf94affb9 + } +} diff --git a/src/test/java/io/papermc/paper/testing/DummyServer.java b/src/test/java/io/papermc/paper/testing/DummyServer.java -index e944e9dca13883c57e93e480ae5adfe51c342532..f482cb4dc5394de3cf88b4c4e13c18f9c61caf45 100644 +index fd40d6818fe6b511a57f60896cf523a5e871af64..88894731a6a21d74ce78d15c16e34d8a363f39cf 100644 --- a/src/test/java/io/papermc/paper/testing/DummyServer.java +++ b/src/test/java/io/papermc/paper/testing/DummyServer.java -@@ -58,7 +58,7 @@ public final class DummyServer { - return new LazyRegistry(() -> CraftRegistry.createRegistry(invocation.getArgument(0, Class.class), AbstractTestingBase.REGISTRY_CUSTOM)); +@@ -57,7 +57,7 @@ public final class DummyServer { + return CraftRegistry.createRegistry(invocation.getArgument(0), org.bukkit.support.AbstractTestingBase.REGISTRY_CUSTOM); }); - final PluginManager pluginManager = new SimplePluginManager(dummyServer, new SimpleCommandMap(dummyServer)); diff --git a/patches/server/0134-Use-TerminalConsoleAppender-for-console-improvements.patch b/patches/server/0134-Use-TerminalConsoleAppender-for-console-improvements.patch index 32551c2e0e..b8494e6e24 100644 --- a/patches/server/0134-Use-TerminalConsoleAppender-for-console-improvements.patch +++ b/patches/server/0134-Use-TerminalConsoleAppender-for-console-improvements.patch @@ -25,7 +25,7 @@ Other changes: Co-Authored-By: Emilia Kond diff --git a/build.gradle.kts b/build.gradle.kts -index 4dfc25fce6ec712838b2a080a649e5c718750a74..90d61ecdc0760bd81a18fa1d539190853f8da5a3 100644 +index 82562c36460ae14aff6a2fafceeee36eddd8558a..e7ed61452ae5c33078e196cabc648ff39d0e5c23 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,9 +6,30 @@ plugins { @@ -60,7 +60,7 @@ index 4dfc25fce6ec712838b2a080a649e5c718750a74..90d61ecdc0760bd81a18fa1d53919085 implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion implementation("org.ow2.asm:asm:9.5") implementation("org.ow2.asm:asm-commons:9.5") // Paper - ASM event executor generation -@@ -75,7 +96,7 @@ relocation { +@@ -81,7 +102,7 @@ relocation { } tasks.shadowJar { diff --git a/patches/server/0147-Implement-ensureServerConversions-API.patch b/patches/server/0147-Implement-ensureServerConversions-API.patch index 2ea064c942..c78817409b 100644 --- a/patches/server/0147-Implement-ensureServerConversions-API.patch +++ b/patches/server/0147-Implement-ensureServerConversions-API.patch @@ -6,6 +6,19 @@ Subject: [PATCH] Implement ensureServerConversions API This will take a Bukkit ItemStack and run it through any conversions a server process would perform on it, to ensure it meets latest minecraft expectations. +diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java +index cae548dbb5a3027e2de0bfbe38918ec7c2803e8e..c95c51605ae75cf340c7b0a88ae9146d8b31063e 100644 +--- a/src/main/java/net/minecraft/world/item/ItemStack.java ++++ b/src/main/java/net/minecraft/world/item/ItemStack.java +@@ -206,7 +206,7 @@ public final class ItemStack { + + // Called to run this stack through the data converter to handle older storage methods and serialized items + public void convertStack(int version) { +- if (0 < version && version < CraftMagicNumbers.INSTANCE.getDataVersion()) { ++ if (0 < version && version < CraftMagicNumbers.INSTANCE.getDataVersion() && MinecraftServer.getServer() != null) { // Paper - skip conversion if the server doesn't exist (for tests) + CompoundTag savedStack = new CompoundTag(); + this.save(savedStack); + savedStack = (CompoundTag) MinecraftServer.getServer().fixerUpper.update(References.ITEM_STACK, new Dynamic(NbtOps.INSTANCE, savedStack), version, CraftMagicNumbers.INSTANCE.getDataVersion()).getValue(); diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java index 2fa36de5d43e2c395e0db2017bd994a62a5b2feb..0bd3a2989be4e158ba343da09914328e819a0f89 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java diff --git a/patches/server/0155-Handle-plugin-prefixes-using-Log4J-configuration.patch b/patches/server/0155-Handle-plugin-prefixes-using-Log4J-configuration.patch index 51775c22e3..d739f5f771 100644 --- a/patches/server/0155-Handle-plugin-prefixes-using-Log4J-configuration.patch +++ b/patches/server/0155-Handle-plugin-prefixes-using-Log4J-configuration.patch @@ -15,7 +15,7 @@ This may cause additional prefixes to be disabled for plugins bypassing the plugin logger. diff --git a/build.gradle.kts b/build.gradle.kts -index 90d61ecdc0760bd81a18fa1d539190853f8da5a3..c06ed62fb6ce79cd8c1ed45fb4d61a0ded21a01f 100644 +index e7ed61452ae5c33078e196cabc648ff39d0e5c23..d2dbc66c9981f5b9d4fe445c19e387d10c7368dc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -25,7 +25,7 @@ dependencies { diff --git a/patches/server/0162-Add-PlayerArmorChangeEvent.patch b/patches/server/0162-Add-PlayerArmorChangeEvent.patch index a912c660b0..a28cf4298e 100644 --- a/patches/server/0162-Add-PlayerArmorChangeEvent.patch +++ b/patches/server/0162-Add-PlayerArmorChangeEvent.patch @@ -29,12 +29,12 @@ index a8d39b7257332ec8b3b711aab2c4b76a867e73bc..231ba23fabeb88b659a7ea9702eebe4a if (map == null) { map = Maps.newEnumMap(EquipmentSlot.class); } -diff --git a/src/test/java/io/papermc/paper/inventory/item/ExtraArmorSlotTypeMaterialTest.java b/src/test/java/io/papermc/paper/inventory/item/ExtraArmorSlotTypeMaterialTest.java +diff --git a/src/test/java/io/papermc/paper/inventory/item/ArmorSlotTypeMaterialTest.java b/src/test/java/io/papermc/paper/inventory/item/ArmorSlotTypeMaterialTest.java new file mode 100644 -index 0000000000000000000000000000000000000000..0d99bef54594f9c5eda5c19063be765783e89fdd +index 0000000000000000000000000000000000000000..a706dcbabfe31bf54a552965fa5feb8be34213bf --- /dev/null -+++ b/src/test/java/io/papermc/paper/inventory/item/ExtraArmorSlotTypeMaterialTest.java -@@ -0,0 +1,47 @@ ++++ b/src/test/java/io/papermc/paper/inventory/item/ArmorSlotTypeMaterialTest.java +@@ -0,0 +1,74 @@ +package io.papermc.paper.inventory.item; + +import com.destroystokyo.paper.event.player.PlayerArmorChangeEvent; @@ -53,11 +53,11 @@ index 0000000000000000000000000000000000000000..0d99bef54594f9c5eda5c19063be7657 + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; ++import static org.junit.jupiter.api.Assertions.assertTrue; + -+public class ExtraArmorSlotTypeMaterialTest extends AbstractTestingBase { ++public class ArmorSlotTypeMaterialTest extends AbstractTestingBase { + -+ @MethodSource("parameters") -+ public static Stream parameters() { ++ public static Stream slotTypeParams() { + final List parameters = new ArrayList<>(); + for (final PlayerArmorChangeEvent.SlotType slotType : PlayerArmorChangeEvent.SlotType.values()) { + for (final Material item : slotType.getTypes()) { @@ -67,9 +67,9 @@ index 0000000000000000000000000000000000000000..0d99bef54594f9c5eda5c19063be7657 + return parameters.stream(); + } + -+ @ParameterizedTest -+ @MethodSource("parameters") -+ public void test(PlayerArmorChangeEvent.SlotType slotType, Material item) { ++ @ParameterizedTest(name = "{argumentsWithNames}") ++ @MethodSource("slotTypeParams") ++ public void testSlotType(PlayerArmorChangeEvent.SlotType slotType, Material item) { + final Item nmsItem = CraftMagicNumbers.getItem(item); + final Equipable equipable = Equipable.get(new ItemStack(nmsItem)); + assertNotNull(equipable, item + " isn't equipable"); @@ -81,40 +81,10 @@ index 0000000000000000000000000000000000000000..0d99bef54594f9c5eda5c19063be7657 + }; + assertEquals(equipable.getEquipmentSlot(), slot, item + " isn't set to the right slot"); + } -+} -diff --git a/src/test/java/io/papermc/paper/inventory/item/MissingArmorSlotTypeMaterialTest.java b/src/test/java/io/papermc/paper/inventory/item/MissingArmorSlotTypeMaterialTest.java -new file mode 100644 -index 0000000000000000000000000000000000000000..f2a9515228e4e3af27fce4f30fa4f4a5f0629a1e ---- /dev/null -+++ b/src/test/java/io/papermc/paper/inventory/item/MissingArmorSlotTypeMaterialTest.java -@@ -0,0 +1,51 @@ -+package io.papermc.paper.inventory.item; + -+import com.destroystokyo.paper.event.player.PlayerArmorChangeEvent; -+import java.util.ArrayList; -+import java.util.List; -+import java.util.stream.Stream; -+import net.minecraft.core.registries.BuiltInRegistries; -+import net.minecraft.world.entity.EquipmentSlot; -+import net.minecraft.world.item.Equipable; -+import net.minecraft.world.item.Item; -+import net.minecraft.world.item.ItemStack; -+import org.bukkit.craftbukkit.util.CraftMagicNumbers; -+import org.bukkit.support.AbstractTestingBase; -+import org.junit.jupiter.params.ParameterizedTest; -+import org.junit.jupiter.params.provider.MethodSource; -+ -+import static org.junit.jupiter.api.Assertions.assertTrue; -+ -+/** -+ * Test for {@link com.destroystokyo.paper.event.player.PlayerArmorChangeEvent.SlotType} -+ */ -+public class MissingArmorSlotTypeMaterialTest extends AbstractTestingBase { -+ -+ @MethodSource("parameters") -+ public static Stream parameters() { ++ public static Stream equipableParams() { + final List parameters = new ArrayList<>(); -+ for (final Item item : BuiltInRegistries.ITEM) { ++ for (final Item item : net.minecraft.core.registries.BuiltInRegistries.ITEM) { + final Equipable equipable = Equipable.get(new ItemStack(item)); + if (equipable != null) { + parameters.add(new Object[]{equipable, item}); @@ -123,9 +93,9 @@ index 0000000000000000000000000000000000000000..f2a9515228e4e3af27fce4f30fa4f4a5 + return parameters.stream(); + } + -+ @ParameterizedTest -+ @MethodSource("parameters") -+ public void test(Equipable equipable, Item item) { ++ @ParameterizedTest(name = "{argumentsWithNames}") ++ @MethodSource("equipableParams") ++ public void testEquipable(Equipable equipable, Item item) { + final EquipmentSlot equipmentSlot = equipable.getEquipmentSlot(); + PlayerArmorChangeEvent.SlotType slotType = switch (equipmentSlot) { + case HEAD -> PlayerArmorChangeEvent.SlotType.HEAD; diff --git a/patches/server/0219-Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch b/patches/server/0219-Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch index 32007ca4fc..246784575d 100644 --- a/patches/server/0219-Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch +++ b/patches/server/0219-Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Use AsyncAppender to keep logging IO off main thread diff --git a/build.gradle.kts b/build.gradle.kts -index c06ed62fb6ce79cd8c1ed45fb4d61a0ded21a01f..b092384b34986b0826fa62530ffaeb0fcd80cdc6 100644 +index d2dbc66c9981f5b9d4fe445c19e387d10c7368dc..21a94671e77cd72dabcf76c26b12d3ccbe23a9dd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -38,6 +38,7 @@ dependencies { diff --git a/patches/server/0254-Allow-chests-to-be-placed-with-NBT-data.patch b/patches/server/0254-Allow-chests-to-be-placed-with-NBT-data.patch index 348aba5a8b..ee56f10dfd 100644 --- a/patches/server/0254-Allow-chests-to-be-placed-with-NBT-data.patch +++ b/patches/server/0254-Allow-chests-to-be-placed-with-NBT-data.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow chests to be placed with NBT data diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index cae548dbb5a3027e2de0bfbe38918ec7c2803e8e..77db59d433d4189f96b9da006898bded5edbb0ba 100644 +index c95c51605ae75cf340c7b0a88ae9146d8b31063e..877951fd07dece86fa59aee6f38a787722756688 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -386,6 +386,7 @@ public final class ItemStack { diff --git a/patches/server/0295-Implement-Brigadier-Mojang-API.patch b/patches/server/0295-Implement-Brigadier-Mojang-API.patch index 66521666d3..0743b58dcf 100644 --- a/patches/server/0295-Implement-Brigadier-Mojang-API.patch +++ b/patches/server/0295-Implement-Brigadier-Mojang-API.patch @@ -10,7 +10,7 @@ Adds CommandRegisteredEvent - Allows manipulating the CommandNode to add more children/metadata for the client diff --git a/build.gradle.kts b/build.gradle.kts -index b092384b34986b0826fa62530ffaeb0fcd80cdc6..5ecadb31e64964f5706cc4bf0f4fd98195388116 100644 +index 21a94671e77cd72dabcf76c26b12d3ccbe23a9dd..5cf067ce5010ff5fbbe010555b62dc57268e2a47 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,6 +14,7 @@ val alsoShade: Configuration by configurations.creating diff --git a/patches/server/0376-Implement-Player-Client-Options-API.patch b/patches/server/0376-Implement-Player-Client-Options-API.patch index f7a6f6ecec..3670427b7c 100644 --- a/patches/server/0376-Implement-Player-Client-Options-API.patch +++ b/patches/server/0376-Implement-Player-Client-Options-API.patch @@ -149,7 +149,7 @@ index 94cb3513aeef549da3626ff18c1ea0662252ecb9..f4a15de92c3af88624f337c36fadbea6 @Override diff --git a/src/test/java/io/papermc/paper/world/TranslationKeyTest.java b/src/test/java/io/papermc/paper/world/TranslationKeyTest.java new file mode 100644 -index 0000000000000000000000000000000000000000..825a98cf66d293ef90f33b2fe4a23f6bd9f100fa +index 0000000000000000000000000000000000000000..7f8b6462d2a1bbd39a870d2543bebc135f7eb45b --- /dev/null +++ b/src/test/java/io/papermc/paper/world/TranslationKeyTest.java @@ -0,0 +1,18 @@ @@ -167,7 +167,7 @@ index 0000000000000000000000000000000000000000..825a98cf66d293ef90f33b2fe4a23f6b + public void testChatVisibilityKeys() { + for (ClientOption.ChatVisibility chatVisibility : ClientOption.ChatVisibility.values()) { + if (chatVisibility == ClientOption.ChatVisibility.UNKNOWN) continue; -+ Assertions.assertEquals(chatVisibility + "'s translation key doesn't match", ChatVisiblity.valueOf(chatVisibility.name()).getKey(), chatVisibility.translationKey()); ++ Assertions.assertEquals(ChatVisiblity.valueOf(chatVisibility.name()).getKey(), chatVisibility.translationKey(), chatVisibility + "'s translation key doesn't match"); + } + } +} diff --git a/patches/server/0391-Deobfuscate-stacktraces-in-log-messages-crash-report.patch b/patches/server/0391-Deobfuscate-stacktraces-in-log-messages-crash-report.patch index bcd4ce7e97..efcc6a867b 100644 --- a/patches/server/0391-Deobfuscate-stacktraces-in-log-messages-crash-report.patch +++ b/patches/server/0391-Deobfuscate-stacktraces-in-log-messages-crash-report.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Deobfuscate stacktraces in log messages, crash reports, and diff --git a/build.gradle.kts b/build.gradle.kts -index 5ecadb31e64964f5706cc4bf0f4fd98195388116..c26ae39f0d78a4a2427681d1c8fc60c19374155e 100644 +index 5cf067ce5010ff5fbbe010555b62dc57268e2a47..200b9cce4636892a233221665284815c30facbfe 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -37,6 +37,7 @@ dependencies { @@ -17,7 +17,7 @@ index 5ecadb31e64964f5706cc4bf0f4fd98195388116..c26ae39f0d78a4a2427681d1c8fc60c1 runtimeOnly("org.xerial:sqlite-jdbc:3.43.0.0") runtimeOnly("com.mysql:mysql-connector-j:8.1.0") runtimeOnly("com.lmax:disruptor:3.4.4") // Paper -@@ -121,6 +122,18 @@ tasks.check { +@@ -127,6 +128,18 @@ tasks.check { } // Paper end @@ -35,7 +35,7 @@ index 5ecadb31e64964f5706cc4bf0f4fd98195388116..c26ae39f0d78a4a2427681d1c8fc60c1 + tasks.test { exclude("org/bukkit/craftbukkit/inventory/ItemStack*Test.class") - } + useJUnitPlatform() diff --git a/src/log4jPlugins/java/io/papermc/paper/logging/StacktraceDeobfuscatingRewritePolicy.java b/src/log4jPlugins/java/io/papermc/paper/logging/StacktraceDeobfuscatingRewritePolicy.java new file mode 100644 index 0000000000000000000000000000000000000000..66b6011ee3684695b2ab9292961c80bf2a420ee9 diff --git a/patches/server/0392-Implement-Mob-Goal-API.patch b/patches/server/0392-Implement-Mob-Goal-API.patch index 407479ef77..304b4ead69 100644 --- a/patches/server/0392-Implement-Mob-Goal-API.patch +++ b/patches/server/0392-Implement-Mob-Goal-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement Mob Goal API diff --git a/build.gradle.kts b/build.gradle.kts -index c26ae39f0d78a4a2427681d1c8fc60c19374155e..ace5cd8aa4fc2a555673b75adb910a1ede3f57fc 100644 +index 200b9cce4636892a233221665284815c30facbfe..a4c39e1302dff6ec43e84e3d04f234733b81a85b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -46,6 +46,7 @@ dependencies { diff --git a/patches/server/0431-Update-itemstack-legacy-name-and-lore.patch b/patches/server/0431-Update-itemstack-legacy-name-and-lore.patch index cf9a5df397..2c58b8b314 100644 --- a/patches/server/0431-Update-itemstack-legacy-name-and-lore.patch +++ b/patches/server/0431-Update-itemstack-legacy-name-and-lore.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Update itemstack legacy name and lore diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 77db59d433d4189f96b9da006898bded5edbb0ba..8aaaa67549a75b7404d2865a09474dc2b6cf18fe 100644 +index 877951fd07dece86fa59aee6f38a787722756688..abaafcff3f7a5e710319c93313a4ecf9874b7ef8 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -172,6 +172,44 @@ public final class ItemStack { diff --git a/patches/server/0456-PortalCreateEvent-needs-to-know-its-entity.patch b/patches/server/0456-PortalCreateEvent-needs-to-know-its-entity.patch index 70e5553f18..f8591215a4 100644 --- a/patches/server/0456-PortalCreateEvent-needs-to-know-its-entity.patch +++ b/patches/server/0456-PortalCreateEvent-needs-to-know-its-entity.patch @@ -5,7 +5,7 @@ Subject: [PATCH] PortalCreateEvent needs to know its entity diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 8aaaa67549a75b7404d2865a09474dc2b6cf18fe..58eb562aea9d3d19da0958ce9dcf0474f975e259 100644 +index abaafcff3f7a5e710319c93313a4ecf9874b7ef8..a9707ecebb175663acb0f7285c759d938c5dae8b 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -457,7 +457,7 @@ public final class ItemStack { diff --git a/patches/server/0458-Add-methods-to-get-translation-keys.patch b/patches/server/0458-Add-methods-to-get-translation-keys.patch index 354d56749b..cc9ea76953 100644 --- a/patches/server/0458-Add-methods-to-get-translation-keys.patch +++ b/patches/server/0458-Add-methods-to-get-translation-keys.patch @@ -41,7 +41,7 @@ index e8334e2264510f5101e80b4f130e7ae1442560d7..57decf4156f176ebcc988478c17856cb public net.minecraft.world.item.enchantment.Enchantment getHandle() { diff --git a/src/test/java/io/papermc/paper/world/TranslationKeyTest.java b/src/test/java/io/papermc/paper/world/TranslationKeyTest.java -index 825a98cf66d293ef90f33b2fe4a23f6bd9f100fa..8258a0bfff26a49935606b85b41bdb0b6a207aec 100644 +index 7f8b6462d2a1bbd39a870d2543bebc135f7eb45b..dbd1dc4453bd26fb6116b62f6ccbf69e92e09fc4 100644 --- a/src/test/java/io/papermc/paper/world/TranslationKeyTest.java +++ b/src/test/java/io/papermc/paper/world/TranslationKeyTest.java @@ -1,12 +1,27 @@ @@ -74,35 +74,35 @@ index 825a98cf66d293ef90f33b2fe4a23f6bd9f100fa..8258a0bfff26a49935606b85b41bdb0b @Test public void testChatVisibilityKeys() { @@ -15,4 +30,67 @@ public class TranslationKeyTest { - Assertions.assertEquals(chatVisibility + "'s translation key doesn't match", ChatVisiblity.valueOf(chatVisibility.name()).getKey(), chatVisibility.translationKey()); + Assertions.assertEquals(ChatVisiblity.valueOf(chatVisibility.name()).getKey(), chatVisibility.translationKey(), chatVisibility + "'s translation key doesn't match"); } } + + @Test + public void testDifficultyKeys() { + for (Difficulty bukkitDifficulty : Difficulty.values()) { -+ Assertions.assertEquals(bukkitDifficulty + "'s translation key doesn't match", ((TranslatableContents) net.minecraft.world.Difficulty.byId(bukkitDifficulty.ordinal()).getDisplayName().getContents()).getKey(), bukkitDifficulty.translationKey()); ++ Assertions.assertEquals(((TranslatableContents) net.minecraft.world.Difficulty.byId(bukkitDifficulty.ordinal()).getDisplayName().getContents()).getKey(), bukkitDifficulty.translationKey(), bukkitDifficulty + "'s translation key doesn't match"); + } + } + + @Test + public void testGameruleKeys() { + for (GameRule rule : GameRule.values()) { -+ Assertions.assertEquals(rule.getName() + "'s translation doesn't match", org.bukkit.craftbukkit.CraftWorld.getGameRulesNMS().get(rule.getName()).getDescriptionId(), rule.translationKey()); ++ Assertions.assertEquals(org.bukkit.craftbukkit.CraftWorld.getGameRulesNMS().get(rule.getName()).getDescriptionId(), rule.translationKey(), rule.getName() + "'s translation doesn't match"); + } + } + + @Test + public void testAttributeKeys() { + for (Attribute attribute : Attribute.values()) { -+ Assertions.assertEquals("translation key mismatch for " + attribute, org.bukkit.craftbukkit.attribute.CraftAttribute.bukkitToMinecraft(attribute).getDescriptionId(), attribute.translationKey()); ++ Assertions.assertEquals(org.bukkit.craftbukkit.attribute.CraftAttribute.bukkitToMinecraft(attribute).getDescriptionId(), attribute.translationKey(), "translation key mismatch for " + attribute); + } + } + + @Test + public void testFireworkEffectType() { + for (FireworkEffect.Type type : FireworkEffect.Type.values()) { -+ Assertions.assertEquals("translation key mismatch for " + type, net.minecraft.world.item.FireworkRocketItem.Shape.byId(org.bukkit.craftbukkit.inventory.CraftMetaFirework.getNBT(type)).getName(), org.bukkit.FireworkEffect.Type.NAMES.key(type)); ++ Assertions.assertEquals(net.minecraft.world.item.FireworkRocketItem.Shape.byId(org.bukkit.craftbukkit.inventory.CraftMetaFirework.getNBT(type)).getName(), org.bukkit.FireworkEffect.Type.NAMES.key(type), "translation key mismatch for " + type); + } + } + @@ -120,7 +120,7 @@ index 825a98cf66d293ef90f33b2fe4a23f6bd9f100fa..8258a0bfff26a49935606b85b41bdb0b + for (GameType nms : GameType.values()) { + GameMode bukkit = GameMode.getByValue(nms.getId()); + Assertions.assertNotNull(bukkit); -+ Assertions.assertEquals("translation key mismatch for " + bukkit, ((TranslatableContents) nms.getLongDisplayName().getContents()).getKey(), bukkit.translationKey()); ++ Assertions.assertEquals(((TranslatableContents) nms.getLongDisplayName().getContents()).getKey(), bukkit.translationKey(), "translation key mismatch for " + bukkit); + } + } + @@ -128,7 +128,7 @@ index 825a98cf66d293ef90f33b2fe4a23f6bd9f100fa..8258a0bfff26a49935606b85b41bdb0b + public void testBiome() { + for (Map.Entry, Biome> nms : AbstractTestingBase.BIOMES.entrySet()) { + org.bukkit.block.Biome bukkit = org.bukkit.block.Biome.valueOf(nms.getKey().location().getPath().toUpperCase()); -+ Assertions.assertEquals("translation key mismatch for " + bukkit, nms.getKey().location().toLanguageKey("biome"), bukkit.translationKey()); ++ Assertions.assertEquals(nms.getKey().location().toLanguageKey("biome"), bukkit.translationKey(), "translation key mismatch for " + bukkit); + } + } + @@ -137,7 +137,7 @@ index 825a98cf66d293ef90f33b2fe4a23f6bd9f100fa..8258a0bfff26a49935606b85b41bdb0b + for (final ResourceLocation nms : BuiltInRegistries.INSTRUMENT.keySet()) { + final MusicInstrument bukkit = MusicInstrument.getByKey(CraftNamespacedKey.fromMinecraft(nms)); + Assertions.assertNotNull(bukkit, "Missing bukkit instrument for " + nms); -+ Assertions.assertEquals("translation key mismatch for " + bukkit, nms.toLanguageKey("instrument"), bukkit.translationKey()); ++ Assertions.assertEquals(nms.toLanguageKey("instrument"), bukkit.translationKey(), "translation key mismatch for " + bukkit); + } + } } diff --git a/patches/server/0533-Add-StructuresLocateEvent.patch b/patches/server/0533-Add-StructuresLocateEvent.patch index 5add42e4c3..9ad52d9134 100644 --- a/patches/server/0533-Add-StructuresLocateEvent.patch +++ b/patches/server/0533-Add-StructuresLocateEvent.patch @@ -193,3 +193,15 @@ index 0000000000000000000000000000000000000000..cc24d5746b96d8ac352a3ed0a675a7b1 + System.setOut(out); + } +} +diff --git a/src/test/java/org/bukkit/PerRegistryTest.java b/src/test/java/org/bukkit/PerRegistryTest.java +index a5db5b190bf16571d329a653de01acdae8dc8cfa..9e553a8858750c494456f04abd7bffd1d257308c 100644 +--- a/src/test/java/org/bukkit/PerRegistryTest.java ++++ b/src/test/java/org/bukkit/PerRegistryTest.java +@@ -33,6 +33,7 @@ public class PerRegistryTest extends AbstractTestingBase { + if (!(object instanceof CraftRegistry registry)) { + continue; + } ++ if (object instanceof io.papermc.paper.world.structure.PaperConfiguredStructure.LegacyRegistry) continue; // Paper - skip + + data.add(Arguments.of(registry)); + } catch (ReflectiveOperationException e) { diff --git a/patches/server/0650-Added-EntityDamageItemEvent.patch b/patches/server/0650-Added-EntityDamageItemEvent.patch index 0a1a008cae..935084ef4b 100644 --- a/patches/server/0650-Added-EntityDamageItemEvent.patch +++ b/patches/server/0650-Added-EntityDamageItemEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Added EntityDamageItemEvent diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 58eb562aea9d3d19da0958ce9dcf0474f975e259..d6f833583c6ae915133b055768d7fcb97680a640 100644 +index a9707ecebb175663acb0f7285c759d938c5dae8b..9eb6ad597a0e2605eae367038d7541fe538f9a86 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -601,7 +601,7 @@ public final class ItemStack { diff --git a/patches/server/0693-Use-Velocity-compression-and-cipher-natives.patch b/patches/server/0693-Use-Velocity-compression-and-cipher-natives.patch index 012817f2e2..e24e92a387 100644 --- a/patches/server/0693-Use-Velocity-compression-and-cipher-natives.patch +++ b/patches/server/0693-Use-Velocity-compression-and-cipher-natives.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Use Velocity compression and cipher natives diff --git a/build.gradle.kts b/build.gradle.kts -index ace5cd8aa4fc2a555673b75adb910a1ede3f57fc..98bed6bb990ecb40be0e2b74ad40f84ab0ba3705 100644 +index a4c39e1302dff6ec43e84e3d04f234733b81a85b..a46a627d9fb07fa43c95ca9eb48ba87302f66173 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -41,6 +41,11 @@ dependencies { diff --git a/patches/server/0764-Fix-cancelled-powdered-snow-bucket-placement.patch b/patches/server/0764-Fix-cancelled-powdered-snow-bucket-placement.patch index bab29517f3..6c443ed789 100644 --- a/patches/server/0764-Fix-cancelled-powdered-snow-bucket-placement.patch +++ b/patches/server/0764-Fix-cancelled-powdered-snow-bucket-placement.patch @@ -20,7 +20,7 @@ index e581dc10f3c805f7f8b6e4c842092609e7e1a0f8..b0204af850ee182773ad458208cccd94 } return InteractionResult.FAIL; diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index d6f833583c6ae915133b055768d7fcb97680a640..710369e06f66c033dbfa551b0c00362009938e44 100644 +index 9eb6ad597a0e2605eae367038d7541fe538f9a86..e615c8b5c1142f547af77dafb33a8772ab5e13c3 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -358,7 +358,7 @@ public final class ItemStack { diff --git a/patches/server/0800-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch b/patches/server/0800-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch index a6543b31f3..676f145bb4 100644 --- a/patches/server/0800-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch +++ b/patches/server/0800-Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add pre-unbreaking amount to PlayerItemDamageEvent diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 710369e06f66c033dbfa551b0c00362009938e44..fe153047d3198dc5c86396f5ea595fcc572496af 100644 +index e615c8b5c1142f547af77dafb33a8772ab5e13c3..f83c60f94d6eeec50aefa59a39f6230953fe5b7e 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -617,10 +617,11 @@ public final class ItemStack { diff --git a/patches/server/0811-Add-support-for-Proxy-Protocol.patch b/patches/server/0811-Add-support-for-Proxy-Protocol.patch index b7340ae196..99cf00a610 100644 --- a/patches/server/0811-Add-support-for-Proxy-Protocol.patch +++ b/patches/server/0811-Add-support-for-Proxy-Protocol.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add support for Proxy Protocol diff --git a/build.gradle.kts b/build.gradle.kts -index 98bed6bb990ecb40be0e2b74ad40f84ab0ba3705..f1ade7432ae6fae1bceb90f975448ab43543942f 100644 +index a46a627d9fb07fa43c95ca9eb48ba87302f66173..683159586641dd9aa42ae96fa51602469755723f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -30,6 +30,7 @@ dependencies { diff --git a/patches/server/0927-Optimize-Hoppers.patch b/patches/server/0927-Optimize-Hoppers.patch index 680623bb6b..f74f8f0f52 100644 --- a/patches/server/0927-Optimize-Hoppers.patch +++ b/patches/server/0927-Optimize-Hoppers.patch @@ -25,7 +25,7 @@ index b5ffa564cf6389b6af281ecf12b8daa139861608..0dbfe7e9c57e0ff52d30ccce3ae3a6af this.profiler.push(() -> { diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index fe153047d3198dc5c86396f5ea595fcc572496af..f9b9cb35a985108794588a1a0a9ca2556cc036b6 100644 +index f83c60f94d6eeec50aefa59a39f6230953fe5b7e..e0e80f94a005fb21cce76059f66cf4c7ee0f2bfc 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -728,10 +728,16 @@ public final class ItemStack { diff --git a/patches/server/0928-Fix-beehives-generating-from-using-bonemeal.patch b/patches/server/0928-Fix-beehives-generating-from-using-bonemeal.patch index bcfd448d92..47c1c7728e 100644 --- a/patches/server/0928-Fix-beehives-generating-from-using-bonemeal.patch +++ b/patches/server/0928-Fix-beehives-generating-from-using-bonemeal.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix beehives generating from using bonemeal diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index f9b9cb35a985108794588a1a0a9ca2556cc036b6..08464c7f114a04169c9ddeceef936749952770e6 100644 +index e0e80f94a005fb21cce76059f66cf4c7ee0f2bfc..c73b57ffd622ccc2e6c570cf874ed118108b899b 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -401,6 +401,7 @@ public final class ItemStack { diff --git a/patches/server/0947-Fix-block-place-logic.patch b/patches/server/0947-Fix-block-place-logic.patch index 6dbde32780..d08e5291bc 100644 --- a/patches/server/0947-Fix-block-place-logic.patch +++ b/patches/server/0947-Fix-block-place-logic.patch @@ -22,7 +22,7 @@ index b0204af850ee182773ad458208cccd946ad148d5..ebee8de2ed831755b6fd154f6cc77ac9 if ((entityhuman == null || !entityhuman.getAbilities().instabuild) && itemstack != ItemStack.EMPTY) { // CraftBukkit itemstack.shrink(1); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 08464c7f114a04169c9ddeceef936749952770e6..62fc1b110ec319bb91aa0639b18aa354a306a9ca 100644 +index c73b57ffd622ccc2e6c570cf874ed118108b899b..efa73faab21c301a99cfe58c3d822d961ea4d2a5 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -472,13 +472,7 @@ public final class ItemStack { diff --git a/patches/server/0948-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch b/patches/server/0948-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch index 5508e21a8c..da9489efd3 100644 --- a/patches/server/0948-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch +++ b/patches/server/0948-Fix-spigot-sound-playing-for-BlockItem-ItemStacks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix spigot sound playing for BlockItem ItemStacks diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 62fc1b110ec319bb91aa0639b18aa354a306a9ca..fcd53d9c7a0a71624e68eb47e947fa783df4829f 100644 +index efa73faab21c301a99cfe58c3d822d961ea4d2a5..6e2c62336537fba187fbbb47c1f52f935683c0d5 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -523,7 +523,11 @@ public final class ItemStack { diff --git a/patches/server/0958-Add-event-for-player-editing-sign.patch b/patches/server/0958-Add-event-for-player-editing-sign.patch index c0a6bfc43c..d4ab94dc9f 100644 --- a/patches/server/0958-Add-event-for-player-editing-sign.patch +++ b/patches/server/0958-Add-event-for-player-editing-sign.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add event for player editing sign diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index fcd53d9c7a0a71624e68eb47e947fa783df4829f..7bb47643e748f57a51c613d0a2ee8d05e1fe1798 100644 +index 6e2c62336537fba187fbbb47c1f52f935683c0d5..21b3be35da5636fa726f36f569142de5d16ac1f3 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -502,7 +502,7 @@ public final class ItemStack { diff --git a/patches/server/0982-Only-capture-actual-tree-growth.patch b/patches/server/0982-Only-capture-actual-tree-growth.patch index 2880ab70b9..8686b1f9de 100644 --- a/patches/server/0982-Only-capture-actual-tree-growth.patch +++ b/patches/server/0982-Only-capture-actual-tree-growth.patch @@ -17,7 +17,7 @@ index e9b748a81ec223a701b56d2dc890c9eb223d8474..a0c7c6208314d981e8577ad69ef1c519 } } diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 7bb47643e748f57a51c613d0a2ee8d05e1fe1798..16f087adbf94b8fd6726ffd300b103dd709ad406 100644 +index 21b3be35da5636fa726f36f569142de5d16ac1f3..4697df75fdee2023c41260bed211e3e3d90d2b9b 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java @@ -401,6 +401,7 @@ public final class ItemStack { diff --git a/patches/server/0995-Properly-handle-BlockBreakEvent-isDropItems.patch b/patches/server/0995-Properly-handle-BlockBreakEvent-isDropItems.patch index befc573af4..be4fc3d3c2 100644 --- a/patches/server/0995-Properly-handle-BlockBreakEvent-isDropItems.patch +++ b/patches/server/0995-Properly-handle-BlockBreakEvent-isDropItems.patch @@ -108,10 +108,10 @@ index 845fa7e13e4a3416b504d0a4c5d5e0454d96b8ed..07157822659288e76b2fba34db8d5d56 diff --git a/src/test/java/io/papermc/paper/world/block/BlockPlayerDestroyOverrideTest.java b/src/test/java/io/papermc/paper/world/block/BlockPlayerDestroyOverrideTest.java new file mode 100644 -index 0000000000000000000000000000000000000000..b39b12cb6ff3caee5946b1c1b7c510f388d28d19 +index 0000000000000000000000000000000000000000..7c435f7079b429873f33d7bade82eca0c6b45842 --- /dev/null +++ b/src/test/java/io/papermc/paper/world/block/BlockPlayerDestroyOverrideTest.java -@@ -0,0 +1,48 @@ +@@ -0,0 +1,47 @@ +package io.papermc.paper.world.block; + +import io.github.classgraph.ClassGraph; @@ -131,7 +131,6 @@ index 0000000000000000000000000000000000000000..b39b12cb6ff3caee5946b1c1b7c510f3 + +public class BlockPlayerDestroyOverrideTest extends AbstractTestingBase { + -+ @MethodSource("parameters") + public static Stream parameters() { + final List classInfo = new ArrayList<>(); + try (ScanResult scanResult = new ClassGraph() @@ -157,6 +156,6 @@ index 0000000000000000000000000000000000000000..b39b12cb6ff3caee5946b1c1b7c510f3 + assertEquals(1, playerDestroy.size(), overridesPlayerDestroy.getName() + " has multiple playerDestroy methods"); + final MethodInfo next = playerDestroy.iterator().next(); + final MethodParameterInfo[] parameterInfo = next.getParameterInfo(); -+ assertEquals(overridesPlayerDestroy.getName() + " needs to change its override of playerDestroy", "boolean", parameterInfo[parameterInfo.length - 1].getTypeDescriptor().toStringWithSimpleNames()); ++ assertEquals("boolean", parameterInfo[parameterInfo.length - 1].getTypeDescriptor().toStringWithSimpleNames(), overridesPlayerDestroy.getName() + " needs to change its override of playerDestroy"); + } +} diff --git a/patches/server/1019-Fix-silent-equipment-change-for-mobs.patch b/patches/server/1019-Fix-silent-equipment-change-for-mobs.patch index e412f4baa9..ffcc2b8e38 100644 --- a/patches/server/1019-Fix-silent-equipment-change-for-mobs.patch +++ b/patches/server/1019-Fix-silent-equipment-change-for-mobs.patch @@ -64,10 +64,10 @@ index 87cae8ed22a2428a1dda8f2a4510e45fbc31eab5..ea8a0961190e9aafda4fed6fecd85097 } diff --git a/src/test/java/io/papermc/paper/entity/EntitySetItemSlotSilentOverrideTest.java b/src/test/java/io/papermc/paper/entity/EntitySetItemSlotSilentOverrideTest.java new file mode 100644 -index 0000000000000000000000000000000000000000..7b40accf09e4accc80e7e4367035765212c70056 +index 0000000000000000000000000000000000000000..81947843d1f2f7dc6f59d7b52f327d60b17d0dcc --- /dev/null +++ b/src/test/java/io/papermc/paper/entity/EntitySetItemSlotSilentOverrideTest.java -@@ -0,0 +1,52 @@ +@@ -0,0 +1,51 @@ +package io.papermc.paper.entity; + +import io.github.classgraph.ClassGraph; @@ -87,7 +87,6 @@ index 0000000000000000000000000000000000000000..7b40accf09e4accc80e7e43670357652 + +public class EntitySetItemSlotSilentOverrideTest extends AbstractTestingBase { + -+ @MethodSource("parameters") + public static Stream parameters() { + final List classInfo = new ArrayList<>(); + try (ScanResult scanResult = new ClassGraph()