diff --git a/paper-api/src/main/java/org/bukkit/command/Command.java b/paper-api/src/main/java/org/bukkit/command/Command.java index 71eb845a4d..27a7c69f23 100644 --- a/paper-api/src/main/java/org/bukkit/command/Command.java +++ b/paper-api/src/main/java/org/bukkit/command/Command.java @@ -7,7 +7,6 @@ import java.util.Collections; import java.util.List; import java.util.Set; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.GameRule; import org.bukkit.Location; import org.bukkit.Server; diff --git a/paper-api/src/main/java/org/bukkit/command/FormattedCommandAlias.java b/paper-api/src/main/java/org/bukkit/command/FormattedCommandAlias.java index abe256e1e4..59fada9b1e 100644 --- a/paper-api/src/main/java/org/bukkit/command/FormattedCommandAlias.java +++ b/paper-api/src/main/java/org/bukkit/command/FormattedCommandAlias.java @@ -4,6 +4,8 @@ import java.util.ArrayList; import java.util.regex.Matcher; // Paper import java.util.regex.Pattern; // Paper +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; import org.jetbrains.annotations.NotNull; @@ -27,7 +29,7 @@ public class FormattedCommandAlias extends Command { if (throwable instanceof IllegalArgumentException) { sender.sendMessage(throwable.getMessage()); } else { - sender.sendMessage(org.bukkit.ChatColor.RED + "An internal error occurred while attempting to perform this command"); + sender.sendMessage(Component.text("An internal error occurred while attempting to perform this command", NamedTextColor.RED)); } return false; } diff --git a/paper-api/src/main/java/org/bukkit/command/defaults/HelpCommand.java b/paper-api/src/main/java/org/bukkit/command/defaults/HelpCommand.java index 9c63d9dedb..875e3b20d9 100644 --- a/paper-api/src/main/java/org/bukkit/command/defaults/HelpCommand.java +++ b/paper-api/src/main/java/org/bukkit/command/defaults/HelpCommand.java @@ -10,8 +10,11 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeSet; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TextComponent; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.help.HelpMap; @@ -78,31 +81,29 @@ public class HelpCommand extends BukkitCommand { } if (topic == null || !topic.canSee(sender)) { - sender.sendMessage(ChatColor.RED + "No help for " + command); + sender.sendMessage(Component.text("No help for" + command, NamedTextColor.RED)); return true; } ChatPaginator.ChatPage page = ChatPaginator.paginate(topic.getFullText(sender), pageNumber, pageWidth, pageHeight); - StringBuilder header = new StringBuilder(); - header.append(ChatColor.YELLOW); - header.append("--------- "); - header.append(ChatColor.WHITE); - header.append("Help: "); - header.append(topic.getName()); - header.append(" "); + TextComponent.Builder header = Component.text() + .append(Component.text("--------- ", NamedTextColor.YELLOW)) + .append(Component.text("Help: ", NamedTextColor.WHITE)) + .append(Component.text(topic.getName())) + .append(Component.empty()); if (page.getTotalPages() > 1) { - header.append("("); - header.append(page.getPageNumber()); - header.append("/"); - header.append(page.getTotalPages()); - header.append(") "); + header.append(Component.text(" (")) + .append(Component.text(page.getPageNumber())) + .append(Component.text("/")) + .append(Component.text(page.getTotalPages())) + .append(Component.text(") ")); } - header.append(ChatColor.YELLOW); - for (int i = header.length(); i < ChatPaginator.GUARANTEED_NO_WRAP_CHAT_PAGE_WIDTH; i++) { - header.append("-"); - } - sender.sendMessage(header.toString()); + final TextComponent headerComponent = header.build(); + final int headerSize = PlainTextComponentSerializer.plainText().serialize(headerComponent).length(); + final int headerEndingCount = Math.max(0, ChatPaginator.GUARANTEED_NO_WRAP_CHAT_PAGE_WIDTH - headerSize); + + sender.sendMessage(headerComponent.append(Component.text("-".repeat(headerEndingCount), NamedTextColor.YELLOW))); sender.sendMessage(page.getLines()); diff --git a/paper-server/src/main/java/io/papermc/paper/command/brigadier/bukkit/BukkitCommandNode.java b/paper-server/src/main/java/io/papermc/paper/command/brigadier/bukkit/BukkitCommandNode.java index 1814cd072a..5c52b1563d 100644 --- a/paper-server/src/main/java/io/papermc/paper/command/brigadier/bukkit/BukkitCommandNode.java +++ b/paper-server/src/main/java/io/papermc/paper/command/brigadier/bukkit/BukkitCommandNode.java @@ -10,9 +10,10 @@ import com.mojang.brigadier.suggestion.SuggestionsBuilder; import com.mojang.brigadier.tree.LiteralCommandNode; import io.papermc.paper.command.brigadier.CommandSourceStack; import java.util.ArrayList; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import net.minecraft.commands.CommandSource; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandException; @@ -107,7 +108,7 @@ public class BukkitCommandNode extends LiteralCommandNode { try { results = this.command.tabComplete(sender, this.literal, args, pos.clone()); } catch (CommandException ex) { - sender.sendMessage(ChatColor.RED + "An internal error occurred while attempting to tab-complete this command"); + sender.sendMessage(Component.text("An internal error occurred while attempting to tab-complete this command", NamedTextColor.RED)); Bukkit.getServer().getLogger().log(Level.SEVERE, "Exception when " + sender.getName() + " attempted to tab complete " + builder.getRemaining(), ex); } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 08286e1cf6..41bf483b13 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -40,6 +40,8 @@ import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; import javax.imageio.ImageIO; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import net.minecraft.Optionull; import net.minecraft.advancements.AdvancementHolder; import net.minecraft.commands.CommandSourceStack; @@ -114,7 +116,6 @@ import net.minecraft.world.level.validation.ContentValidationException; import net.minecraft.world.phys.Vec3; import org.bukkit.BanList; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.GameMode; import org.bukkit.Keyed; import org.bukkit.Location; @@ -2544,7 +2545,7 @@ public final class CraftServer implements Server { completions = this.getCommandMap().tabComplete(player, message, CraftLocation.toBukkit(pos, world.getWorld())); } } catch (CommandException ex) { - player.sendMessage(ChatColor.RED + "An internal error occurred while attempting to tab-complete this command"); + player.sendMessage(Component.text("An internal error occurred while attempting to tab-complete this command", NamedTextColor.RED)); this.getLogger().log(Level.SEVERE, "Exception when " + player.getName() + " attempted to tab complete " + message, ex); }