From bb734246e6676f9161da3670832ce99a475e68e2 Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Wed, 31 May 2023 16:36:57 -0700 Subject: [PATCH] Updated Upstream (Bukkit/CraftBukkit/Spigot) (#9228) Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 4727d326 Don't let Sign extend SignSide, mark API as experimental 9b29bdcc PR-845: Add preliminary support for multi sided signs CraftBukkit Changes: b346a5f6d PR-1170: Add preliminary support for multi sided signs 86c816189 Update SQLite version d9324b4bc Fix addition of custom smithing trim / transform recipes Spigot Changes: 7d7b241e Rebuild patches --- patches/api/Adventure.patch | 137 +++++++---- .../Add-openSign-method-to-HumanEntity.patch | 2 +- patches/server/Adventure.patch | 220 ++++++++++-------- patches/server/Build-system-changes.patch | 2 +- .../server/Complete-resource-pack-API.patch | 8 - ...ktraces-in-log-messages-crash-report.patch | 2 +- patches/server/Paper-config-files.patch | 2 +- patches/server/Setup-Gradle-project.patch | 4 +- patches/server/Test-changes.patch | 2 +- ...r-to-keep-logging-IO-off-main-thread.patch | 2 +- ...ocity-compression-and-cipher-natives.patch | 2 +- ...opy-TESign-isEditable-from-snapshots.patch | 6 +- work/Bukkit | 2 +- work/CraftBukkit | 2 +- work/Spigot | 2 +- 15 files changed, 241 insertions(+), 154 deletions(-) diff --git a/patches/api/Adventure.patch b/patches/api/Adventure.patch index cbb38859e8..9c42b966a2 100644 --- a/patches/api/Adventure.patch +++ b/patches/api/Adventure.patch @@ -1538,9 +1538,85 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public interface Sign extends TileState, Colorable { + // Paper start + /** -+ * Gets all the lines of text currently on this sign. ++ * Gets all the lines of text currently on the {@link Side#FRONT} of this sign. + * -+ * @return Array of Strings containing each line of text ++ * @return List of components containing each line of text ++ * @see #getSide(Side) ++ */ ++ @NotNull ++ public java.util.List lines(); ++ ++ /** ++ * Gets the line of text at the specified index on the {@link Side#FRONT}. ++ *

++ * For example, getLine(0) will return the first line of text. ++ * ++ * @param index Line number to get the text from, starting at 0 ++ * @throws IndexOutOfBoundsException Thrown when the line does not exist ++ * @return Text on the given line ++ * @see #getSide(Side) ++ */ ++ @NotNull ++ public net.kyori.adventure.text.Component line(int index) throws IndexOutOfBoundsException; ++ ++ /** ++ * Sets the line of text at the specified index on the {@link Side#FRONT}. ++ *

++ * For example, setLine(0, "Line One") will set the first line of text to ++ * "Line One". ++ * ++ * @param index Line number to set the text at, starting from 0 ++ * @param line New text to set at the specified index ++ * @throws IndexOutOfBoundsException If the index is out of the range 0..3 ++ * @see #getSide(Side) ++ */ ++ public void line(int index, net.kyori.adventure.text.@NotNull Component line) throws IndexOutOfBoundsException; ++ // Paper end + + /** + * Gets all the lines of text currently on the {@link Side#FRONT} of this sign. +@@ -0,0 +0,0 @@ public interface Sign extends TileState, Colorable { + * @see #getSide(Side) + */ + @NotNull ++ @Deprecated // Paper + public String[] getLines(); + + /** +@@ -0,0 +0,0 @@ public interface Sign extends TileState, Colorable { + * @return Text on the given line + * @throws IndexOutOfBoundsException Thrown when the line does not exist + * @see #getSide(Side) ++ * @deprecated in favour of {@link #line(int)} + */ + @NotNull ++ @Deprecated // Paper + public String getLine(int index) throws IndexOutOfBoundsException; + + /** +@@ -0,0 +0,0 @@ public interface Sign extends TileState, Colorable { + * @param line New text to set at the specified index + * @throws IndexOutOfBoundsException If the index is out of the range 0..3 + * @see #getSide(Side) ++ * @deprecated in favour of {@link #line(int, net.kyori.adventure.text.Component)} + */ ++ @Deprecated // Paper + public void setLine(int index, @NotNull String line) throws IndexOutOfBoundsException; + + /** +diff --git a/src/main/java/org/bukkit/block/sign/SignSide.java b/src/main/java/org/bukkit/block/sign/SignSide.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/org/bukkit/block/sign/SignSide.java ++++ b/src/main/java/org/bukkit/block/sign/SignSide.java +@@ -0,0 +0,0 @@ import org.jetbrains.annotations.NotNull; + */ + @Experimental + public interface SignSide extends Colorable { ++ // Paper start ++ /** ++ * Gets all the lines of text currently on the sign. ++ * ++ * @return List of components containing each line of text + */ + @NotNull + public java.util.List lines(); @@ -1571,37 +1647,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end /** - * Gets all the lines of text currently on this sign. - * - * @return Array of Strings containing each line of text -+ * @deprecated in favour of {@link #lines()} - */ - @NotNull -+ @Deprecated // Paper - public String[] getLines(); - - /** -@@ -0,0 +0,0 @@ public interface Sign extends TileState, Colorable { - * @param index Line number to get the text from, starting at 0 - * @return Text on the given line - * @throws IndexOutOfBoundsException Thrown when the line does not exist -+ * @deprecated in favour of {@link #line(int)} - */ - @NotNull -+ @Deprecated // Paper - public String getLine(int index) throws IndexOutOfBoundsException; - - /** -@@ -0,0 +0,0 @@ public interface Sign extends TileState, Colorable { - * @param index Line number to set the text at, starting from 0 - * @param line New text to set at the specified index - * @throws IndexOutOfBoundsException If the index is out of the range 0..3 -+ * @deprecated in favour of {@link #line(int, net.kyori.adventure.text.Component)} - */ -+ @Deprecated // Paper - public void setLine(int index, @NotNull String line) throws IndexOutOfBoundsException; - - /** + * Gets all the lines of text currently on this side of the sign. diff --git a/src/main/java/org/bukkit/command/Command.java b/src/main/java/org/bukkit/command/Command.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/command/Command.java @@ -2606,17 +2652,30 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private boolean cancel = false; private final Player player; - private final String[] lines; -+ // Paper start -+ private final java.util.List adventure$lines; ++ private final java.util.List adventure$lines; // Paper + private final Side side; -+ public SignChangeEvent(@NotNull final Block theBlock, @NotNull final Player player, @NotNull final java.util.List adventure$lines) { ++ // Paper start ++ public SignChangeEvent(@NotNull final Block theBlock, @NotNull final Player player, @NotNull final java.util.List adventure$lines, @NotNull Side side) { + super(theBlock); + this.player = player; + this.adventure$lines = adventure$lines; ++ this.side = side; + } + -+ @Deprecated // Paper end ++ @Deprecated ++ public SignChangeEvent(@NotNull final Block theBlock, @NotNull final Player player, @NotNull final java.util.List adventure$lines) { ++ this(theBlock, player, adventure$lines, Side.FRONT); ++ } ++ // Paper end ++ + @Deprecated public SignChangeEvent(@NotNull final Block theBlock, @NotNull final Player thePlayer, @NotNull final String[] theLines) { + this(theBlock, thePlayer, theLines, Side.FRONT); + } + ++ @Deprecated // Paper + public SignChangeEvent(@NotNull final Block theBlock, @NotNull final Player thePlayer, @NotNull final String[] theLines, @NotNull Side side) { super(theBlock); this.player = thePlayer; - this.lines = theLines; @@ -2626,9 +2685,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + this.adventure$lines.add(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(theLine)); + } + // Paper end + this.side = side; } - /** @@ -0,0 +0,0 @@ public class SignChangeEvent extends BlockEvent implements Cancellable { return player; } @@ -2709,7 +2768,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + adventure$lines.set(index, line != null ? net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(line) : null); // Paper } - @Override + /** diff --git a/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java b/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java diff --git a/patches/server/Add-openSign-method-to-HumanEntity.patch b/patches/server/Add-openSign-method-to-HumanEntity.patch index 8c5daa7b52..10ec2d4578 100644 --- a/patches/server/Add-openSign-method-to-HumanEntity.patch +++ b/patches/server/Add-openSign-method-to-HumanEntity.patch @@ -9,7 +9,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java @@ -0,0 +0,0 @@ public class CraftSign extends CraftBlockEntityState< - } + super.applyTo(sign); } - public static void openSign(Sign sign, Player player) { diff --git a/patches/server/Adventure.patch b/patches/server/Adventure.patch index 85ca9657e7..3a9fb05a87 100644 --- a/patches/server/Adventure.patch +++ b/patches/server/Adventure.patch @@ -3216,101 +3216,30 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java b/src/mai index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java -@@ -0,0 +0,0 @@ import org.bukkit.entity.Player; - public class CraftSign extends CraftBlockEntityState implements Sign { - - // Lazily initialized only if requested: -- private String[] originalLines = null; -- private String[] lines = null; -+ // Paper start -+ private java.util.ArrayList originalLines = null; // ArrayList for RandomAccess -+ private java.util.ArrayList lines = null; // ArrayList for RandomAccess -+ // Paper end - - public CraftSign(World world, T tileEntity) { - super(world, tileEntity); - } - -+ // Paper start - @Override -- public String[] getLines() { -- if (this.lines == null) { -- // Lazy initialization: -- SignBlockEntity sign = this.getSnapshot(); -- this.lines = new String[sign.messages.length]; -- System.arraycopy(CraftSign.revertComponents(sign.messages), 0, lines, 0, lines.length); -- this.originalLines = new String[lines.length]; -- System.arraycopy(lines, 0, originalLines, 0, originalLines.length); -- } -+ public java.util.List lines() { -+ this.loadLines(); - return this.lines; - } - -+ @Override -+ public net.kyori.adventure.text.Component line(int index) { -+ this.loadLines(); -+ return this.lines.get(index); -+ } -+ -+ @Override -+ public void line(int index, net.kyori.adventure.text.Component line) { -+ this.loadLines(); -+ this.lines.set(index, line); -+ } -+ -+ private void loadLines() { -+ if (lines != null) { -+ return; -+ } -+ // Lazy initialization: -+ SignBlockEntity sign = this.getSnapshot(); -+ lines = io.papermc.paper.adventure.PaperAdventure.asAdventure(com.google.common.collect.Lists.newArrayList(sign.messages)); -+ originalLines = new java.util.ArrayList<>(lines); -+ } -+ // Paper end -+ @Override -+ public String[] getLines() { -+ this.loadLines(); -+ return this.lines.stream().map(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection()::serialize).toArray(String[]::new); // Paper -+ } -+ - @Override - public String getLine(int index) throws IndexOutOfBoundsException { -- return this.getLines()[index]; -+ this.loadLines(); -+ return net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(this.lines.get(index)); // Paper - } - - @Override - public void setLine(int index, String line) throws IndexOutOfBoundsException { -- this.getLines()[index] = line; -+ this.loadLines(); -+ this.lines.set(index, line != null ? net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(line) : net.kyori.adventure.text.Component.empty()); // Paper - } - - @Override @@ -0,0 +0,0 @@ public class CraftSign extends CraftBlockEntityState< - super.applyTo(sign); - - if (this.lines != null) { -- for (int i = 0; i < lines.length; i++) { -- String line = (this.lines[i] == null) ? "" : this.lines[i]; -- if (line.equals(this.originalLines[i])) { -+ // Paper start -+ for (int i = 0; i < this.lines.size(); ++i) { -+ net.kyori.adventure.text.Component component = this.lines.get(i); -+ net.kyori.adventure.text.Component origComp = this.originalLines.get(i); -+ if (component.equals(origComp)) { - continue; // The line contents are still the same, skip. - } -- sign.setMessage(i, CraftChatMessage.fromString(line)[0]); -+ sign.setMessage(i, io.papermc.paper.adventure.PaperAdventure.asVanilla(component)); - } -+ // Paper end - } + this.front = new CraftSignSide(this.getSnapshot()); } ++ // Paper start ++ @Override ++ public java.util.@NotNull List lines() { ++ return this.front.lines(); ++ } ++ ++ @Override ++ public net.kyori.adventure.text.@NotNull Component line(int index) { ++ return this.front.line(index); ++ } ++ ++ @Override ++ public void line(int index, net.kyori.adventure.text.@NotNull Component line) { ++ this.front.line(index, line); ++ } ++ // Paper end ++ + @Override + public String[] getLines() { + return this.front.getLines(); @@ -0,0 +0,0 @@ public class CraftSign extends CraftBlockEntityState< ((CraftPlayer) player).getHandle().openTextEdit(handle); } @@ -3332,6 +3261,113 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public static Component[] sanitizeLines(String[] lines) { Component[] components = new Component[4]; +diff --git a/src/main/java/org/bukkit/craftbukkit/block/sign/CraftSignSide.java b/src/main/java/org/bukkit/craftbukkit/block/sign/CraftSignSide.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/org/bukkit/craftbukkit/block/sign/CraftSignSide.java ++++ b/src/main/java/org/bukkit/craftbukkit/block/sign/CraftSignSide.java +@@ -0,0 +0,0 @@ import org.jetbrains.annotations.Nullable; + public class CraftSignSide implements SignSide { + + // Lazily initialized only if requested: +- private String[] originalLines = null; +- private String[] lines = null; ++ // Paper start ++ private java.util.ArrayList originalLines = null; // ArrayList for RandomAccess ++ private java.util.ArrayList lines = null; // ArrayList for RandomAccess ++ // Paper end + private final SignBlockEntity signText; + + public CraftSignSide(SignBlockEntity signText) { + this.signText = signText; + } + ++ // Paper start ++ @Override ++ public java.util.@NotNull List lines() { ++ this.loadLines(); ++ return this.lines; ++ } ++ ++ @Override ++ public net.kyori.adventure.text.@NotNull Component line(final int index) throws IndexOutOfBoundsException { ++ this.loadLines(); ++ return this.lines.get(index); ++ } ++ ++ @Override ++ public void line(final int index, final net.kyori.adventure.text.@NotNull Component line) throws IndexOutOfBoundsException { ++ this.loadLines(); ++ this.lines.set(index, line); ++ } ++ ++ private void loadLines() { ++ if (this.lines != null) { ++ return; ++ } ++ // Lazy initialization: ++ this.lines = io.papermc.paper.adventure.PaperAdventure.asAdventure(com.google.common.collect.Lists.newArrayList(this.signText.messages)); ++ this.originalLines = new java.util.ArrayList<>(this.lines); ++ } ++ // Paper end ++ + @NotNull + @Override + public String[] getLines() { +- if (this.lines == null) { +- // Lazy initialization: +- this.lines = new String[signText.messages.length]; +- System.arraycopy(CraftSign.revertComponents(signText.messages), 0, lines, 0, lines.length); +- this.originalLines = new String[lines.length]; +- System.arraycopy(lines, 0, originalLines, 0, originalLines.length); +- } +- return this.lines; ++ // Paper start ++ this.loadLines(); ++ return this.lines.stream().map(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection()::serialize).toArray(String[]::new); // Paper ++ // Paper end + } + + @NotNull + @Override + public String getLine(int index) throws IndexOutOfBoundsException { +- return this.getLines()[index]; ++ // Paper start ++ this.loadLines(); ++ return net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().serialize(this.lines.get(index)); ++ // Paper end + } + + @Override + public void setLine(int index, @NotNull String line) throws IndexOutOfBoundsException { +- this.getLines()[index] = line; ++ // Paper start ++ this.loadLines(); ++ this.lines.set(index, line != null ? net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(line) : net.kyori.adventure.text.Component.empty()); ++ // Paper end + } + + @Override +@@ -0,0 +0,0 @@ public class CraftSignSide implements SignSide { + + public void applyLegacyStringToSignSide() { + if (this.lines != null) { +- for (int i = 0; i < lines.length; i++) { +- String line = (this.lines[i] == null) ? "" : this.lines[i]; +- if (line.equals(this.originalLines[i])) { ++ // Paper start ++ for (int i = 0; i < this.lines.size(); ++i) { ++ net.kyori.adventure.text.Component component = this.lines.get(i); ++ net.kyori.adventure.text.Component origComp = this.originalLines.get(i); ++ if (component.equals(origComp)) { + continue; // The line contents are still the same, skip. + } +- this.signText.setMessage(i, CraftChatMessage.fromString(line)[0]); ++ this.signText.setMessage(i, io.papermc.paper.adventure.PaperAdventure.asVanilla(component)); + } ++ // Paper end + } + } + } diff --git a/src/main/java/org/bukkit/craftbukkit/command/CraftBlockCommandSender.java b/src/main/java/org/bukkit/craftbukkit/command/CraftBlockCommandSender.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/command/CraftBlockCommandSender.java diff --git a/patches/server/Build-system-changes.patch b/patches/server/Build-system-changes.patch index d7b636fd4c..8a9fbd0ad9 100644 --- a/patches/server/Build-system-changes.patch +++ b/patches/server/Build-system-changes.patch @@ -19,7 +19,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 implementation("org.ow2.asm:asm:9.4") + implementation("org.ow2.asm:asm-commons:9.4") // Paper - ASM event executor generation implementation("commons-lang:commons-lang:2.6") - runtimeOnly("org.xerial:sqlite-jdbc:3.41.0.0") + runtimeOnly("org.xerial:sqlite-jdbc:3.41.2.2") runtimeOnly("com.mysql:mysql-connector-j:8.0.32") @@ -0,0 +0,0 @@ dependencies { diff --git a/patches/server/Complete-resource-pack-API.patch b/patches/server/Complete-resource-pack-API.patch index 664405f3ef..8dd5f910b7 100644 --- a/patches/server/Complete-resource-pack-API.patch +++ b/patches/server/Complete-resource-pack-API.patch @@ -26,14 +26,6 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/ index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -0,0 +0,0 @@ import org.bukkit.plugin.Plugin; - import org.bukkit.plugin.messaging.StandardMessenger; - import org.bukkit.profile.PlayerProfile; - import org.bukkit.scoreboard.Scoreboard; -+import org.jetbrains.annotations.NotNull; - - import net.md_5.bungee.api.chat.BaseComponent; // Spigot - @@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player { private double healthScale = 20; private CraftWorldBorder clientWorldBorder = null; diff --git a/patches/server/Deobfuscate-stacktraces-in-log-messages-crash-report.patch b/patches/server/Deobfuscate-stacktraces-in-log-messages-crash-report.patch index bb5beceb72..6af5df1a8a 100644 --- a/patches/server/Deobfuscate-stacktraces-in-log-messages-crash-report.patch +++ b/patches/server/Deobfuscate-stacktraces-in-log-messages-crash-report.patch @@ -22,7 +22,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 implementation("org.spongepowered:configurate-yaml:4.1.2") // Paper - config files implementation("commons-lang:commons-lang:2.6") + implementation("net.fabricmc:mapping-io:0.3.0") // Paper - needed to read mappings for stacktrace deobfuscation - runtimeOnly("org.xerial:sqlite-jdbc:3.41.0.0") + runtimeOnly("org.xerial:sqlite-jdbc:3.41.2.2") runtimeOnly("com.mysql:mysql-connector-j:8.0.32") runtimeOnly("com.lmax:disruptor:3.4.4") // Paper @@ -0,0 +0,0 @@ tasks.check { diff --git a/patches/server/Paper-config-files.patch b/patches/server/Paper-config-files.patch index 1110e740b3..791215c432 100644 --- a/patches/server/Paper-config-files.patch +++ b/patches/server/Paper-config-files.patch @@ -23,7 +23,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 testImplementation("org.mockito:mockito-core:4.9.0") // Paper - switch to mockito + implementation("org.spongepowered:configurate-yaml:4.1.2") // Paper - config files implementation("commons-lang:commons-lang:2.6") - runtimeOnly("org.xerial:sqlite-jdbc:3.41.0.0") + runtimeOnly("org.xerial:sqlite-jdbc:3.41.2.2") runtimeOnly("com.mysql:mysql-connector-j:8.0.32") diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java new file mode 100644 diff --git a/patches/server/Setup-Gradle-project.patch b/patches/server/Setup-Gradle-project.patch index 62053dff33..f468c0740c 100644 --- a/patches/server/Setup-Gradle-project.patch +++ b/patches/server/Setup-Gradle-project.patch @@ -48,7 +48,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + implementation("org.ow2.asm:asm:9.4") + implementation("commons-lang:commons-lang:2.6") -+ runtimeOnly("org.xerial:sqlite-jdbc:3.41.0.0") ++ runtimeOnly("org.xerial:sqlite-jdbc:3.41.2.2") + runtimeOnly("com.mysql:mysql-connector-j:8.0.32") + + runtimeOnly("org.apache.maven:maven-resolver-provider:3.8.5") @@ -405,7 +405,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - - org.xerial - sqlite-jdbc -- 3.41.0.0 +- 3.41.2.2 - runtime - - diff --git a/patches/server/Test-changes.patch b/patches/server/Test-changes.patch index 1454df7beb..89e14093ca 100644 --- a/patches/server/Test-changes.patch +++ b/patches/server/Test-changes.patch @@ -14,7 +14,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 implementation("org.ow2.asm:asm-commons:9.4") // Paper - ASM event executor generation + testImplementation("org.mockito:mockito-core:4.9.0") // Paper - switch to mockito implementation("commons-lang:commons-lang:2.6") - runtimeOnly("org.xerial:sqlite-jdbc:3.41.0.0") + runtimeOnly("org.xerial:sqlite-jdbc:3.41.2.2") runtimeOnly("com.mysql:mysql-connector-j:8.0.32") 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 diff --git a/patches/server/Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch b/patches/server/Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch index 5b3bccc1d7..dd8c228d9b 100644 --- a/patches/server/Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch +++ b/patches/server/Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch @@ -10,7 +10,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/build.gradle.kts @@ -0,0 +0,0 @@ dependencies { implementation("commons-lang:commons-lang:2.6") - runtimeOnly("org.xerial:sqlite-jdbc:3.41.0.0") + runtimeOnly("org.xerial:sqlite-jdbc:3.41.2.2") runtimeOnly("com.mysql:mysql-connector-j:8.0.32") + runtimeOnly("com.lmax:disruptor:3.4.4") // Paper diff --git a/patches/server/Use-Velocity-compression-and-cipher-natives.patch b/patches/server/Use-Velocity-compression-and-cipher-natives.patch index 969f7b18d5..db48d5de66 100644 --- a/patches/server/Use-Velocity-compression-and-cipher-natives.patch +++ b/patches/server/Use-Velocity-compression-and-cipher-natives.patch @@ -9,7 +9,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -0,0 +0,0 @@ dependencies { - runtimeOnly("org.xerial:sqlite-jdbc:3.41.0.0") + runtimeOnly("org.xerial:sqlite-jdbc:3.41.2.2") runtimeOnly("com.mysql:mysql-connector-j:8.0.32") runtimeOnly("com.lmax:disruptor:3.4.4") // Paper + // Paper start - Use Velocity cipher diff --git a/patches/server/copy-TESign-isEditable-from-snapshots.patch b/patches/server/copy-TESign-isEditable-from-snapshots.patch index a9f8bc3ee3..1ad72b53a5 100644 --- a/patches/server/copy-TESign-isEditable-from-snapshots.patch +++ b/patches/server/copy-TESign-isEditable-from-snapshots.patch @@ -9,9 +9,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java @@ -0,0 +0,0 @@ public class CraftSign extends CraftBlockEntityState< - } - // Paper end - } + this.front.applyLegacyStringToSignSide(); + + super.applyTo(sign); + sign.isEditable = getSnapshot().isEditable; // Paper - copy manually } diff --git a/work/Bukkit b/work/Bukkit index 2fcba9b271..4727d326da 160000 --- a/work/Bukkit +++ b/work/Bukkit @@ -1 +1 @@ -Subproject commit 2fcba9b271a8557073af845ba6c9c1c121565bea +Subproject commit 4727d326da2bcd87ae2a6e6d6dd0cc5249c0288f diff --git a/work/CraftBukkit b/work/CraftBukkit index 01b2e1af41..b346a5f6dd 160000 --- a/work/CraftBukkit +++ b/work/CraftBukkit @@ -1 +1 @@ -Subproject commit 01b2e1af41a8698d54437d275b2e7d41014d5d81 +Subproject commit b346a5f6dd890c8ecfff2323082a8178c4fffa62 diff --git a/work/Spigot b/work/Spigot index 7da74dae7f..7d7b241e35 160000 --- a/work/Spigot +++ b/work/Spigot @@ -1 +1 @@ -Subproject commit 7da74dae7f21e374cd5ee71645fb2bfccdf05beb +Subproject commit 7d7b241e353e86ee90ad025dab0262b050a6fe4a