Skip to content

Commit c25e165

Browse files
tastybentoclaude
andcommitted
Support MiniMessage in welcome sign locale entries
Welcome sign lines sourced from locale files went through the legacy setLine(String) API, so MiniMessage tags like <red>...</red> were written verbatim. Parse each line with parseMiniMessageOrLegacy and write via SignSide.line(int, Component) so both MiniMessage and legacy color codes render correctly. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent f0ec806 commit c25e165

2 files changed

Lines changed: 12 additions & 11 deletions

File tree

src/main/java/world/bentobox/bentobox/util/DefaultPasteUtil.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -382,14 +382,15 @@ private static void writeLocalizedSignText(SignSide signSide, Island island, Lis
382382
Optional<User> user = Optional.ofNullable(island.getOwner()).map(User::getInstance);
383383
if (user.isPresent()) {
384384
for (int i = 0; i < 4; i++) {
385-
signSide.setLine(i, Util.translateColorCodes(plugin.getLocalesManager().getOrDefault(user.get(),
386-
addonName + ".sign.line" + i, "").replace(TextVariables.NAME, name)));
385+
String raw = plugin.getLocalesManager().getOrDefault(user.get(),
386+
addonName + ".sign.line" + i, "").replace(TextVariables.NAME, name);
387+
signSide.line(i, Util.parseMiniMessageOrLegacy(raw));
387388
}
388389
}
389390
} else {
390391
// Just paste
391392
for (int i = 0; i < 4; i++) {
392-
signSide.setLine(i, lines.get(i));
393+
signSide.line(i, Util.parseMiniMessageOrLegacy(lines.get(i)));
393394
}
394395
}
395396
}

src/test/java/world/bentobox/bentobox/util/DefaultPasteUtilTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -456,10 +456,10 @@ void testWriteSignNormalPastesLines() {
456456

457457
DefaultPasteUtil.writeSign(island, block, bpBlock, Side.FRONT);
458458

459-
verify(signSide).setLine(0, "line0");
460-
verify(signSide).setLine(1, "line1");
461-
verify(signSide).setLine(2, "line2");
462-
verify(signSide).setLine(3, "line3");
459+
verify(signSide).line(0, Component.text("line0"));
460+
verify(signSide).line(1, Component.text("line1"));
461+
verify(signSide).line(2, Component.text("line2"));
462+
verify(signSide).line(3, Component.text("line3"));
463463
verify(signSide).setGlowingText(true);
464464
verify(signState).update();
465465
}
@@ -477,7 +477,7 @@ void testWriteSignSpawnHereSetsAirAndSpawnPoint() {
477477
verify(block).setType(Material.AIR);
478478
verify(island).setSpawnPoint(eq(Environment.NORMAL), any(org.bukkit.Location.class));
479479
// Normal paste logic must NOT run
480-
verify(signSide, never()).setLine(any(Integer.class), anyString());
480+
verify(signSide, never()).line(any(Integer.class), any(Component.class));
481481
}
482482

483483
@Test
@@ -505,7 +505,7 @@ void testWriteSignSpawnHereOnBackSideIgnored() {
505505
DefaultPasteUtil.writeSign(island, block, bpBlock, Side.BACK);
506506

507507
verify(block, never()).setType(any());
508-
verify(signSide).setLine(0, "[spawn_here]");
508+
verify(signSide).line(0, Component.text("[spawn_here]"));
509509
}
510510

511511
@Test
@@ -516,7 +516,7 @@ void testWriteSignSpawnHereNullIslandPastesNormally() {
516516
DefaultPasteUtil.writeSign(null, block, bpBlock, Side.FRONT);
517517

518518
verify(block, never()).setType(any());
519-
verify(signSide).setLine(0, "[spawn_here]");
519+
verify(signSide).line(0, Component.text("[spawn_here]"));
520520
}
521521

522522
@Test
@@ -556,6 +556,6 @@ void testWriteSignWallSignUsesWallSignFacing() {
556556
DefaultPasteUtil.writeSign(island, block, bpBlock, Side.FRONT);
557557

558558
// Should complete without error (WallSign branch taken)
559-
verify(signSide).setLine(0, "text");
559+
verify(signSide).line(0, Component.text("text"));
560560
}
561561
}

0 commit comments

Comments
 (0)