diff --git a/patches/api/0009-Paper-Plugins.patch b/patches/api/0009-Paper-Plugins.patch index 4c0bd33025..6f7e6ea926 100644 --- a/patches/api/0009-Paper-Plugins.patch +++ b/patches/api/0009-Paper-Plugins.patch @@ -1584,7 +1584,7 @@ index ae3e68562c29992fab627428db3ff0006d8216f9..47153dee66782a00b980ecf15e8774ab + // Paper end } diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java -index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4333f8608 100644 +index 34830d2815d331a1b611f22eca08f53d815ea08a..fb4cb36391e69fd997300b952b64fbd73ae9d675 100644 --- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java +++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java @@ -43,6 +43,8 @@ import org.jetbrains.annotations.Nullable; @@ -1626,7 +1626,15 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 Preconditions.checkArgument(directory != null, "Directory cannot be null"); Preconditions.checkArgument(directory.isDirectory(), "Directory must be a directory"); -@@ -389,6 +399,15 @@ public final class SimplePluginManager implements PluginManager { +@@ -129,6 +139,7 @@ public final class SimplePluginManager implements PluginManager { + */ + @NotNull + public Plugin[] loadPlugins(@NotNull File[] files) { ++ // TODO Replace with Paper plugin loader + Preconditions.checkArgument(files != null, "File list cannot be null"); + + List result = new ArrayList(); +@@ -389,6 +400,15 @@ public final class SimplePluginManager implements PluginManager { @Nullable public synchronized Plugin loadPlugin(@NotNull File file) throws InvalidPluginException, UnknownDependencyException { Preconditions.checkArgument(file != null, "File cannot be null"); @@ -1642,7 +1650,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 checkUpdate(file); -@@ -439,12 +458,14 @@ public final class SimplePluginManager implements PluginManager { +@@ -439,12 +459,14 @@ public final class SimplePluginManager implements PluginManager { @Override @Nullable public synchronized Plugin getPlugin(@NotNull String name) { @@ -1657,7 +1665,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 return plugins.toArray(new Plugin[plugins.size()]); } -@@ -458,6 +479,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -458,6 +480,7 @@ public final class SimplePluginManager implements PluginManager { */ @Override public boolean isPluginEnabled(@NotNull String name) { @@ -1665,7 +1673,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 Plugin plugin = getPlugin(name); return isPluginEnabled(plugin); -@@ -471,6 +493,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -471,6 +494,7 @@ public final class SimplePluginManager implements PluginManager { */ @Override public boolean isPluginEnabled(@Nullable Plugin plugin) { @@ -1673,7 +1681,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 if ((plugin != null) && (plugins.contains(plugin))) { return plugin.isEnabled(); } else { -@@ -480,6 +503,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -480,6 +504,7 @@ public final class SimplePluginManager implements PluginManager { @Override public void enablePlugin(@NotNull final Plugin plugin) { @@ -1681,7 +1689,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 if (!plugin.isEnabled()) { List pluginCommands = PluginCommandYamlParser.parse(plugin); -@@ -499,6 +523,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -499,6 +524,7 @@ public final class SimplePluginManager implements PluginManager { @Override public void disablePlugins() { @@ -1689,7 +1697,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 Plugin[] plugins = getPlugins(); for (int i = plugins.length - 1; i >= 0; i--) { disablePlugin(plugins[i]); -@@ -507,6 +532,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -507,6 +533,7 @@ public final class SimplePluginManager implements PluginManager { @Override public void disablePlugin(@NotNull final Plugin plugin) { @@ -1697,7 +1705,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 if (plugin.isEnabled()) { try { plugin.getPluginLoader().disablePlugin(plugin); -@@ -551,6 +577,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -551,6 +578,7 @@ public final class SimplePluginManager implements PluginManager { @Override public void clearPlugins() { @@ -1705,7 +1713,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 synchronized (this) { disablePlugins(); plugins.clear(); -@@ -571,6 +598,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -571,6 +599,7 @@ public final class SimplePluginManager implements PluginManager { */ @Override public void callEvent(@NotNull Event event) { @@ -1713,7 +1721,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 if (event.isAsynchronous()) { if (Thread.holdsLock(this)) { throw new IllegalStateException(event.getEventName() + " cannot be triggered asynchronously from inside synchronized code."); -@@ -619,6 +647,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -619,6 +648,7 @@ public final class SimplePluginManager implements PluginManager { @Override public void registerEvents(@NotNull Listener listener, @NotNull Plugin plugin) { @@ -1721,7 +1729,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 if (!plugin.isEnabled()) { throw new IllegalPluginAccessException("Plugin attempted to register " + listener + " while not enabled"); } -@@ -652,6 +681,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -652,6 +682,7 @@ public final class SimplePluginManager implements PluginManager { Preconditions.checkArgument(priority != null, "Priority cannot be null"); Preconditions.checkArgument(executor != null, "Executor cannot be null"); Preconditions.checkArgument(plugin != null, "Plugin cannot be null"); @@ -1729,7 +1737,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 if (!plugin.isEnabled()) { throw new IllegalPluginAccessException("Plugin attempted to register " + event + " while not enabled"); -@@ -699,16 +729,19 @@ public final class SimplePluginManager implements PluginManager { +@@ -699,16 +730,19 @@ public final class SimplePluginManager implements PluginManager { @Override @Nullable public Permission getPermission(@NotNull String name) { @@ -1749,7 +1757,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 String name = perm.getName().toLowerCase(java.util.Locale.ENGLISH); if (permissions.containsKey(name)) { -@@ -722,21 +755,25 @@ public final class SimplePluginManager implements PluginManager { +@@ -722,21 +756,25 @@ public final class SimplePluginManager implements PluginManager { @Override @NotNull public Set getDefaultPermissions(boolean op) { @@ -1775,7 +1783,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 if (perm != null && permissions.containsKey(perm.getName().toLowerCase(java.util.Locale.ENGLISH))) { defaultPerms.get(true).remove(perm); defaultPerms.get(false).remove(perm); -@@ -776,6 +813,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -776,6 +814,7 @@ public final class SimplePluginManager implements PluginManager { @Override public void subscribeToPermission(@NotNull String permission, @NotNull Permissible permissible) { @@ -1783,7 +1791,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 String name = permission.toLowerCase(java.util.Locale.ENGLISH); Map map = permSubs.get(name); -@@ -789,6 +827,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -789,6 +828,7 @@ public final class SimplePluginManager implements PluginManager { @Override public void unsubscribeFromPermission(@NotNull String permission, @NotNull Permissible permissible) { @@ -1791,7 +1799,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 String name = permission.toLowerCase(java.util.Locale.ENGLISH); Map map = permSubs.get(name); -@@ -804,6 +843,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -804,6 +844,7 @@ public final class SimplePluginManager implements PluginManager { @Override @NotNull public Set getPermissionSubscriptions(@NotNull String permission) { @@ -1799,7 +1807,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 String name = permission.toLowerCase(java.util.Locale.ENGLISH); Map map = permSubs.get(name); -@@ -816,6 +856,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -816,6 +857,7 @@ public final class SimplePluginManager implements PluginManager { @Override public void subscribeToDefaultPerms(boolean op, @NotNull Permissible permissible) { @@ -1807,7 +1815,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 Map map = defSubs.get(op); if (map == null) { -@@ -828,6 +869,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -828,6 +870,7 @@ public final class SimplePluginManager implements PluginManager { @Override public void unsubscribeFromDefaultPerms(boolean op, @NotNull Permissible permissible) { @@ -1815,7 +1823,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 Map map = defSubs.get(op); if (map != null) { -@@ -842,6 +884,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -842,6 +885,7 @@ public final class SimplePluginManager implements PluginManager { @Override @NotNull public Set getDefaultPermSubscriptions(boolean op) { @@ -1823,7 +1831,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 Map map = defSubs.get(op); if (map == null) { -@@ -854,6 +897,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -854,6 +898,7 @@ public final class SimplePluginManager implements PluginManager { @Override @NotNull public Set getPermissions() { @@ -1831,7 +1839,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 return new HashSet(permissions.values()); } -@@ -877,6 +921,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -877,6 +922,7 @@ public final class SimplePluginManager implements PluginManager { @Override public boolean useTimings() { @@ -1839,7 +1847,7 @@ index 34830d2815d331a1b611f22eca08f53d815ea08a..40794a8f60f7ba139e69c38e4fcbb7f4 return useTimings; } -@@ -888,4 +933,28 @@ public final class SimplePluginManager implements PluginManager { +@@ -888,4 +934,28 @@ public final class SimplePluginManager implements PluginManager { public void useTimings(boolean use) { useTimings = use; } diff --git a/patches/api/0011-Timings-v2.patch b/patches/api/0011-Timings-v2.patch index 7c1d573059..5b729d09d2 100644 --- a/patches/api/0011-Timings-v2.patch +++ b/patches/api/0011-Timings-v2.patch @@ -3479,10 +3479,10 @@ index 4e9ba039669c7059180f5776ee2f7188f2dd01b5..5b526d602057ab70b4a058142e01a019 @NotNull diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java -index 40794a8f60f7ba139e69c38e4fcbb7f4333f8608..c75fd7ce01ca11535563ad7ebe1944eb61e65600 100644 +index fb4cb36391e69fd997300b952b64fbd73ae9d675..3465bd660999caa53582e9d56a4e93ec7701a1de 100644 --- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java +++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java -@@ -379,7 +379,6 @@ public final class SimplePluginManager implements PluginManager { +@@ -380,7 +380,6 @@ public final class SimplePluginManager implements PluginManager { } } @@ -3490,7 +3490,7 @@ index 40794a8f60f7ba139e69c38e4fcbb7f4333f8608..c75fd7ce01ca11535563ad7ebe1944eb return result.toArray(new Plugin[result.size()]); } -@@ -427,9 +426,9 @@ public final class SimplePluginManager implements PluginManager { +@@ -428,9 +427,9 @@ public final class SimplePluginManager implements PluginManager { if (result != null) { plugins.add(result); @@ -3502,7 +3502,7 @@ index 40794a8f60f7ba139e69c38e4fcbb7f4333f8608..c75fd7ce01ca11535563ad7ebe1944eb } } -@@ -459,7 +458,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -460,7 +459,7 @@ public final class SimplePluginManager implements PluginManager { @Nullable public synchronized Plugin getPlugin(@NotNull String name) { if (true) {return this.paperPluginManager.getPlugin(name);} // Paper @@ -3511,7 +3511,7 @@ index 40794a8f60f7ba139e69c38e4fcbb7f4333f8608..c75fd7ce01ca11535563ad7ebe1944eb } @Override -@@ -687,7 +686,8 @@ public final class SimplePluginManager implements PluginManager { +@@ -688,7 +687,8 @@ public final class SimplePluginManager implements PluginManager { throw new IllegalPluginAccessException("Plugin attempted to register " + event + " while not enabled"); } @@ -3521,7 +3521,7 @@ index 40794a8f60f7ba139e69c38e4fcbb7f4333f8608..c75fd7ce01ca11535563ad7ebe1944eb getEventListeners(event).register(new TimedRegisteredListener(listener, executor, priority, plugin, ignoreCancelled)); } else { getEventListeners(event).register(new RegisteredListener(listener, executor, priority, plugin, ignoreCancelled)); -@@ -922,7 +922,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -923,7 +923,7 @@ public final class SimplePluginManager implements PluginManager { @Override public boolean useTimings() { if (true) {return this.paperPluginManager.useTimings();} // Paper @@ -3530,7 +3530,7 @@ index 40794a8f60f7ba139e69c38e4fcbb7f4333f8608..c75fd7ce01ca11535563ad7ebe1944eb } /** -@@ -931,7 +931,7 @@ public final class SimplePluginManager implements PluginManager { +@@ -932,7 +932,7 @@ public final class SimplePluginManager implements PluginManager { * @param use True if per event timing code should be used */ public void useTimings(boolean use) { diff --git a/patches/api/0012-Add-command-line-option-to-load-extra-plugin-jars-no.patch b/patches/api/0012-Add-command-line-option-to-load-extra-plugin-jars-no.patch index 6e7c583872..bffce5b5f9 100644 --- a/patches/api/0012-Add-command-line-option-to-load-extra-plugin-jars-no.patch +++ b/patches/api/0012-Add-command-line-option-to-load-extra-plugin-jars-no.patch @@ -55,7 +55,7 @@ index 77f8b0889cd7039bf041fc052fba33b60aa77e17..09012ce27344c60730b9c5fcde85712a * Used for all administrative messages, such as an operator using a * command. diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java -index c75fd7ce01ca11535563ad7ebe1944eb61e65600..f896cfb30b967b9c21ee94893534201123e6ec72 100644 +index 3465bd660999caa53582e9d56a4e93ec7701a1de..ca539930905531a4ce079529c4d456bcb6fc9e8c 100644 --- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java +++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java @@ -116,9 +116,22 @@ public final class SimplePluginManager implements PluginManager { diff --git a/patches/api/0023-Add-exception-reporting-event.patch b/patches/api/0023-Add-exception-reporting-event.patch index d9e743cbd2..3eb1760e0e 100644 --- a/patches/api/0023-Add-exception-reporting-event.patch +++ b/patches/api/0023-Add-exception-reporting-event.patch @@ -496,10 +496,10 @@ index 4205649948a9e2a72f64c3f007112245abac6d50..b3b32ce429edbf1ed040354dbe28ab86 } diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java -index f896cfb30b967b9c21ee94893534201123e6ec72..2ff417f91492a441085ac1b7ddd248726f05de0a 100644 +index ca539930905531a4ce079529c4d456bcb6fc9e8c..07a9c9e254188c251165ca84c8e961fccda01175 100644 --- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java +++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java -@@ -526,7 +526,8 @@ public final class SimplePluginManager implements PluginManager { +@@ -527,7 +527,8 @@ public final class SimplePluginManager implements PluginManager { try { plugin.getPluginLoader().enablePlugin(plugin); } catch (Throwable ex) { @@ -509,7 +509,7 @@ index f896cfb30b967b9c21ee94893534201123e6ec72..2ff417f91492a441085ac1b7ddd24872 } HandlerList.bakeAll(); -@@ -549,32 +550,37 @@ public final class SimplePluginManager implements PluginManager { +@@ -550,32 +551,37 @@ public final class SimplePluginManager implements PluginManager { try { plugin.getPluginLoader().disablePlugin(plugin); } catch (Throwable ex) { @@ -552,7 +552,7 @@ index f896cfb30b967b9c21ee94893534201123e6ec72..2ff417f91492a441085ac1b7ddd24872 } try { -@@ -587,6 +593,13 @@ public final class SimplePluginManager implements PluginManager { +@@ -588,6 +594,13 @@ public final class SimplePluginManager implements PluginManager { } } @@ -566,7 +566,7 @@ index f896cfb30b967b9c21ee94893534201123e6ec72..2ff417f91492a441085ac1b7ddd24872 @Override public void clearPlugins() { if (true) {this.paperPluginManager.clearPlugins(); return;} // Paper -@@ -652,7 +665,13 @@ public final class SimplePluginManager implements PluginManager { +@@ -653,7 +666,13 @@ public final class SimplePluginManager implements PluginManager { )); } } catch (Throwable ex) { diff --git a/patches/server/0001-Setup-Gradle-project.patch b/patches/server/0001-Setup-Gradle-project.patch index a140c8cb77..c994b7a282 100644 --- a/patches/server/0001-Setup-Gradle-project.patch +++ b/patches/server/0001-Setup-Gradle-project.patch @@ -28,10 +28,10 @@ index 37dab9e868dbfb019c271a547d975a48ad1cb571..3811c0d849a3eb028ed1a6b7a2d4747f +/.factorypath diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 -index 0000000000000000000000000000000000000000..8116ef8a1d098f0fe4fab661f913132ce3ec4ae9 +index 0000000000000000000000000000000000000000..4ceb1ff4349ce60b418a2cb1140f2612139ccb5d --- /dev/null +++ b/build.gradle.kts -@@ -0,0 +1,141 @@ +@@ -0,0 +1,124 @@ +import io.papermc.paperweight.util.* + +plugins { @@ -87,28 +87,11 @@ index 0000000000000000000000000000000000000000..8116ef8a1d098f0fe4fab661f913132c + +publishing { + publications.create("maven") { -+ artifact(tasks.shadowJar) -+ } -+} -+ -+relocation { -+ // Order matters here - e.g. craftbukkit proper must be relocated before any of the libs are relocated into the cb package -+ relocate("org.bukkit.craftbukkit" to "org.bukkit.craftbukkit.v$craftbukkitPackageVersion") { -+ exclude("org.bukkit.craftbukkit.Main*") + } +} + +tasks.shadowJar { + configurations = listOf(project.configurations.vanillaServer.get()) -+ archiveClassifier.set("mojang-mapped") -+ -+ for (relocation in relocation.relocations.get()) { -+ relocate(relocation.fromPackage, relocation.toPackage) { -+ for (exclude in relocation.excludes) { -+ exclude(exclude) -+ } -+ } -+ } +} + +tasks.test { diff --git a/patches/server/0003-Build-system-changes.patch b/patches/server/0003-Build-system-changes.patch index 51692ff801..3df6b48aec 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 8116ef8a1d098f0fe4fab661f913132ce3ec4ae9..2905c7273ed4d62a7f1bc7eab9ae919ee6c012de 100644 +index 4ceb1ff4349ce60b418a2cb1140f2612139ccb5d..6dc799cc5cad69e37988b175e9768fa696ad7814 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,9 +9,7 @@ plugins { @@ -41,8 +41,8 @@ index 8116ef8a1d098f0fe4fab661f913132ce3ec4ae9..2905c7273ed4d62a7f1bc7eab9ae919e ) for (tld in setOf("net", "com", "org")) { attributes("$tld/bukkit", "Sealed" to true) -@@ -77,6 +79,17 @@ tasks.shadowJar { - } +@@ -60,6 +62,17 @@ tasks.shadowJar { + configurations = listOf(project.configurations.vanillaServer.get()) } +// Paper start @@ -59,7 +59,7 @@ index 8116ef8a1d098f0fe4fab661f913132ce3ec4ae9..2905c7273ed4d62a7f1bc7eab9ae919e tasks.test { exclude("org/bukkit/craftbukkit/inventory/ItemStack*Test.class") useJUnitPlatform() -@@ -138,4 +151,5 @@ tasks.registerRunTask("runReobf") { +@@ -121,4 +134,5 @@ tasks.registerRunTask("runReobf") { tasks.registerRunTask("runDev") { description = "Spin up a non-relocated Mojang-mapped test server" classpath(sourceSets.main.map { it.runtimeClasspath }) diff --git a/patches/server/0004-Test-changes.patch b/patches/server/0004-Test-changes.patch index 766ccf2327..6e69da97d5 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 2905c7273ed4d62a7f1bc7eab9ae919ee6c012de..e5f1c91937af872109e478b99a6037332994e717 100644 +index 6dc799cc5cad69e37988b175e9768fa696ad7814..cba10082ca1da974cf3f8353b673f0565afa70ff 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -23,6 +23,7 @@ dependencies { @@ -28,7 +28,7 @@ index 2905c7273ed4d62a7f1bc7eab9ae919ee6c012de..e5f1c91937af872109e478b99a603733 + publishing { publications.create("maven") { - artifact(tasks.shadowJar) + } diff --git a/src/test/java/io/papermc/paper/registry/RegistryKeyTest.java b/src/test/java/io/papermc/paper/registry/RegistryKeyTest.java new file mode 100644 index 0000000000000000000000000000000000000000..e070aa1bb69859224493d958621389ee757f8752 diff --git a/patches/server/0005-Paper-config-files.patch b/patches/server/0005-Paper-config-files.patch index 8db8a41683..d39d462734 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 e5f1c91937af872109e478b99a6037332994e717..2fb082175529e52604d7e2f4a272fc58d0ec2eb1 100644 +index cba10082ca1da974cf3f8353b673f0565afa70ff..62c2aef1c2cce98f4f805bdd96792654af6f5935 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -11,6 +11,7 @@ dependencies { diff --git a/patches/unapplied/server/0011-Use-TerminalConsoleAppender-for-console-improvements.patch b/patches/server/0011-Use-TerminalConsoleAppender-for-console-improvements.patch similarity index 91% rename from patches/unapplied/server/0011-Use-TerminalConsoleAppender-for-console-improvements.patch rename to patches/server/0011-Use-TerminalConsoleAppender-for-console-improvements.patch index a37c6c49b1..d4e3761c9e 100644 --- a/patches/unapplied/server/0011-Use-TerminalConsoleAppender-for-console-improvements.patch +++ b/patches/server/0011-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 8332781de54d73cb5803828e98882a731daed81f..cadb6a2cae98a8df97c392bfbd5a1440bccd16f4 100644 +index 62c2aef1c2cce98f4f805bdd96792654af6f5935..bc4af2e667603d31dfbefc12e42e2300e389b65f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,9 +6,30 @@ plugins { @@ -57,18 +57,18 @@ index 8332781de54d73cb5803828e98882a731daed81f..cadb6a2cae98a8df97c392bfbd5a1440 + runtimeOnly(log4jPlugins.output) + alsoShade(log4jPlugins.output) + // Paper end - implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion + implementation("org.apache.logging.log4j:log4j-iostreams:2.22.1") // Paper - remove exclusion implementation("org.ow2.asm:asm-commons:9.7") implementation("org.spongepowered:configurate-yaml:4.2.0-SNAPSHOT") // Paper - config files -@@ -75,7 +96,7 @@ relocation { +@@ -67,7 +88,7 @@ publishing { } tasks.shadowJar { - configurations = listOf(project.configurations.vanillaServer.get()) -+ configurations = listOf(project.configurations.vanillaServer.get(), alsoShade) - archiveClassifier.set("mojang-mapped") ++ configurations = listOf(project.configurations.vanillaServer.get(), alsoShade) // Paper + } - for (relocation in relocation.relocations.get()) { + // Paper start diff --git a/src/log4jPlugins/java/io/papermc/paper/console/StripANSIConverter.java b/src/log4jPlugins/java/io/papermc/paper/console/StripANSIConverter.java new file mode 100644 index 0000000000000000000000000000000000000000..91547f6e6fe90006713beb2818da634304bdd236 @@ -250,10 +250,10 @@ index 8323f135d6bf2e1f12525e05094ffa3f2420e7e1..a143ea1e58464a3122fbd8ccafe417bd } } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index fa1a6c2f1c11506243cfc61b519bef578e5627fc..7e4fd9fa173b24261b88fb5e898c905721e69dca 100644 +index 555dc35fcc0e24b93eb310f11cd924a43d48b21a..7b5d3fac1b5f4d22340a620a5edd5a8fba6be584 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -155,7 +155,7 @@ import org.slf4j.Logger; +@@ -148,7 +148,7 @@ import org.slf4j.Logger; import com.mojang.serialization.Dynamic; import com.mojang.serialization.Lifecycle; import java.util.Random; @@ -262,15 +262,15 @@ index fa1a6c2f1c11506243cfc61b519bef578e5627fc..7e4fd9fa173b24261b88fb5e898c9057 import joptsimple.OptionSet; import net.minecraft.nbt.NbtException; import net.minecraft.nbt.ReportedNbtException; -@@ -284,7 +284,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop processQueue = new java.util.concurrent.ConcurrentLinkedQueue(); public int autosavePeriod; -@@ -371,7 +370,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { // Trim to filter lines which are just spaces @@ -330,7 +330,7 @@ index c8163a8645248765c0fa6c15bc8c37facdc70dc7..8edf2f049aa077792bfb507384f4cf5b } // CraftBukkit end } -@@ -137,6 +140,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -147,6 +150,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface DedicatedServer.LOGGER.error("Exception handling console input", ioexception); } @@ -339,7 +339,7 @@ index c8163a8645248765c0fa6c15bc8c37facdc70dc7..8edf2f049aa077792bfb507384f4cf5b } }; -@@ -148,6 +153,9 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -158,6 +163,9 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface } global.addHandler(new org.bukkit.craftbukkit.util.ForwardLogHandler()); @@ -349,17 +349,17 @@ index c8163a8645248765c0fa6c15bc8c37facdc70dc7..8edf2f049aa077792bfb507384f4cf5b final org.apache.logging.log4j.core.Logger logger = ((org.apache.logging.log4j.core.Logger) LogManager.getRootLogger()); for (org.apache.logging.log4j.core.Appender appender : logger.getAppenders().values()) { if (appender instanceof org.apache.logging.log4j.core.appender.ConsoleAppender) { -@@ -156,6 +164,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface - } - - new org.bukkit.craftbukkit.util.TerminalConsoleWriterThread(System.out, this.reader).start(); +@@ -168,6 +176,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface + TerminalConsoleWriterThread writerThread = new TerminalConsoleWriterThread(System.out, this.reader); + this.reader.setCompletionHandler(new TerminalCompletionHandler(writerThread, this.reader.getCompletionHandler())); + writerThread.start(); + */ -+ // Paper end ++ // Paper end - Not needed with TerminalConsoleAppender System.setOut(IoBuilder.forLogger(logger).setLevel(Level.INFO).buildPrintStream()); System.setErr(IoBuilder.forLogger(logger).setLevel(Level.WARN).buildPrintStream()); diff --git a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java -index 75083eeb9b413e6dd5375007360dce6857a08fff..d292fdb165436f0b9b46b32110f5e09ad0e517a1 100644 +index 3d92c61f7781221cfdc0324d11bd0088954e4a68..84a2c6c397604279ba821286f5c3c855e6041400 100644 --- a/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java +++ b/src/main/java/net/minecraft/server/gui/MinecraftServerGui.java @@ -166,7 +166,7 @@ public class MinecraftServerGui extends JComponent { @@ -372,7 +372,7 @@ index 75083eeb9b413e6dd5375007360dce6857a08fff..d292fdb165436f0b9b46b32110f5e09a if (!SwingUtilities.isEventDispatchThread()) { SwingUtilities.invokeLater(() -> { diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 1c313dbfc501ce5782fb2d7500b9af35f0855c46..e35e202d49f01c0c97b8c3e41a14254cbd4f2c49 100644 +index 126445b30f013e361473aa32583b35a5338c7083..dbb5b333930ce401d36f7d18880d103c9ef2f98e 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -161,8 +161,7 @@ public abstract class PlayerList { @@ -386,7 +386,7 @@ index 1c313dbfc501ce5782fb2d7500b9af35f0855c46..e35e202d49f01c0c97b8c3e41a14254c this.bans = new UserBanList(PlayerList.USERBANLIST_FILE); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 827579f59d34b61912a67b40624f0f41524185fd..f7d937c6a11e24afe767411428210f3c042a6f78 100644 +index 9e34d3f009184981e4f4cd34b0c0c75be9f541f3..7ed0aca2d6eeb03fd9888db2853488cd4e6e2a64 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -42,7 +42,7 @@ import java.util.logging.Level; @@ -398,7 +398,7 @@ index 827579f59d34b61912a67b40624f0f41524185fd..f7d937c6a11e24afe767411428210f3c import net.minecraft.advancements.AdvancementHolder; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; -@@ -1341,9 +1341,13 @@ public final class CraftServer implements Server { +@@ -1319,9 +1319,13 @@ public final class CraftServer implements Server { return this.logger; } @@ -413,7 +413,7 @@ index 827579f59d34b61912a67b40624f0f41524185fd..f7d937c6a11e24afe767411428210f3c @Override public PluginCommand getPluginCommand(String name) { diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index db36453ff46afded45268b3701488e23305aa2eb..e5df5469f20ccffcbe9cd227df6f5c60e82206bf 100644 +index 985b77911d03bc60a0210b796e901f31e2676268..9de87edb75947382fda114df883fb4b31c1a7141 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -13,7 +13,6 @@ import java.util.logging.Logger; @@ -424,7 +424,7 @@ index db36453ff46afded45268b3701488e23305aa2eb..e5df5469f20ccffcbe9cd227df6f5c60 public class Main { public static boolean useJline = true; -@@ -220,6 +219,8 @@ public class Main { +@@ -207,6 +206,8 @@ public class Main { } try { @@ -433,7 +433,7 @@ index db36453ff46afded45268b3701488e23305aa2eb..e5df5469f20ccffcbe9cd227df6f5c60 // This trick bypasses Maven Shade's clever rewriting of our getProperty call when using String literals String jline_UnsupportedTerminal = new String(new char[]{'j', 'l', 'i', 'n', 'e', '.', 'U', 'n', 's', 'u', 'p', 'p', 'o', 'r', 't', 'e', 'd', 'T', 'e', 'r', 'm', 'i', 'n', 'a', 'l'}); String jline_terminal = new String(new char[]{'j', 'l', 'i', 'n', 'e', '.', 't', 'e', 'r', 'm', 'i', 'n', 'a', 'l'}); -@@ -237,9 +238,18 @@ public class Main { +@@ -224,9 +225,18 @@ public class Main { // This ensures the terminal literal will always match the jline implementation System.setProperty(jline.TerminalFactory.JLINE_TERMINAL, jline.UnsupportedTerminal.class.getName()); } @@ -452,9 +452,9 @@ index db36453ff46afded45268b3701488e23305aa2eb..e5df5469f20ccffcbe9cd227df6f5c60 } if (Main.class.getPackage().getImplementationVendor() != null && System.getProperty("IReallyKnowWhatIAmDoingISwear") == null) { -@@ -268,6 +278,7 @@ public class Main { +@@ -242,6 +252,7 @@ public class Main { + } } - // Paper end - Log Java and OS versioning to help with debugging plugin issues + System.setProperty("library.jansi.version", "Paper"); // Paper - set meaningless jansi version to prevent git builds from crashing on Windows System.out.println("Loading libraries, please wait..."); @@ -593,32 +593,29 @@ index 8390f5b5b957b5435efece26507a89756d0a7b3c..c6e8441e299f477ddb22c1ce26187107 } } diff --git a/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java b/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java -index 1d8b279f3cbe6fde6bb1bfc4985c4133b0d4a95d..cdc52bbe5c6ae4688615a7732b10071f7f51718e 100644 +index 2e5101fca081548bb616bc5eaa0134698719b63a..6e4d50a4863d43a2d6a2d574350c74d0819df402 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java +++ b/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java -@@ -5,12 +5,12 @@ import java.io.IOException; - import java.io.OutputStream; +@@ -7,13 +7,9 @@ import java.util.Locale; + import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; -import jline.console.ConsoleReader; -+//import jline.console.ConsoleReader; +-import jline.console.completer.CandidateListCompletionHandler; import org.bukkit.craftbukkit.Main; -import org.fusesource.jansi.Ansi; -import org.fusesource.jansi.Ansi.Erase; -+//import org.fusesource.jansi.Ansi; -+//import org.fusesource.jansi.Ansi.Erase; -public class TerminalConsoleWriterThread extends Thread { -+public class TerminalConsoleWriterThread /*extends Thread*/ {/* // Paper - disable ++public class TerminalConsoleWriterThread /*extends Thread*/ {/* // Paper - Comment out entire class + private final ResourceBundle bundle = ResourceBundle.getBundle(CandidateListCompletionHandler.class.getName(), Locale.getDefault()); private final ConsoleReader reader; private final OutputStream output; - -@@ -54,5 +54,5 @@ public class TerminalConsoleWriterThread extends Thread { - Logger.getLogger(TerminalConsoleWriterThread.class.getName()).log(Level.SEVERE, null, ex); - } - } -- } -+ }*/ +@@ -70,4 +66,5 @@ public class TerminalConsoleWriterThread extends Thread { + void setCompletion(int completion) { + this.completion = completion; + } ++*/ // Paper - Comment out entire class } diff --git a/src/main/resources/log4j2.component.properties b/src/main/resources/log4j2.component.properties new file mode 100644 @@ -628,27 +625,27 @@ index 0000000000000000000000000000000000000000..0694b21465fb9e4164e71862ff24b622 @@ -0,0 +1 @@ +log4j.skipJansi=true diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml -index 722ca84968cbbbdeffd09939abff0cccd0a84010..a994ec0f8621b1f267b40049306f63479c050e2f 100644 +index 0ff3f750fb7f684c12080894cd8660f0455c658b..301874c1fe16c52ffa6228d79e6617d746e9a035 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -1,17 +1,14 @@ - + - -- +- - - + - -- +- - + + + -- +- + diff --git a/patches/unapplied/server/0012-Handle-plugin-prefixes-using-Log4J-configuration.patch b/patches/server/0012-Handle-plugin-prefixes-using-Log4J-configuration.patch similarity index 91% rename from patches/unapplied/server/0012-Handle-plugin-prefixes-using-Log4J-configuration.patch rename to patches/server/0012-Handle-plugin-prefixes-using-Log4J-configuration.patch index 42bd840658..1bc87ea88d 100644 --- a/patches/unapplied/server/0012-Handle-plugin-prefixes-using-Log4J-configuration.patch +++ b/patches/server/0012-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 cadb6a2cae98a8df97c392bfbd5a1440bccd16f4..ca6e0c77acbcf3b32eb8b5c0f86701f52dfeea0c 100644 +index bc4af2e667603d31dfbefc12e42e2300e389b65f..d7850a6bcfd910eb073280856dd34707118f8aae 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -25,7 +25,7 @@ dependencies { @@ -28,10 +28,10 @@ index cadb6a2cae98a8df97c392bfbd5a1440bccd16f4..ca6e0c77acbcf3b32eb8b5c0f86701f5 runtimeOnly(log4jPlugins.output) alsoShade(log4jPlugins.output) diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java -index bd4c744c597201267418b07b9bcb522805c485eb..0f391af1274926ef6316bd06458767a27640f54a 100644 +index 60e354fe1d32cd315ed42cea4484c83c4b5e7e25..899e85ea70edfb6553dc27462690da8caa793f77 100644 --- a/src/main/java/org/spigotmc/SpigotConfig.java +++ b/src/main/java/org/spigotmc/SpigotConfig.java -@@ -290,7 +290,7 @@ public class SpigotConfig +@@ -288,7 +288,7 @@ public class SpigotConfig private static void playerSample() { SpigotConfig.playerSample = SpigotConfig.getInt( "settings.sample-count", 12 ); @@ -41,11 +41,11 @@ index bd4c744c597201267418b07b9bcb522805c485eb..0f391af1274926ef6316bd06458767a2 public static int playerShuffle; diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml -index a994ec0f8621b1f267b40049306f63479c050e2f..bba2de3f3feb5e6a876f9df1eee6da0c7d93e271 100644 +index 301874c1fe16c52ffa6228d79e6617d746e9a035..e073707a46397f62bedf1d413f9e5764e77dda6a 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -5,10 +5,22 @@ - + - diff --git a/patches/unapplied/server/0013-Improve-Log4J-Configuration-Plugin-Loggers.patch b/patches/server/0013-Improve-Log4J-Configuration-Plugin-Loggers.patch similarity index 96% rename from patches/unapplied/server/0013-Improve-Log4J-Configuration-Plugin-Loggers.patch rename to patches/server/0013-Improve-Log4J-Configuration-Plugin-Loggers.patch index 06b30f0a00..4f654facd6 100644 --- a/patches/unapplied/server/0013-Improve-Log4J-Configuration-Plugin-Loggers.patch +++ b/patches/server/0013-Improve-Log4J-Configuration-Plugin-Loggers.patch @@ -14,7 +14,7 @@ log. Disable the logger prefix for these plugins so the messages show up correctly. diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml -index bba2de3f3feb5e6a876f9df1eee6da0c7d93e271..88957220d5574e5590e8a545605d76c0c7b0a10e 100644 +index e073707a46397f62bedf1d413f9e5764e77dda6a..ab1caec640128aa90f246e4bbecf5ca275e7982e 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -6,19 +6,21 @@ diff --git a/patches/unapplied/server/0014-Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch b/patches/server/0014-Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch similarity index 76% rename from patches/unapplied/server/0014-Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch rename to patches/server/0014-Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch index d999d8b2ce..075c0bed89 100644 --- a/patches/unapplied/server/0014-Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch +++ b/patches/server/0014-Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch @@ -5,19 +5,21 @@ Subject: [PATCH] Use AsyncAppender to keep logging IO off main thread diff --git a/build.gradle.kts b/build.gradle.kts -index ca6e0c77acbcf3b32eb8b5c0f86701f52dfeea0c..470c55412e7a4f09235947adc72944b903d6543d 100644 +index d7850a6bcfd910eb073280856dd34707118f8aae..4eec2a9aace7bca8383c893eedf0c27e06ba71c6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -36,6 +36,7 @@ dependencies { +@@ -34,8 +34,7 @@ dependencies { + implementation("org.ow2.asm:asm-commons:9.7") + implementation("org.spongepowered:configurate-yaml:4.2.0-SNAPSHOT") // Paper - config files implementation("commons-lang:commons-lang:2.6") - runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.1") - runtimeOnly("com.mysql:mysql-connector-j:8.2.0") +- runtimeOnly("org.xerial:sqlite-jdbc:3.45.3.0") +- runtimeOnly("com.mysql:mysql-connector-j:8.3.0") + runtimeOnly("com.lmax:disruptor:3.4.4") // Paper runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.6") runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml -index 88957220d5574e5590e8a545605d76c0c7b0a10e..ea4e2161c0bd43884055cc6b8d70b2139f70e720 100644 +index ab1caec640128aa90f246e4bbecf5ca275e7982e..18e961a37b2830da6e5dab7aa35116b2f5215898 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -29,15 +29,18 @@ diff --git a/patches/unapplied/server/0015-Deobfuscate-stacktraces-in-log-messages-crash-report.patch b/patches/server/0015-Deobfuscate-stacktraces-in-log-messages-crash-report.patch similarity index 70% rename from patches/unapplied/server/0015-Deobfuscate-stacktraces-in-log-messages-crash-report.patch rename to patches/server/0015-Deobfuscate-stacktraces-in-log-messages-crash-report.patch index 89b6bb2230..c8a687ec76 100644 --- a/patches/unapplied/server/0015-Deobfuscate-stacktraces-in-log-messages-crash-report.patch +++ b/patches/server/0015-Deobfuscate-stacktraces-in-log-messages-crash-report.patch @@ -6,36 +6,17 @@ Subject: [PATCH] Deobfuscate stacktraces in log messages, crash reports, and diff --git a/build.gradle.kts b/build.gradle.kts -index 9cd80bc7f2b47e1044eef2592274e38d1988ff5d..2b3da4b69e89a6b98ec98820e55044fefdafc061 100644 +index 4eec2a9aace7bca8383c893eedf0c27e06ba71c6..4e24a9dcad6c8b3f52c3039f2ba80dfedb911e03 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -35,6 +35,7 @@ dependencies { +@@ -34,6 +34,7 @@ dependencies { implementation("org.ow2.asm:asm-commons:9.7") implementation("org.spongepowered:configurate-yaml:4.2.0-SNAPSHOT") // Paper - config files implementation("commons-lang:commons-lang:2.6") + implementation("net.fabricmc:mapping-io:0.5.0") // Paper - needed to read mappings for stacktrace deobfuscation - runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.1") - runtimeOnly("com.mysql:mysql-connector-j:8.2.0") runtimeOnly("com.lmax:disruptor:3.4.4") // Paper -@@ -121,6 +122,18 @@ tasks.check { - } - // Paper end -+// Paper start - include reobf mappings in jar for stacktrace deobfuscation -+val includeMappings = tasks.register("includeMappings") { -+ inputJar.set(tasks.fixJarForReobf.flatMap { it.outputJar }) -+ mappings.set(tasks.reobfJar.flatMap { it.mappingsFile }) -+ mappingsDest.set("META-INF/mappings/reobf.tiny") -+} -+ -+tasks.reobfJar { -+ inputJar.set(includeMappings.flatMap { it.outputJar }) -+} -+// Paper end - include reobf mappings in jar for stacktrace deobfuscation -+ - tasks.test { - exclude("org/bukkit/craftbukkit/inventory/ItemStack*Test.class") - useJUnitPlatform() + runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.6") 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 @@ -108,19 +89,6 @@ index 0000000000000000000000000000000000000000..66b6011ee3684695b2ab9292961c80bf + return new StacktraceDeobfuscatingRewritePolicy(); + } +} -diff --git a/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java b/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java -index 404a8fd128043527d23f22ee26f7c8c739f09089..9f24003fffee14592e5ef22e75ec9826428438e6 100644 ---- a/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java -+++ b/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java -@@ -91,7 +91,7 @@ public class SyncLoadFinder { - - final JsonArray traces = new JsonArray(); - -- for (StackTraceElement element : pair.getFirst().stacktrace) { -+ for (StackTraceElement element : io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateStacktrace(pair.getFirst().stacktrace)) { - traces.add(String.valueOf(element)); - } - diff --git a/src/main/java/io/papermc/paper/util/ObfHelper.java b/src/main/java/io/papermc/paper/util/ObfHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..e8ff684d8bd994c64ff34f20e1e0601b678244c1 @@ -443,35 +411,8 @@ index 0000000000000000000000000000000000000000..eb910d4abf91488fa7cf1f5d47e0ee91 + return lineMap; + } +} -diff --git a/src/main/java/io/papermc/paper/util/TraceUtil.java b/src/main/java/io/papermc/paper/util/TraceUtil.java -index 2d5494d2813b773e60ddba6790b750a9a08f21f8..0b210bdf7c1f5962afbd44195af6f84f625635e3 100644 ---- a/src/main/java/io/papermc/paper/util/TraceUtil.java -+++ b/src/main/java/io/papermc/paper/util/TraceUtil.java -@@ -6,13 +6,20 @@ public final class TraceUtil { - - public static void dumpTraceForThread(Thread thread, String reason) { - Bukkit.getLogger().warning(thread.getName() + ": " + reason); -- StackTraceElement[] trace = thread.getStackTrace(); -+ StackTraceElement[] trace = StacktraceDeobfuscator.INSTANCE.deobfuscateStacktrace(thread.getStackTrace()); - for (StackTraceElement traceElement : trace) { - Bukkit.getLogger().warning("\tat " + traceElement); - } - } - - public static void dumpTraceForThread(String reason) { -- new Throwable(reason).printStackTrace(); -+ final Throwable throwable = new Throwable(reason); -+ StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(throwable); -+ throwable.printStackTrace(); -+ } -+ -+ public static void printStackTrace(Throwable thr) { -+ StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(thr); -+ thr.printStackTrace(); - } - } diff --git a/src/main/java/net/minecraft/CrashReport.java b/src/main/java/net/minecraft/CrashReport.java -index a9a0248b1bd1ac454064e977b61f9b7d80962ff8..6f2452de76e8f5fcc1367066e0e753740764eb98 100644 +index a23407fa1b906743890cff74f5051ad55d59c85e..06c514b2d0674cd7df6692981f020437ea0f2f91 100644 --- a/src/main/java/net/minecraft/CrashReport.java +++ b/src/main/java/net/minecraft/CrashReport.java @@ -34,6 +34,7 @@ public class CrashReport { @@ -495,12 +436,12 @@ index f367ba058018074bfe6e4fe88bcc875ea9794d9e..2176171954609fd88f97f93408e14e01 } } diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index 7648b889bc488197f32545e8c3671a54102c01ec..44e62675a2d612a8d727d9ce6db5fb85d1a0bcc8 100644 +index 256a983c7345902600d52d7b7e3056162275f4c7..0ccfdceea8e211c595be2dad2392876109b4eeef 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java -@@ -75,13 +75,13 @@ public class Connection extends SimpleChannelInboundHandler> { - public static final AttributeKey> ATTRIBUTE_SERVERBOUND_PROTOCOL = AttributeKey.valueOf("serverbound_protocol"); - public static final AttributeKey> ATTRIBUTE_CLIENTBOUND_PROTOCOL = AttributeKey.valueOf("clientbound_protocol"); +@@ -82,13 +82,13 @@ public class Connection extends SimpleChannelInboundHandler> { + marker.add(Connection.PACKET_MARKER); + }); public static final Supplier NETWORK_WORKER_GROUP = Suppliers.memoize(() -> { - return new NioEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Client IO #%d").setDaemon(true).build()); + return new NioEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Client IO #%d").setDaemon(true).setUncaughtExceptionHandler(new net.minecraft.DefaultUncaughtExceptionHandlerWithName(LOGGER)).build()); // Paper @@ -513,9 +454,9 @@ index 7648b889bc488197f32545e8c3671a54102c01ec..44e62675a2d612a8d727d9ce6db5fb85 - return new DefaultEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Local Client IO #%d").setDaemon(true).build()); + return new DefaultEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Local Client IO #%d").setDaemon(true).setUncaughtExceptionHandler(new net.minecraft.DefaultUncaughtExceptionHandlerWithName(LOGGER)).build()); // Paper }); + private static final ProtocolInfo INITIAL_PROTOCOL = HandshakeProtocols.SERVERBOUND; private final PacketFlow receiving; - private final Queue> pendingActions = Queues.newConcurrentLinkedQueue(); -@@ -207,7 +207,7 @@ public class Connection extends SimpleChannelInboundHandler> { +@@ -189,7 +189,7 @@ public class Connection extends SimpleChannelInboundHandler> { } } @@ -524,31 +465,11 @@ index 7648b889bc488197f32545e8c3671a54102c01ec..44e62675a2d612a8d727d9ce6db5fb85 } protected void channelRead0(ChannelHandlerContext channelhandlercontext, Packet packet) { -diff --git a/src/main/java/net/minecraft/network/PacketEncoder.java b/src/main/java/net/minecraft/network/PacketEncoder.java -index 061eada043325142d33a0cec02e9e484d14a7fca..96d5448019d53ac3575e209c1c5c223a62a2638d 100644 ---- a/src/main/java/net/minecraft/network/PacketEncoder.java -+++ b/src/main/java/net/minecraft/network/PacketEncoder.java -@@ -47,7 +47,14 @@ public class PacketEncoder extends MessageToByteEncoder> { - - JvmProfiler.INSTANCE.onPacketSent(codecData.protocol(), i, channelHandlerContext.channel().remoteAddress(), k); - } catch (Throwable var13) { -- LOGGER.error("Packet encoding of packet ID {} threw (skippable? {})", i, packet.isSkippable(), var13); // Paper - Give proper error message -+ // Paper start - Give proper error message -+ String packetName = io.papermc.paper.util.ObfHelper.INSTANCE.deobfClassName(packet.getClass().getName()); -+ if (packetName.contains(".")) { -+ packetName = packetName.substring(packetName.lastIndexOf(".") + 1); -+ } -+ -+ LOGGER.error("Packet encoding of packet {} (ID: {}) threw (skippable? {})", packetName, i, packet.isSkippable(), var13); -+ // Paper end - if (packet.isSkippable()) { - throw new SkipPacketException(var13); - } diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 28fe088d97bd5fbfcc29dcc7d2a657d54578b2be..c41c53ee3b1a8b5c2c41fc9846f557eeb4d10f9b 100644 +index 9249122da7282929f87613f41984b8085d7b53ec..21b8f1913ff54d2b1553826269355da8bdb7f702 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -194,6 +194,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -206,6 +206,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface org.spigotmc.SpigotConfig.init((java.io.File) this.options.valueOf("spigot-settings")); org.spigotmc.SpigotConfig.registerCommands(); // Spigot end @@ -556,21 +477,8 @@ index 28fe088d97bd5fbfcc29dcc7d2a657d54578b2be..c41c53ee3b1a8b5c2c41fc9846f557ee // Paper start - initialize global and world-defaults configuration this.paperConfigurations.initializeGlobalConfiguration(this.registryAccess()); this.paperConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess()); -diff --git a/src/main/java/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java -index e2537760becdd5b3f3561f7159ed7fc2755e6260..87c5690774363edc1b7ebff10b041e48c0a6d56d 100644 ---- a/src/main/java/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java -+++ b/src/main/java/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java -@@ -137,7 +137,7 @@ public class ServerConfigurationPacketListenerImpl extends ServerCommonPacketLis - ServerConfigurationPacketListenerImpl.LOGGER.error("Couldn't place player in world", exception); - // Paper start - Debugging - if (MinecraftServer.getServer().isDebugging()) { -- exception.printStackTrace(); -+ io.papermc.paper.util.TraceUtil.printStackTrace(exception); - } - // Paper end - Debugging - this.connection.send(new ClientboundDisconnectPacket(ServerConfigurationPacketListenerImpl.DISCONNECT_REASON_INVALID_DATA)); diff --git a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java -index 187b2cf175ba5cea94158d29b53993dc5a7c5b94..3b6bafb242d2623c15f26acdacd036478c7dc214 100644 +index 987360a266a5a870f06929b00c9f451901188fd6..2cf3e79ec5e8706b71d27ebad4668773f0b91195 100644 --- a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java +++ b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java @@ -52,10 +52,10 @@ public class ServerConnectionListener { @@ -587,70 +495,32 @@ index 187b2cf175ba5cea94158d29b53993dc5a7c5b94..3b6bafb242d2623c15f26acdacd03647 final MinecraftServer server; public volatile boolean running; diff --git a/src/main/java/net/minecraft/server/players/OldUsersConverter.java b/src/main/java/net/minecraft/server/players/OldUsersConverter.java -index 86c88e81e275d52576122a5083b419e64cb011fc..45d4638d568ea2aee805aa1b0542533019e5870d 100644 +index 8d06e8d286da2573e40794adab695ff77e5afd86..68551947f5b7d3471f15bd74ccd86519ab34c1c1 100644 --- a/src/main/java/net/minecraft/server/players/OldUsersConverter.java +++ b/src/main/java/net/minecraft/server/players/OldUsersConverter.java -@@ -357,7 +357,7 @@ public class OldUsersConverter { +@@ -356,7 +356,7 @@ public class OldUsersConverter { try { root = NbtIo.readCompressed(new java.io.FileInputStream(file5), NbtAccounter.unlimitedHeap()); } catch (Exception exception) { - exception.printStackTrace(); + io.papermc.paper.util.TraceUtil.printStackTrace(exception); // Paper - com.destroystokyo.paper.exception.ServerInternalException.reportInternalException(exception); // Paper - ServerExceptionEvent } -@@ -371,7 +371,7 @@ public class OldUsersConverter { + if (root != null) { +@@ -369,7 +369,7 @@ public class OldUsersConverter { try { NbtIo.writeCompressed(root, new java.io.FileOutputStream(file2)); } catch (Exception exception) { - exception.printStackTrace(); + io.papermc.paper.util.TraceUtil.printStackTrace(exception); // Paper - com.destroystokyo.paper.exception.ServerInternalException.reportInternalException(exception); // Paper - ServerExceptionEvent } } -diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 5403fc4fa2ed2526d2e67c230a46dd2a75e017be..af757309cb46af6df07872f7596b66df6d6f18d7 100644 ---- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -592,7 +592,7 @@ public class LevelChunk extends ChunkAccess { - + " (" + getBlockState(blockposition) + ") where there was no entity tile!\n" + - "Chunk coordinates: " + (this.chunkPos.x * 16) + "," + (this.chunkPos.z * 16) + - "\nWorld: " + level.getLevel().dimension().location()); -- e.printStackTrace(); -+ io.papermc.paper.util.TraceUtil.printStackTrace(e); - ServerInternalException.reportInternalException(e); - // Paper end - ServerExceptionEvent - // CraftBukkit end -diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncScheduler.java -index 3c1992e212a6d6f1db4d5b807b38d71913619fc0..9c1aff17aabd062640e3f451a2ef8c50a7c62f10 100644 ---- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncScheduler.java -+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncScheduler.java -@@ -40,9 +40,9 @@ public class CraftAsyncScheduler extends CraftScheduler { - - private final ThreadPoolExecutor executor = new ThreadPoolExecutor( - 4, Integer.MAX_VALUE,30L, TimeUnit.SECONDS, new SynchronousQueue<>(), -- new ThreadFactoryBuilder().setNameFormat("Craft Scheduler Thread - %1$d").build()); -+ new ThreadFactoryBuilder().setNameFormat("Craft Scheduler Thread - %1$d").setUncaughtExceptionHandler(new net.minecraft.DefaultUncaughtExceptionHandlerWithName(net.minecraft.server.MinecraftServer.LOGGER)).build()); // Paper - private final Executor management = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder() -- .setNameFormat("Craft Async Scheduler Management Thread").build()); -+ .setNameFormat("Craft Async Scheduler Management Thread").setUncaughtExceptionHandler(new net.minecraft.DefaultUncaughtExceptionHandlerWithName(net.minecraft.server.MinecraftServer.LOGGER)).build()); // Paper - private final List temp = new ArrayList<>(); - - CraftAsyncScheduler() { + // CraftBukkit end diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java -index 017c2eadbc5dfec155c21b5d8a80f0b1e380398e..b1ac7338fa632611ea8332044b09070f78f8f5f1 100644 +index c4bf7053d83d207caca0e13e19f5c1afa7062de3..f697d45e0ac4e9cdc8a46121510a04c0f294d91f 100644 --- a/src/main/java/org/spigotmc/WatchdogThread.java +++ b/src/main/java/org/spigotmc/WatchdogThread.java -@@ -102,7 +102,7 @@ public class WatchdogThread extends Thread - log.log(Level.SEVERE, "During the run of the server, a plugin set an excessive velocity on an entity"); - log.log(Level.SEVERE, "This may be the cause of the issue, or it may be entirely unrelated"); - log.log(Level.SEVERE, org.bukkit.craftbukkit.CraftServer.excessiveVelEx.getMessage()); -- for (StackTraceElement stack : org.bukkit.craftbukkit.CraftServer.excessiveVelEx.getStackTrace()) { -+ for (StackTraceElement stack : io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateStacktrace(org.bukkit.craftbukkit.CraftServer.excessiveVelEx.getStackTrace())) { // Paper - log.log( Level.SEVERE, "\t\t" + stack ); - } - } -@@ -172,7 +172,7 @@ public class WatchdogThread extends Thread +@@ -130,7 +130,7 @@ public class WatchdogThread extends Thread } log.log( Level.SEVERE, "\tStack:" ); // @@ -660,7 +530,7 @@ index 017c2eadbc5dfec155c21b5d8a80f0b1e380398e..b1ac7338fa632611ea8332044b09070f log.log( Level.SEVERE, "\t\t" + stack ); } diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml -index ea4e2161c0bd43884055cc6b8d70b2139f70e720..4e2ca9162450c1f54b7ab95a63c1bad8efe81a06 100644 +index 18e961a37b2830da6e5dab7aa35116b2f5215898..128fa1376f22d3429a23d79a2772abf2e7fec2bc 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -30,10 +30,14 @@ diff --git a/patches/unapplied/server/0016-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch b/patches/server/0016-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch similarity index 98% rename from patches/unapplied/server/0016-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch rename to patches/server/0016-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch index e3b686c58c..0fdcde78a6 100644 --- a/patches/unapplied/server/0016-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch +++ b/patches/server/0016-Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch @@ -230,7 +230,7 @@ index 0000000000000000000000000000000000000000..34734bb969a1a74c7a4f9c17d40ebf00 + } +} diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml -index 4e2ca9162450c1f54b7ab95a63c1bad8efe81a06..32e64b3866bdd1489a90339bda2268adafbb15de 100644 +index 128fa1376f22d3429a23d79a2772abf2e7fec2bc..637d64da9938e51a97338b9253b43889585c67bb 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -34,6 +34,10 @@ diff --git a/patches/unapplied/server/0017-Paper-command.patch b/patches/server/0017-Paper-command.patch similarity index 98% rename from patches/unapplied/server/0017-Paper-command.patch rename to patches/server/0017-Paper-command.patch index 7fe615b89f..a6e9b24136 100644 --- a/patches/unapplied/server/0017-Paper-command.patch +++ b/patches/server/0017-Paper-command.patch @@ -605,10 +605,10 @@ index 0000000000000000000000000000000000000000..ae60bd96b5284d54676d8e7e4dd5d170 + } +} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 8ddfd4a148c95d0d9e93edf03ddac46332936d9a..8499eb5128d3269925ffb2c61d8532e9da47be4a 100644 +index 21b8f1913ff54d2b1553826269355da8bdb7f702..b9c22f725f5aeaee469fe5b7d8c3a57ddb1d5bdd 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -187,6 +187,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -211,6 +211,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface this.paperConfigurations.initializeGlobalConfiguration(this.registryAccess()); this.paperConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess()); // Paper end - initialize global and world-defaults configuration @@ -617,7 +617,7 @@ index 8ddfd4a148c95d0d9e93edf03ddac46332936d9a..8499eb5128d3269925ffb2c61d8532e9 this.setPvpAllowed(dedicatedserverproperties.pvp); this.setFlightAllowed(dedicatedserverproperties.allowFlight); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 8441cbe4ebd676d1aacff223abdabeb32b5658e0..45ba78ae029f59efd16534a2d6453af50a7aa74a 100644 +index 7ed0aca2d6eeb03fd9888db2853488cd4e6e2a64..3a0f3992e28c3057d598daf78c0b70b1437ae0b0 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -951,6 +951,7 @@ public final class CraftServer implements Server { @@ -628,7 +628,7 @@ index 8441cbe4ebd676d1aacff223abdabeb32b5658e0..45ba78ae029f59efd16534a2d6453af5 this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -2649,6 +2650,34 @@ public final class CraftServer implements Server { +@@ -2671,6 +2672,34 @@ public final class CraftServer implements Server { // Paper end // Paper start diff --git a/patches/unapplied/server/0018-Paper-Metrics.patch b/patches/server/0018-Paper-Metrics.patch similarity index 99% rename from patches/unapplied/server/0018-Paper-Metrics.patch rename to patches/server/0018-Paper-Metrics.patch index 3d7bf9785a..927bc4dc2d 100644 --- a/patches/unapplied/server/0018-Paper-Metrics.patch +++ b/patches/server/0018-Paper-Metrics.patch @@ -698,10 +698,10 @@ index 0000000000000000000000000000000000000000..6aaed8e8bf8c721fc834da5c76ac72a4 + } +} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 8499eb5128d3269925ffb2c61d8532e9da47be4a..4917aa64505870a0521bc09ce4d4d3e37c03eaae 100644 +index b9c22f725f5aeaee469fe5b7d8c3a57ddb1d5bdd..0d6688e9da81453e64daacfb81e4a13cc37b3e66 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -188,6 +188,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -212,6 +212,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface this.paperConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess()); // Paper end - initialize global and world-defaults configuration io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command @@ -710,7 +710,7 @@ index 8499eb5128d3269925ffb2c61d8532e9da47be4a..4917aa64505870a0521bc09ce4d4d3e3 this.setPvpAllowed(dedicatedserverproperties.pvp); this.setFlightAllowed(dedicatedserverproperties.allowFlight); diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java -index e6e070db9a6ee78e65dbff6f18cb5c8784202b9f..bd4c744c597201267418b07b9bcb522805c485eb 100644 +index 899e85ea70edfb6553dc27462690da8caa793f77..27b01f7ed930baab466a5e4f9608e9e1a4da0978 100644 --- a/src/main/java/org/spigotmc/SpigotConfig.java +++ b/src/main/java/org/spigotmc/SpigotConfig.java @@ -83,6 +83,7 @@ public class SpigotConfig diff --git a/patches/unapplied/server/0019-Paper-Plugins.patch b/patches/server/0019-Paper-Plugins.patch similarity index 99% rename from patches/unapplied/server/0019-Paper-Plugins.patch rename to patches/server/0019-Paper-Plugins.patch index 3b9673ae92..e37d72e80f 100644 --- a/patches/unapplied/server/0019-Paper-Plugins.patch +++ b/patches/server/0019-Paper-Plugins.patch @@ -7117,10 +7117,10 @@ index f7114d5b8f2f93f62883e24da29afaf9f74ee1a6..8bf0630c0e06950cd99b7ae9898137f7 return foundFrame.orElse(null); diff --git a/src/main/java/net/minecraft/core/registries/BuiltInRegistries.java b/src/main/java/net/minecraft/core/registries/BuiltInRegistries.java -index e8afaa3c1fab0435acb068426091bdf776263112..94da73ef6c77308a8bc21db4c0bca22a79376b58 100644 +index bc91370654f5da33cbfe7d42431568915c1159d6..b43af53960978ac04bccde08544a562841492791 100644 --- a/src/main/java/net/minecraft/core/registries/BuiltInRegistries.java +++ b/src/main/java/net/minecraft/core/registries/BuiltInRegistries.java -@@ -312,7 +312,13 @@ public class BuiltInRegistries { +@@ -304,7 +304,13 @@ public class BuiltInRegistries { } public static void bootStrap() { @@ -7135,10 +7135,10 @@ index e8afaa3c1fab0435acb068426091bdf776263112..94da73ef6c77308a8bc21db4c0bca22a validate(REGISTRY); } diff --git a/src/main/java/net/minecraft/server/Bootstrap.java b/src/main/java/net/minecraft/server/Bootstrap.java -index 1eabd8b5a99850298838b11ba97e3d220f444378..8ff786c366332588a2df053438f23cc9fb7e2b84 100644 +index 15ee2f2a83bfef2f6891d9bfb2d3a8c14b24ffb1..d0d95d729853fc296c4931a2f73a3fc5f94302c9 100644 --- a/src/main/java/net/minecraft/server/Bootstrap.java +++ b/src/main/java/net/minecraft/server/Bootstrap.java -@@ -76,7 +76,11 @@ public class Bootstrap { +@@ -74,7 +74,11 @@ public class Bootstrap { EntitySelectorOptions.bootStrap(); DispenseItemBehavior.bootStrap(); CauldronInteraction.bootStrap(); @@ -7152,10 +7152,10 @@ index 1eabd8b5a99850298838b11ba97e3d220f444378..8ff786c366332588a2df053438f23cc9 Bootstrap.wrapStreams(); Bootstrap.bootstrapDuration.set(Duration.between(instant, Instant.now()).toMillis()); diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java -index 66550ce5cc83534af8dcac338db5cd4cfb1c46c4..a40755f2e4d36a3ef34e187727065da4b918a5e8 100644 +index 5b4ac7b4fd0077e900e9f788963f1613bbc9a5d0..6afede80c10503a261d0f735c351d943597be9ff 100644 --- a/src/main/java/net/minecraft/server/Main.java +++ b/src/main/java/net/minecraft/server/Main.java -@@ -117,6 +117,7 @@ public class Main { +@@ -119,6 +119,7 @@ public class Main { JvmProfiler.INSTANCE.start(Environment.SERVER); } @@ -7164,10 +7164,10 @@ index 66550ce5cc83534af8dcac338db5cd4cfb1c46c4..a40755f2e4d36a3ef34e187727065da4 Bootstrap.validate(); Util.startTimerHackThread(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 45ba78ae029f59efd16534a2d6453af50a7aa74a..7bd9abe9166df3d120fe6580407a04f68279c55f 100644 +index 3a0f3992e28c3057d598daf78c0b70b1437ae0b0..45160b93a24dc74f6368441e2a4fe659ceaf5bf5 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -272,7 +272,8 @@ public final class CraftServer implements Server { +@@ -274,7 +274,8 @@ public final class CraftServer implements Server { private final CraftCommandMap commandMap = new CraftCommandMap(this); private final SimpleHelpMap helpMap = new SimpleHelpMap(this); private final StandardMessenger messenger = new StandardMessenger(); @@ -7253,10 +7253,10 @@ index 909b2c98e7a9117d2f737245e4661792ffafb744..d96399e9bf1a58db5a4a22e58abb99e7 @Override public FileConfiguration getConfig() { diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 203225cc5d0edc0de7e3dcf7ee4af15004cc1187..ea994c34e1ca725eae4d05223fc09fc1308b0730 100644 +index da97b4e91b7952f1459e59c74447a659842990bc..adf28b8e77d42267ce41713e031ee316366202e8 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -426,6 +426,12 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -421,6 +421,12 @@ public final class CraftMagicNumbers implements UnsafeValues { net.minecraft.world.item.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(itemStack); return nmsItemStack.getItem().getDescriptionId(nmsItemStack); } @@ -8063,10 +8063,10 @@ index 0000000000000000000000000000000000000000..ba271c35eb2804f94cfc893bf94affb9 + } +} diff --git a/src/test/java/org/bukkit/support/DummyServer.java b/src/test/java/org/bukkit/support/DummyServer.java -index f3017525b0c2397fdc7ce0778add2e7b38e9e2ba..3b3e44c5ed24f653f7dc1e5d3d4f0ff76084f277 100644 +index 02a8e6b45bf304b6e0f88043a25188aa16b3d6bf..7a4681155f740a98ecafa0b992eae1fb5524551f 100644 --- a/src/test/java/org/bukkit/support/DummyServer.java +++ b/src/test/java/org/bukkit/support/DummyServer.java -@@ -52,7 +52,7 @@ public final class DummyServer { +@@ -54,7 +54,7 @@ public final class DummyServer { final Thread currentThread = Thread.currentThread(); when(instance.isPrimaryThread()).thenAnswer(ignored -> Thread.currentThread().equals(currentThread)); diff --git a/patches/unapplied/server/0020-Plugin-remapping.patch b/patches/server/0020-Plugin-remapping.patch similarity index 95% rename from patches/unapplied/server/0020-Plugin-remapping.patch rename to patches/server/0020-Plugin-remapping.patch index f6f363d55e..6fe3479b88 100644 --- a/patches/unapplied/server/0020-Plugin-remapping.patch +++ b/patches/server/0020-Plugin-remapping.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Plugin remapping Co-authored-by: Nassim Jahnke diff --git a/build.gradle.kts b/build.gradle.kts -index bcfe59b6efb628ee1e7f9d60667360d4d885fb6a..69f6e6aa7f71c155651826400c6d41f075eb9ea3 100644 +index 4e24a9dcad6c8b3f52c3039f2ba80dfedb911e03..ddd9bf846c7e918a1a36a6035b220db201c42440 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -56,9 +56,14 @@ dependencies { +@@ -46,9 +46,14 @@ dependencies { testImplementation("org.mockito:mockito-core:5.11.0") testImplementation("org.ow2.asm:asm-tree:9.7") testImplementation("org.junit-pioneer:junit-pioneer:2.2.0") // Paper - CartesianTest @@ -18,14 +18,14 @@ index bcfe59b6efb628ee1e7f9d60667360d4d885fb6a..69f6e6aa7f71c155651826400c6d41f0 +} + +paperweight { -+ craftBukkitPackageVersion.set("v1_20_R3") // also needs to be updated in MappingEnvironment ++ craftBukkitPackageVersion.set("v1_20_R4") // also needs to be updated in MappingEnvironment } --val craftbukkitPackageVersion = "1_20_R3" // Paper +-val craftbukkitPackageVersion = "1_20_R4" // Paper tasks.jar { archiveClassifier.set("dev") -@@ -78,7 +83,7 @@ tasks.jar { +@@ -68,7 +73,7 @@ tasks.jar { "Specification-Vendor" to "Bukkit Team", "Git-Branch" to gitBranch, // Paper "Git-Commit" to gitHash, // Paper @@ -34,55 +34,7 @@ index bcfe59b6efb628ee1e7f9d60667360d4d885fb6a..69f6e6aa7f71c155651826400c6d41f0 ) for (tld in setOf("net", "com", "org")) { attributes("$tld/bukkit", "Sealed" to true) -@@ -94,28 +99,11 @@ tasks.compileTestJava { - - publishing { - publications.create("maven") { -- artifact(tasks.shadowJar) -- } --} -- --relocation { -- // Order matters here - e.g. craftbukkit proper must be relocated before any of the libs are relocated into the cb package -- relocate("org.bukkit.craftbukkit" to "org.bukkit.craftbukkit.v$craftbukkitPackageVersion") { -- exclude("org.bukkit.craftbukkit.Main*") - } - } - - tasks.shadowJar { - configurations = listOf(project.configurations.vanillaServer.get(), alsoShade) -- archiveClassifier.set("mojang-mapped") -- -- for (relocation in relocation.relocations.get()) { -- relocate(relocation.fromPackage, relocation.toPackage) { -- for (exclude in relocation.excludes) { -- exclude(exclude) -- } -- } -- } - } - - // Paper start -@@ -129,18 +117,6 @@ tasks.check { - } - // Paper end - --// Paper start - include reobf mappings in jar for stacktrace deobfuscation --val includeMappings = tasks.register("includeMappings") { -- inputJar.set(tasks.fixJarForReobf.flatMap { it.outputJar }) -- mappings.set(tasks.reobfJar.flatMap { it.mappingsFile }) -- mappingsDest.set("META-INF/mappings/reobf.tiny") --} -- --tasks.reobfJar { -- inputJar.set(includeMappings.flatMap { it.outputJar }) --} --// Paper end - include reobf mappings in jar for stacktrace deobfuscation -- - tasks.test { - exclude("org/bukkit/craftbukkit/inventory/ItemStack*Test.class") - useJUnitPlatform() -@@ -187,20 +163,41 @@ val runtimeClasspathWithoutVanillaServer = configurations.runtimeClasspath.flatM +@@ -148,20 +153,41 @@ val runtimeClasspathWithoutVanillaServer = configurations.runtimeClasspath.flatM runtime.filterNot { it.asFile.absolutePath == vanilla } } @@ -1521,10 +1473,10 @@ index 0000000000000000000000000000000000000000..badff5d6ae6dd8d209c82bc7e8afe370 + } +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 27db614d46dffc2d10f18d79cc5a084f3421d86b..58234db42c54ce32f1a8e0cd755ca350e87f3696 100644 +index 7b5d3fac1b5f4d22340a620a5edd5a8fba6be584..e021ac312127e0544606ab466cab781915e027d2 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -670,6 +670,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop extraPluginJars() { -@@ -1113,6 +1113,7 @@ public final class CraftServer implements Server { +@@ -966,6 +966,7 @@ public final class CraftServer implements Server { this.enablePlugins(PluginLoadOrder.STARTUP); this.enablePlugins(PluginLoadOrder.POSTWORLD); this.getPluginManager().callEvent(new ServerLoadEvent(ServerLoadEvent.LoadType.RELOAD)); + if (io.papermc.paper.plugin.PluginInitializerManager.instance().pluginRemapper != null) io.papermc.paper.plugin.PluginInitializerManager.instance().pluginRemapper.pluginsEnabled(); // Paper - Remap plugins - org.spigotmc.WatchdogThread.hasStarted = true; // Paper - Disable watchdog early timeout on reload } + @Override diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 3c7a771c48cc2732cc038ca11bb93ec5f8c2d667..183d8abcaa968117553601a0e9a27e8144737247 100644 +index adf28b8e77d42267ce41713e031ee316366202e8..29698be6e4990769cbe1c00088dfb9cfc73d966a 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -74,6 +74,7 @@ import org.bukkit.potion.PotionType; +@@ -72,6 +72,7 @@ import org.bukkit.potion.PotionType; @SuppressWarnings("deprecation") public final class CraftMagicNumbers implements UnsafeValues { @@ -1904,22 +1847,20 @@ index 3c7a771c48cc2732cc038ca11bb93ec5f8c2d667..183d8abcaa968117553601a0e9a27e81 public static final UnsafeValues INSTANCE = new CraftMagicNumbers(); private CraftMagicNumbers() {} -@@ -392,7 +393,7 @@ public final class CraftMagicNumbers implements UnsafeValues { - if (pluginIndex < minimumIndex) { - throw new InvalidPluginException("Plugin API version " + pdf.getAPIVersion() + " is lower than the minimum allowed version. Please update or replace it."); - } -- } else { -+ } else if (!DISABLE_PLUGIN_REWRITING) { - if (minimumIndex == -1) { - CraftLegacy.init(); - Bukkit.getLogger().log(Level.WARNING, "Legacy plugin " + pdf.getFullName() + " does not specify an api-version."); -@@ -408,6 +409,9 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -356,7 +357,7 @@ public final class CraftMagicNumbers implements UnsafeValues { + throw new InvalidPluginException("Plugin API version " + pdf.getAPIVersion() + " is lower than the minimum allowed version. Please update or replace it."); + } + +- if (toCheck.isOlderThan(ApiVersion.FLATTENING)) { ++ if (!DISABLE_PLUGIN_REWRITING && toCheck.isOlderThan(ApiVersion.FLATTENING)) { // Paper + CraftLegacy.init(); + } + +@@ -371,6 +372,7 @@ public final class CraftMagicNumbers implements UnsafeValues { @Override public byte[] processClass(PluginDescriptionFile pdf, String path, byte[] clazz) { -+ if (DISABLE_PLUGIN_REWRITING) { -+ return clazz; -+ } ++ if (DISABLE_PLUGIN_REWRITING) return clazz; // Paper try { - clazz = Commodore.convert(clazz, !CraftMagicNumbers.isLegacy(pdf)); + clazz = Commodore.convert(clazz, pdf.getName(), ApiVersion.getOrCreateVersion(pdf.getAPIVersion())); } catch (Exception ex) { diff --git a/patches/unapplied/server/0021-Remap-reflection-calls-in-plugins-using-internals.patch b/patches/server/0021-Remap-reflection-calls-in-plugins-using-internals.patch similarity index 82% rename from patches/unapplied/server/0021-Remap-reflection-calls-in-plugins-using-internals.patch rename to patches/server/0021-Remap-reflection-calls-in-plugins-using-internals.patch index 923cc03824..0f816c0c05 100644 --- a/patches/unapplied/server/0021-Remap-reflection-calls-in-plugins-using-internals.patch +++ b/patches/server/0021-Remap-reflection-calls-in-plugins-using-internals.patch @@ -6,18 +6,18 @@ Subject: [PATCH] Remap reflection calls in plugins using internals Co-authored-by: Jason Penilla <11360596+jpenilla@users.noreply.github.com> diff --git a/build.gradle.kts b/build.gradle.kts -index 69f6e6aa7f71c155651826400c6d41f075eb9ea3..ccdf5120013adfe9604d503dd3570bc74c2cca91 100644 +index ddd9bf846c7e918a1a36a6035b220db201c42440..447d98e58fbcb70ab50c27ef077abb27558e3577 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -36,7 +36,6 @@ dependencies { +@@ -34,7 +34,6 @@ dependencies { implementation("org.ow2.asm:asm-commons:9.7") implementation("org.spongepowered:configurate-yaml:4.2.0-SNAPSHOT") // Paper - config files implementation("commons-lang:commons-lang:2.6") - implementation("net.fabricmc:mapping-io:0.5.0") // Paper - needed to read mappings for stacktrace deobfuscation - runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.1") - runtimeOnly("com.mysql:mysql-connector-j:8.2.0") runtimeOnly("com.lmax:disruptor:3.4.4") // Paper -@@ -58,6 +57,12 @@ dependencies { + + runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.6") +@@ -48,6 +47,12 @@ dependencies { testImplementation("org.junit-pioneer:junit-pioneer:2.2.0") // Paper - CartesianTest implementation("net.neoforged:AutoRenamingTool:2.0.3") // Paper - remap plugins implementation("net.neoforged:srgutils:1.0.9") // Paper - remap plugins - bump transitive of ART @@ -30,27 +30,6 @@ index 69f6e6aa7f71c155651826400c6d41f075eb9ea3..ccdf5120013adfe9604d503dd3570bc7 } paperweight { -diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -index 59699c59fdfc611177fdb3136f84ab539b17d9c9..3be5e7629f0a45e32a70524eec13df7aab648f00 100644 ---- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -+++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -@@ -4,6 +4,7 @@ import com.destroystokyo.paper.entity.RangedEntity; - import com.destroystokyo.paper.util.set.OptimizedSmallEnumSet; - import com.google.common.collect.BiMap; - import com.google.common.collect.HashBiMap; -+import io.papermc.paper.util.MappingEnvironment; - import io.papermc.paper.util.ObfHelper; - import java.lang.reflect.Constructor; - import java.util.EnumSet; -@@ -249,7 +250,7 @@ public class MobGoalHelper { - } - - public static String getUsableName(Class clazz) { -- String name = ObfHelper.INSTANCE.deobfClassName(clazz.getName()); -+ String name = MappingEnvironment.reobf() ? ObfHelper.INSTANCE.deobfClassName(clazz.getName()) : clazz.getName(); - name = name.substring(name.lastIndexOf(".") + 1); - boolean flag = false; - // inner classes diff --git a/src/main/java/io/papermc/paper/configuration/serializer/PacketClassSerializer.java b/src/main/java/io/papermc/paper/configuration/serializer/PacketClassSerializer.java index 893ad5e7c2d32ccd64962d95d146bbd317c28ab8..3d73ea0e63c97b2b08e719b7be7af3894fb2d4e8 100644 --- a/src/main/java/io/papermc/paper/configuration/serializer/PacketClassSerializer.java @@ -665,37 +644,11 @@ index 0000000000000000000000000000000000000000..c0a486cb46ff30353c3ff09567891cd3 + return this.pool.computeIfAbsent(string, Function.identity()); + } +} -diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java b/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java -index 0a2e894d8bd1268fcbd4460745304816be46beff..93d6813c63618e39efb1f9f0097843dc9c014fed 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java -+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java -@@ -32,7 +32,7 @@ public abstract class Behavior implements BehaviorContro - this.maxDuration = maxRunTime; - this.entryCondition = requiredMemoryState; - // Paper start - configurable behavior tick rate and timings -- String key = io.papermc.paper.util.ObfHelper.INSTANCE.deobfClassName(this.getClass().getName()); -+ String key = io.papermc.paper.util.MappingEnvironment.reobf() ? io.papermc.paper.util.ObfHelper.INSTANCE.deobfClassName(this.getClass().getName()) : this.getClass().getName(); - int lastSeparator = key.lastIndexOf('.'); - if (lastSeparator != -1) { - key = key.substring(lastSeparator + 1); -diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -index de2dfaf3cb41bafd48fa4699096a0a7304cd3201..05d1087e318137323718f6ff30f68b70bbc5bec9 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -+++ b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -@@ -33,7 +33,7 @@ public abstract class Sensor { - - public Sensor(int senseInterval) { - // Paper start - configurable sensor tick rate and timings -- String key = io.papermc.paper.util.ObfHelper.INSTANCE.deobfClassName(this.getClass().getName()); -+ String key = io.papermc.paper.util.MappingEnvironment.reobf() ? io.papermc.paper.util.ObfHelper.INSTANCE.deobfClassName(this.getClass().getName()) : this.getClass().getName(); - int lastSeparator = key.lastIndexOf('.'); - if (lastSeparator != -1) { - key = key.substring(lastSeparator + 1); diff --git a/src/main/java/net/minecraft/world/level/redstone/CollectingNeighborUpdater.java b/src/main/java/net/minecraft/world/level/redstone/CollectingNeighborUpdater.java -index 106af2b2c7ff72c7549975aef75cdcff8d9a7d97..c0adfa72a6b43b72825797572c5c2557042e2a42 100644 +index 457a963ee6ebd3cf5c3831f6660e3850335af49f..61744d8fde3ba98585cf261fc09f0acc042b67b8 100644 --- a/src/main/java/net/minecraft/world/level/redstone/CollectingNeighborUpdater.java +++ b/src/main/java/net/minecraft/world/level/redstone/CollectingNeighborUpdater.java -@@ -141,7 +141,7 @@ public class CollectingNeighborUpdater implements NeighborUpdater { +@@ -128,7 +128,7 @@ public class CollectingNeighborUpdater implements NeighborUpdater { } } @@ -704,60 +657,3 @@ index 106af2b2c7ff72c7549975aef75cdcff8d9a7d97..c0adfa72a6b43b72825797572c5c2557 boolean runNext(Level world); } -diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -index bc008773f8cf0d416182152ecfc5a64b70744009..757be022ace25b816d4630d134e6b7ff74e584c3 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -@@ -57,36 +57,20 @@ public class Commodore { - - // Paper start - Plugin rewrites - private static final String CB_PACKAGE = org.bukkit.Bukkit.getServer().getClass().getPackageName().replace('.', '/'); -- private static final Map SEARCH_AND_REMOVE = initReplacementsMap(); -- private static Map initReplacementsMap() { -- Map getAndRemove = new HashMap<>(); -- // Be wary of maven shade's relocations -- -- final java.util.jar.Manifest manifest = io.papermc.paper.util.JarManifests.manifest(Commodore.class); -- if (Boolean.getBoolean( "debug.rewriteForIde") && manifest != null) -- { -- // unversion incoming calls for pre-relocate debug work -- final String NMS_REVISION_PACKAGE = "v" + manifest.getMainAttributes().getValue("CraftBukkit-Package-Version") + "/"; -- -- getAndRemove.put("org/bukkit/".concat("craftbukkit/" + NMS_REVISION_PACKAGE), NMS_REVISION_PACKAGE); -- } -- -- return getAndRemove; -- } -+ private static final String CB_PACKAGE_PREFIX = "org/bukkit/".concat("craftbukkit/"); -+ private static final String LEGACY_CB_PACKAGE_PREFIX = CB_PACKAGE_PREFIX + io.papermc.paper.util.MappingEnvironment.LEGACY_CB_VERSION + "/"; - - @Nonnull - private static String getOriginalOrRewrite(@Nonnull String original) - { -- String rewrite = null; -- for ( Map.Entry entry : SEARCH_AND_REMOVE.entrySet() ) -- { -- if ( original.contains( entry.getKey() ) ) -- { -- rewrite = original.replace( entry.getValue(), "" ); -+ // Relocation is applied in reobf, and when mappings are present they handle the relocation -+ if (!io.papermc.paper.util.MappingEnvironment.reobf() && !io.papermc.paper.util.MappingEnvironment.hasMappings()) { -+ if (original.contains(LEGACY_CB_PACKAGE_PREFIX)) { -+ original = original.replace(LEGACY_CB_PACKAGE_PREFIX, CB_PACKAGE_PREFIX); - } - } - -- return rewrite != null ? rewrite : original; -+ return original; - } - // Paper end - Plugin rewrites - -@@ -156,7 +140,7 @@ public class Commodore { - ClassReader cr = new ClassReader(b); - ClassWriter cw = new ClassWriter(cr, 0); - -- cr.accept(new ClassRemapper(new ClassVisitor(Opcodes.ASM9, cw) { -+ cr.accept(new ClassRemapper(new ClassVisitor(Opcodes.ASM9, io.papermc.paper.pluginremap.reflect.ReflectionRemapper.visitor(cw)) { // Paper - - // Paper start - Rewrite plugins - @Override diff --git a/patches/unapplied/server/0022-Add-WorldEdit-plugin-flag-test-task.patch b/patches/server/0022-Add-WorldEdit-plugin-flag-test-task.patch similarity index 92% rename from patches/unapplied/server/0022-Add-WorldEdit-plugin-flag-test-task.patch rename to patches/server/0022-Add-WorldEdit-plugin-flag-test-task.patch index 3740f39b9c..d8541e5ccc 100644 --- a/patches/unapplied/server/0022-Add-WorldEdit-plugin-flag-test-task.patch +++ b/patches/server/0022-Add-WorldEdit-plugin-flag-test-task.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add WorldEdit plugin flag test task diff --git a/build.gradle.kts b/build.gradle.kts -index ccdf5120013adfe9604d503dd3570bc74c2cca91..73b3e61cbbdf5025c24d289597648f01f632a5e3 100644 +index 447d98e58fbcb70ab50c27ef077abb27558e3577..3b9eb1fdc0685aec10b13a8e0e6b3afa4d953250 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,9 +1,11 @@ @@ -20,7 +20,7 @@ index ccdf5120013adfe9604d503dd3570bc74c2cca91..73b3e61cbbdf5025c24d289597648f01 } val log4jPlugins = sourceSets.create("log4jPlugins") -@@ -186,6 +188,25 @@ tasks.registerRunTask("runDevServer") { +@@ -176,6 +178,25 @@ tasks.registerRunTask("runDevServer") { jvmArgs("-DPaper.pushPaperAssetsRoot=true") } diff --git a/patches/unapplied/server/0027-Add-command-line-option-to-load-extra-plugin-jars-no.patch b/patches/unapplied/server/0027-Add-command-line-option-to-load-extra-plugin-jars-no.patch index aa17ed15b2..21c72146ec 100644 --- a/patches/unapplied/server/0027-Add-command-line-option-to-load-extra-plugin-jars-no.patch +++ b/patches/unapplied/server/0027-Add-command-line-option-to-load-extra-plugin-jars-no.patch @@ -17,7 +17,7 @@ index 5a720c0a751e7a83976727d01cc5bc6282702255..48c40f12649735f14204c516eace6905 + // Paper start + @Override + public File getPluginsFolder() { -+ return (File) this.console.options.valueOf("plugins"); ++ return this.console.getPluginsFolder(); + } + + private List extraPluginJars() { diff --git a/patches/unapplied/server/0377-Implement-Mob-Goal-API.patch b/patches/unapplied/server/0377-Implement-Mob-Goal-API.patch index 6b2e0d999b..d09dc5505c 100644 --- a/patches/unapplied/server/0377-Implement-Mob-Goal-API.patch +++ b/patches/unapplied/server/0377-Implement-Mob-Goal-API.patch @@ -273,7 +273,7 @@ index 0000000000000000000000000000000000000000..8117578ced94aa6bf01871f6526a3883 + } + + public static String getUsableName(Class clazz) { -+ String name = ObfHelper.INSTANCE.deobfClassName(clazz.getName()); ++ String name = MappingEnvironment.reobf() ? ObfHelper.INSTANCE.deobfClassName(clazz.getName()) : clazz.getName(); + name = name.substring(name.lastIndexOf(".") + 1); + boolean flag = false; + // inner classes diff --git a/patches/unapplied/server/0604-Rate-options-and-timings-for-sensors-and-behaviors.patch b/patches/unapplied/server/0604-Rate-options-and-timings-for-sensors-and-behaviors.patch index 2832058fe5..55db17273c 100644 --- a/patches/unapplied/server/0604-Rate-options-and-timings-for-sensors-and-behaviors.patch +++ b/patches/unapplied/server/0604-Rate-options-and-timings-for-sensors-and-behaviors.patch @@ -47,7 +47,7 @@ index f639cafa64d98a001e622882c647701547f5c3ac..03092417cd8ab5c6d266f3af9f20f47b this.maxDuration = maxRunTime; this.entryCondition = requiredMemoryState; + // Paper start - configurable behavior tick rate and timings -+ String key = io.papermc.paper.util.ObfHelper.INSTANCE.deobfClassName(this.getClass().getName()); ++ String key = io.papermc.paper.util.MappingEnvironment.reobf() ? io.papermc.paper.util.ObfHelper.INSTANCE.deobfClassName(this.getClass().getName()) : this.getClass().getName(); + int lastSeparator = key.lastIndexOf('.'); + if (lastSeparator != -1) { + key = key.substring(lastSeparator + 1); @@ -107,7 +107,7 @@ index 671fc7725d7c801a2ba009da5bd1bc1a9530f187..9e90cb2f51d1bacacb287e912d14ab91 public Sensor(int senseInterval) { + // Paper start - configurable sensor tick rate and timings -+ String key = io.papermc.paper.util.ObfHelper.INSTANCE.deobfClassName(this.getClass().getName()); ++ String key = io.papermc.paper.util.MappingEnvironment.reobf() ? io.papermc.paper.util.ObfHelper.INSTANCE.deobfClassName(this.getClass().getName()) : this.getClass().getName(); + int lastSeparator = key.lastIndexOf('.'); + if (lastSeparator != -1) { + key = key.substring(lastSeparator + 1);