Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@
import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit;

import java.util.ArrayList;
import java.util.List;

public class PaperModule {

public static void init() {
Expand Down Expand Up @@ -165,6 +168,14 @@ public static String stringifyComponent(Component component) {
return FormattedTextHelper.stringify(FormattedTextHelper.parseJson(componentToJson(component)));
}

public static List<String> stringifyComponentList(List<Component> components) {
List<String> values = new ArrayList<>(components.size());
for (Component component : components) {
values.add(stringifyComponent(component));
}
return values;
}

public static Component jsonToComponent(String json) {
if (json == null) {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.*;
import org.bukkit.block.Sign;
import org.bukkit.block.sign.Side;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.*;
import org.bukkit.event.entity.CreatureSpawnEvent;
Expand Down Expand Up @@ -101,18 +102,28 @@ public String getPlayerListName(Player player) {
}

@Override
public String[] getSignLines(Sign sign) {
String[] output = new String[4];
int i = 0;
for (Component component : sign.lines()) {
output[i++] = PaperModule.stringifyComponent(component);
}
return output;
public List<String> getSignLines(Sign sign) {
return PaperModule.stringifyComponentList(NMSHandler.getVersion().isAtLeast(NMSVersion.v1_20) ? sign.getSide(Side.FRONT).lines() : sign.lines());
}

@Override
public List<String> getBackSignLines(Sign sign) {
return PaperModule.stringifyComponentList(sign.getSide(Side.BACK).lines());
}

@Override
public void setSignLine(Sign sign, int line, String text) {
sign.line(line, PaperModule.parseFormattedText(text == null ? "" : text, ChatColor.BLACK));
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_20)) {
sign.getSide(Side.FRONT).line(line, PaperModule.parseFormattedText(text == null ? "" : text, ChatColor.BLACK));
}
else {
sign.line(line, PaperModule.parseFormattedText(text == null ? "" : text, ChatColor.BLACK));
}
}

@Override
public void setBackSignLine(Sign sign, int line, String text) {
sign.getSide(Side.BACK).line(line, PaperModule.parseFormattedText(text == null ? "" : text, ChatColor.BLACK));
}

@Override
Expand Down
Loading