diff --git a/paper-api/src/main/java/org/bukkit/util/ChatPaginator.java b/paper-api/src/main/java/org/bukkit/util/ChatPaginator.java index 1f51021181..dea3b53c29 100644 --- a/paper-api/src/main/java/org/bukkit/util/ChatPaginator.java +++ b/paper-api/src/main/java/org/bukkit/util/ChatPaginator.java @@ -133,17 +133,12 @@ public class ChatPaginator { } // Iterate over the wrapped lines, applying the last color from one line to the beginning of the next - if (lines.get(0).length() == 0 || lines.get(0).charAt(0) != ChatColor.COLOR_CHAR) { - lines.set(0, ChatColor.WHITE + lines.get(0)); - } for (int i = 1; i < lines.size(); i++) { final String pLine = lines.get(i - 1); final String subLine = lines.get(i); - char color = pLine.charAt(pLine.lastIndexOf(ChatColor.COLOR_CHAR) + 1); - if (subLine.length() == 0 || subLine.charAt(0) != ChatColor.COLOR_CHAR) { - lines.set(i, ChatColor.getByChar(color) + subLine); - } + String color = ChatColor.getLastColors(pLine); + lines.set(i, color + subLine); } return lines.toArray(new String[lines.size()]); diff --git a/paper-api/src/test/java/org/bukkit/ChatPaginatorTest.java b/paper-api/src/test/java/org/bukkit/ChatPaginatorTest.java index d38e64f099..b0384b12e5 100644 --- a/paper-api/src/test/java/org/bukkit/ChatPaginatorTest.java +++ b/paper-api/src/test/java/org/bukkit/ChatPaginatorTest.java @@ -22,8 +22,8 @@ public class ChatPaginatorTest { String[] lines = ChatPaginator.wordWrap(rawString, 22); assertThat(lines.length, is(2)); - assertThat(lines[0], is(ChatColor.WHITE.toString() + "123456789 123456789")); - assertThat(lines[1], is(ChatColor.WHITE.toString() + "123456789")); + assertThat(lines[0], is("123456789 123456789")); + assertThat(lines[1], is("123456789")); } @Test @@ -33,8 +33,8 @@ public class ChatPaginatorTest { assertThat(lines.length, is(3)); assertThat(lines[0], is(ChatColor.RED + "123456789")); - assertThat(lines[1], is(ChatColor.RED.toString() + ChatColor.RED + "123456789")); - assertThat(lines[2], is(ChatColor.RED + "123456789")); + assertThat(lines[1], is(ChatColor.RED.toString() + ChatColor.RED + ChatColor.RED + "123456789")); + assertThat(lines[2], is(ChatColor.RED.toString() + ChatColor.RED + "123456789")); } @Test @@ -43,8 +43,8 @@ public class ChatPaginatorTest { String[] lines = ChatPaginator.wordWrap(rawString, 19); assertThat(lines.length, is(2)); - assertThat(lines[0], is(ChatColor.WHITE.toString() + "123456789 123456789")); - assertThat(lines[1], is(ChatColor.WHITE.toString() + "123456789 12345")); + assertThat(lines[0], is("123456789 123456789")); + assertThat(lines[1], is("123456789 12345")); } @Test @@ -53,8 +53,8 @@ public class ChatPaginatorTest { String[] lines = ChatPaginator.wordWrap(rawString, 19); assertThat(lines.length, is(2)); - assertThat(lines[0], is(ChatColor.WHITE.toString() + "123456789")); - assertThat(lines[1], is(ChatColor.WHITE.toString() + "123456789 123456789")); + assertThat(lines[0], is("123456789")); + assertThat(lines[1], is("123456789 123456789")); } @Test @@ -63,8 +63,8 @@ public class ChatPaginatorTest { String[] lines = ChatPaginator.wordWrap(rawString, 19); assertThat(lines.length, is(2)); - assertThat(lines[0], is(ChatColor.WHITE.toString() + "12345678 23456789")); - assertThat(lines[1], is(ChatColor.WHITE.toString() + "123456789")); + assertThat(lines[0], is("12345678 23456789")); + assertThat(lines[1], is("123456789")); } @Test @@ -73,8 +73,8 @@ public class ChatPaginatorTest { String[] lines = ChatPaginator.wordWrap(rawString, 19); assertThat(lines.length, is(2)); - assertThat(lines[0], is(ChatColor.WHITE.toString() + "12345678 23456789")); - assertThat(lines[1], is(ChatColor.WHITE.toString() + "123456789")); + assertThat(lines[0], is("12345678 23456789")); + assertThat(lines[1], is("123456789")); } @Test @@ -83,12 +83,12 @@ public class ChatPaginatorTest { String[] lines = ChatPaginator.wordWrap(rawString, 6); assertThat(lines.length, is(6)); - assertThat(lines[0], is(ChatColor.WHITE.toString() + "123456")); - assertThat(lines[1], is(ChatColor.WHITE.toString() + "789")); - assertThat(lines[2], is(ChatColor.WHITE.toString() + "123456")); - assertThat(lines[3], is(ChatColor.WHITE.toString() + "789")); - assertThat(lines[4], is(ChatColor.WHITE.toString() + "123456")); - assertThat(lines[5], is(ChatColor.WHITE.toString() + "789")); + assertThat(lines[0], is("123456")); + assertThat(lines[1], is("789")); + assertThat(lines[2], is("123456")); + assertThat(lines[3], is("789")); + assertThat(lines[4], is("123456")); + assertThat(lines[5], is("789")); } @Test @@ -97,13 +97,13 @@ public class ChatPaginatorTest { String[] lines = ChatPaginator.wordWrap(rawString, 6); assertThat(lines.length, is(7)); - assertThat(lines[0], is(ChatColor.WHITE.toString() + "1234")); - assertThat(lines[1], is(ChatColor.WHITE.toString() + "123456")); - assertThat(lines[2], is(ChatColor.WHITE.toString() + "789")); - assertThat(lines[3], is(ChatColor.WHITE.toString() + "123456")); - assertThat(lines[4], is(ChatColor.WHITE.toString() + "789")); - assertThat(lines[5], is(ChatColor.WHITE.toString() + "123456")); - assertThat(lines[6], is(ChatColor.WHITE.toString() + "789")); + assertThat(lines[0], is("1234")); + assertThat(lines[1], is("123456")); + assertThat(lines[2], is("789")); + assertThat(lines[3], is("123456")); + assertThat(lines[4], is("789")); + assertThat(lines[5], is("123456")); + assertThat(lines[6], is("789")); } @Test @@ -112,8 +112,8 @@ public class ChatPaginatorTest { String[] lines = ChatPaginator.wordWrap(rawString, 19); assertThat(lines.length, is(2)); - assertThat(lines[0], is(ChatColor.WHITE.toString() + "123456789")); - assertThat(lines[1], is(ChatColor.WHITE.toString() + "123456789")); + assertThat(lines[0], is("123456789")); + assertThat(lines[1], is("123456789")); } @Test @@ -131,8 +131,19 @@ public class ChatPaginatorTest { String[] lines = ChatPaginator.wordWrap(rawString, 5); assertThat(lines.length, is(2)); - assertThat(lines[0], is(ChatColor.WHITE.toString() + "123 1")); - assertThat(lines[1], is(ChatColor.WHITE.toString() + "123")); + assertThat(lines[0], is("123 1")); + assertThat(lines[1], is("123")); + } + + @Test + public void testWordWrap13() { + String rawString = ChatColor.RED + "123456789 " + ChatColor.RED + ChatColor.BOLD + "123456789 " + ChatColor.RED + "123456789"; + String[] lines = ChatPaginator.wordWrap(rawString, 16); + + assertThat(lines.length, is(3)); + assertThat(lines[0], is(ChatColor.RED + "123456789")); + assertThat(lines[1], is(ChatColor.RED.toString() + ChatColor.RED + ChatColor.BOLD + "123456789")); + assertThat(lines[2], is(ChatColor.RED.toString() + ChatColor.BOLD + ChatColor.RED + "123456789")); } @Test @@ -143,8 +154,8 @@ public class ChatPaginatorTest { assertThat(page.getPageNumber(), is(1)); assertThat(page.getTotalPages(), is(4)); assertThat(page.getLines().length, is(2)); - assertThat(page.getLines()[0], is(ChatColor.WHITE.toString() + "1234")); - assertThat(page.getLines()[1], is(ChatColor.WHITE.toString() + "123456")); + assertThat(page.getLines()[0], is("1234")); + assertThat(page.getLines()[1], is("123456")); } @Test @@ -155,8 +166,8 @@ public class ChatPaginatorTest { assertThat(page.getPageNumber(), is(2)); assertThat(page.getTotalPages(), is(4)); assertThat(page.getLines().length, is(2)); - assertThat(page.getLines()[0], is(ChatColor.WHITE.toString() + "789")); - assertThat(page.getLines()[1], is(ChatColor.WHITE.toString() + "123456")); + assertThat(page.getLines()[0], is("789")); + assertThat(page.getLines()[1], is("123456")); } @Test @@ -167,6 +178,6 @@ public class ChatPaginatorTest { assertThat(page.getPageNumber(), is(4)); assertThat(page.getTotalPages(), is(4)); assertThat(page.getLines().length, is(1)); - assertThat(page.getLines()[0], is(ChatColor.WHITE.toString() + "789")); + assertThat(page.getLines()[0], is("789")); } }