diff --git a/src/main/java/net/minestom/server/chat/ChatColor.java b/src/main/java/net/minestom/server/chat/ChatColor.java index 096d8ac95..794d92363 100644 --- a/src/main/java/net/minestom/server/chat/ChatColor.java +++ b/src/main/java/net/minestom/server/chat/ChatColor.java @@ -12,9 +12,12 @@ import java.util.HashMap; import java.util.Map; /** - * Represents a color in a text. + * Represents a color in a text. You can either use one of the pre-made colors + * or make your own using RGB. {@link ChatColor#fromRGB(byte, byte, byte)}. + *

+ * Immutable class. */ -public class ChatColor { +public final class ChatColor { // Special public static final ChatColor NO_COLOR = new ChatColor(); @@ -48,7 +51,6 @@ public class ChatColor { private static final Char2ObjectMap legacyColorCodesMap = new Char2ObjectOpenHashMap<>(); static { - idColorMap.put(0, BLACK); idColorMap.put(1, DARK_BLUE); idColorMap.put(2, DARK_GREEN); @@ -116,30 +118,34 @@ public class ChatColor { } private boolean empty; - private byte red, green, blue; - private int id; + private final byte red, green, blue; + private final int id; - private String codeName; + private final String codeName; - private boolean special; + private final boolean special; - private ChatColor(byte r, byte g, byte b, int id, String codeName) { + private ChatColor(byte r, byte g, byte b, int id, @Nullable String codeName, boolean special) { this.empty = false; this.red = r; this.green = g; this.blue = b; this.id = id; this.codeName = codeName; + this.special = special; + } + + private ChatColor(byte r, byte g, byte b, int id, @Nullable String codeName) { + this(r, g, b, id, codeName, false); } private ChatColor(String codeName) { - this.codeName = codeName; - this.special = true; + this((byte) 0, (byte) 0, (byte) 0, 0, codeName, true); } private ChatColor() { + this((byte) 0, (byte) 0, (byte) 0, 0, null, true); this.empty = true; - this.special = true; } /** @@ -155,6 +161,7 @@ public class ChatColor { return fromRGB(r, g, b, -1, null); } + @NotNull private static ChatColor fromRGB(byte r, byte g, byte b, int id, String codeName) { return new ChatColor(r, g, b, id, codeName); } @@ -166,7 +173,7 @@ public class ChatColor { * @return the color associated with the name, {@link #NO_COLOR} if not found */ @NotNull - public static ChatColor fromName(String name) { + public static ChatColor fromName(@NotNull String name) { return colorCode.getOrDefault(name.toLowerCase(), NO_COLOR); } @@ -233,9 +240,9 @@ public class ChatColor { } /** - * Gets the code name if the color is "special". + * Gets the code name. * - * @return the special code name + * @return the color code name, null if not any */ @Nullable public String getCodeName() { diff --git a/src/main/java/net/minestom/server/command/CommandProcessor.java b/src/main/java/net/minestom/server/command/CommandProcessor.java index c12b78b7d..b1cd3bc81 100644 --- a/src/main/java/net/minestom/server/command/CommandProcessor.java +++ b/src/main/java/net/minestom/server/command/CommandProcessor.java @@ -5,10 +5,10 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** - * Represents a simple command which give you the whole string representation + * Represents a simple command which give you the whole string representation; *

* {@link #process(CommandSender, String, String[])} is called no matter what if a {@link CommandSender} sends a command which - * start by {@link #getCommandName()} or any of the aliases in {@link #getAliases()} + * start by {@link #getCommandName()} or any of the aliases in {@link #getAliases()}; *

* Tab-completion can be activated by overriding {@link #enableWritingTracking()} and return true, you should then listen to * {@link #onWrite(String)} and return the possible completions to suggest.