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