From 20710a00de4c10a327e6f20e79136f898410d0ee Mon Sep 17 00:00:00 2001 From: Intelli Date: Tue, 20 Dec 2022 14:37:22 -0700 Subject: [PATCH] Added legacy component serialization support for signs in Paper 1.17+ --- .../listener/block/BlockBreakListener.java | 9 +++++---- .../java/net/coreprotect/paper/PaperAdapter.java | 14 +++++++++++--- .../net/coreprotect/paper/PaperInterface.java | 3 +++ .../java/net/coreprotect/paper/Paper_v1_17.java | 15 +++++++++++++++ 4 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 src/main/java/net/coreprotect/paper/Paper_v1_17.java diff --git a/src/main/java/net/coreprotect/listener/block/BlockBreakListener.java b/src/main/java/net/coreprotect/listener/block/BlockBreakListener.java index 87672dc..c6393d6 100644 --- a/src/main/java/net/coreprotect/listener/block/BlockBreakListener.java +++ b/src/main/java/net/coreprotect/listener/block/BlockBreakListener.java @@ -38,6 +38,7 @@ import net.coreprotect.config.Config; import net.coreprotect.consumer.Queue; import net.coreprotect.database.Database; import net.coreprotect.model.BlockGroup; +import net.coreprotect.paper.PaperAdapter; import net.coreprotect.utility.Util; public final class BlockBreakListener extends Queue implements Listener { @@ -278,10 +279,10 @@ public final class BlockBreakListener extends Queue implements Listener { try { Location location = blockState.getLocation(); Sign sign = (Sign) blockLog.getState(); - String line1 = sign.getLine(0); - String line2 = sign.getLine(1); - String line3 = sign.getLine(2); - String line4 = sign.getLine(3); + String line1 = PaperAdapter.ADAPTER.getLine(sign, 0); + String line2 = PaperAdapter.ADAPTER.getLine(sign, 1); + String line3 = PaperAdapter.ADAPTER.getLine(sign, 2); + String line4 = PaperAdapter.ADAPTER.getLine(sign, 3); int color = sign.getColor().getColor().asRGB(); boolean isGlowing = BukkitAdapter.ADAPTER.isGlowing(sign); Queue.queueSignText(user, location, 0, color, isGlowing, line1, line2, line3, line4, 5); diff --git a/src/main/java/net/coreprotect/paper/PaperAdapter.java b/src/main/java/net/coreprotect/paper/PaperAdapter.java index 0e69708..c17416d 100644 --- a/src/main/java/net/coreprotect/paper/PaperAdapter.java +++ b/src/main/java/net/coreprotect/paper/PaperAdapter.java @@ -1,6 +1,7 @@ package net.coreprotect.paper; import org.bukkit.Server; +import org.bukkit.block.Sign; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; @@ -27,19 +28,21 @@ public class PaperAdapter implements PaperInterface { switch (paperVersion) { case PAPER_UNAVAILABLE: - case PAPER_V1_13: - case PAPER_V1_14: PaperAdapter.ADAPTER = new PaperAdapter(); break; + case PAPER_V1_13: + case PAPER_V1_14: case PAPER_V1_15: PaperAdapter.ADAPTER = new PaperHandler(); break; case PAPER_V1_16: + PaperAdapter.ADAPTER = new Paper_v1_16(); + break; case PAPER_V1_17: case PAPER_V1_18: case PAPER_V1_19: default: - PaperAdapter.ADAPTER = new Paper_v1_16(); + PaperAdapter.ADAPTER = new Paper_v1_17(); break; } } @@ -54,4 +57,9 @@ public class PaperAdapter implements PaperInterface { return false; } + @Override + public String getLine(Sign sign, int line) { + return sign.getLine(line); + } + } diff --git a/src/main/java/net/coreprotect/paper/PaperInterface.java b/src/main/java/net/coreprotect/paper/PaperInterface.java index c43fa56..851152e 100644 --- a/src/main/java/net/coreprotect/paper/PaperInterface.java +++ b/src/main/java/net/coreprotect/paper/PaperInterface.java @@ -1,6 +1,7 @@ package net.coreprotect.paper; import org.bukkit.Server; +import org.bukkit.block.Sign; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; @@ -10,4 +11,6 @@ public interface PaperInterface { public boolean isStopping(Server server); + public String getLine(Sign sign, int line); + } diff --git a/src/main/java/net/coreprotect/paper/Paper_v1_17.java b/src/main/java/net/coreprotect/paper/Paper_v1_17.java new file mode 100644 index 0000000..3407493 --- /dev/null +++ b/src/main/java/net/coreprotect/paper/Paper_v1_17.java @@ -0,0 +1,15 @@ +package net.coreprotect.paper; + +import org.bukkit.block.Sign; + +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; + +public class Paper_v1_17 extends Paper_v1_16 implements PaperInterface { + + @Override + public String getLine(Sign sign, int line) { + // https://docs.adventure.kyori.net/serializer/ + return LegacyComponentSerializer.legacySection().serialize(sign.line(line)); + } + +}