SPIGOT-7371: Fix editing signs with API

By: md_5 <git@md-5.net>
This commit is contained in:
CraftBukkit/Spigot 2023-06-08 07:56:25 +10:00
parent e5fdca81b2
commit ef776287cb
2 changed files with 9 additions and 7 deletions

View File

@ -87,8 +87,8 @@ public class CraftSign<T extends TileEntitySign> extends CraftBlockEntityState<T
@Override @Override
public void applyTo(T sign) { public void applyTo(T sign) {
front.applyLegacyStringToSignSide(); getSnapshot().setText(front.applyLegacyStringToSignSide(), true);
back.applyLegacyStringToSignSide(); getSnapshot().setText(back.applyLegacyStringToSignSide(), false);
super.applyTo(sign); super.applyTo(sign);
} }

View File

@ -15,7 +15,7 @@ public class CraftSignSide implements SignSide {
// Lazily initialized only if requested: // Lazily initialized only if requested:
private String[] originalLines = null; private String[] originalLines = null;
private String[] lines = null; private String[] lines = null;
private final SignText signText; private SignText signText;
public CraftSignSide(SignText signText) { public CraftSignSide(SignText signText) {
this.signText = signText; this.signText = signText;
@ -53,7 +53,7 @@ public class CraftSignSide implements SignSide {
@Override @Override
public void setGlowingText(boolean glowing) { public void setGlowingText(boolean glowing) {
signText.setHasGlowingText(glowing); signText = signText.setHasGlowingText(glowing);
} }
@Nullable @Nullable
@ -64,18 +64,20 @@ public class CraftSignSide implements SignSide {
@Override @Override
public void setColor(@NotNull DyeColor color) { public void setColor(@NotNull DyeColor color) {
signText.setColor(EnumColor.byId(color.getWoolData())); signText = signText.setColor(EnumColor.byId(color.getWoolData()));
} }
public void applyLegacyStringToSignSide() { public SignText applyLegacyStringToSignSide() {
if (lines != null) { if (lines != null) {
for (int i = 0; i < lines.length; i++) { for (int i = 0; i < lines.length; i++) {
String line = (lines[i] == null) ? "" : lines[i]; String line = (lines[i] == null) ? "" : lines[i];
if (line.equals(originalLines[i])) { if (line.equals(originalLines[i])) {
continue; // The line contents are still the same, skip. continue; // The line contents are still the same, skip.
} }
signText.setMessage(i, CraftChatMessage.fromString(line)[0]); signText = signText.setMessage(i, CraftChatMessage.fromString(line)[0]);
} }
} }
return signText;
} }
} }