Fixed hundreds of small issues, code improvements, typos, ...
This commit is contained in:
@@ -35,8 +35,8 @@ import java.util.function.UnaryOperator;
|
||||
* This class implements {@link ComponentLike} and {@link HoverEventSource} so they can be used directly in
|
||||
* Adventure API and its implementation without using the final methods of this builder.
|
||||
* <p>
|
||||
* The unique possible concrete subclass of this class, {@link FormatableChat}, takes care of the formatting of the
|
||||
* built component. The rationale for this design is explained in the documentation of {@link FormatableChat}.
|
||||
* The unique possible concrete subclass of this class, {@link FormattableChat}, takes care of the formatting of the
|
||||
* built component. The rationale for this design is explained in the documentation of {@link FormattableChat}.
|
||||
*/
|
||||
public abstract sealed class Chat extends ChatStatic implements HoverEventSource<Component>, ComponentLike {
|
||||
|
||||
@@ -296,7 +296,7 @@ public abstract sealed class Chat extends ChatStatic implements HoverEventSource
|
||||
* @param key the keybinding to display.
|
||||
* @return this.
|
||||
*/
|
||||
public Chat thenKeyBind(String key) { return then(keybind(key)); }
|
||||
public Chat thenKeyBind(String key) { return then(keyBind(key)); }
|
||||
|
||||
/**
|
||||
* Appends a component with the provided score name and objective.
|
||||
@@ -454,7 +454,7 @@ public abstract sealed class Chat extends ChatStatic implements HoverEventSource
|
||||
* Appends a component filling a chat line with the configured decoration character and
|
||||
* color and a left-aligned text.
|
||||
* @param leftText the text aligned to the left.
|
||||
* @return a new {@link FormatableChat} filling a chat line with the configured decoration character
|
||||
* @return a new {@link FormattableChat} filling a chat line with the configured decoration character
|
||||
* and color and a left-aligned text.
|
||||
*/
|
||||
public Chat thenLeftText(ComponentLike leftText) { return then(leftText(leftText, console)); }
|
||||
@@ -463,7 +463,7 @@ public abstract sealed class Chat extends ChatStatic implements HoverEventSource
|
||||
* Appends a component filling a chat line with the configured decoration character and
|
||||
* color and a right-aligned text.
|
||||
* @param rightText the text aligned to the right.
|
||||
* @return a new {@link FormatableChat} filling a chat line with the configured decoration character
|
||||
* @return a new {@link FormattableChat} filling a chat line with the configured decoration character
|
||||
* and color and a right-aligned text.
|
||||
*/
|
||||
public Chat thenRightText(ComponentLike rightText) { return then(rightText(rightText, console)); }
|
||||
@@ -472,7 +472,7 @@ public abstract sealed class Chat extends ChatStatic implements HoverEventSource
|
||||
* Appends a component filling a chat line with the configured decoration character and
|
||||
* color and a centered text.
|
||||
* @param centerText the text aligned to the center.
|
||||
* @return a new {@link FormatableChat} filling a chat line with the configured decoration character
|
||||
* @return a new {@link FormattableChat} filling a chat line with the configured decoration character
|
||||
* and color and a centered text.
|
||||
*/
|
||||
public Chat thenCenterText(ComponentLike centerText) {
|
||||
@@ -481,7 +481,7 @@ public abstract sealed class Chat extends ChatStatic implements HoverEventSource
|
||||
|
||||
/**
|
||||
* Appends a component filling a chat line with the configured decoration character and color.
|
||||
* @return a new {@link FormatableChat} filling a chat line with a decoration character and color.
|
||||
* @return a new {@link FormattableChat} filling a chat line with a decoration character and color.
|
||||
*/
|
||||
public Chat thenFilledLine() { return then(filledLine(console)); }
|
||||
|
||||
@@ -520,10 +520,10 @@ public abstract sealed class Chat extends ChatStatic implements HoverEventSource
|
||||
* .thenText("!"); // short for .then(Chat.text("!"))
|
||||
* // the red color for "!" is not needed because the parent component is already red.
|
||||
* }</pre>
|
||||
* When calling {@link #then(Component) #then(...)} on a {@link FormatableChat}, the method returns itself, cast
|
||||
* When calling {@link #then(Component) #then(...)} on a {@link FormattableChat}, the method returns itself, cast
|
||||
* to {@link Chat}, to prevent future formatting (that the programmer would think it formats the previously appended
|
||||
* subcomponent). If the formatting of the currently built component is needed, since {@link Chat} is a sealed
|
||||
* class which only subclass is {@link FormatableChat}, you can cast the builder, and use the format methods again.
|
||||
* class which only subclass is {@link FormattableChat}, you can cast the builder, and use the format methods again.
|
||||
* <pre>{@code
|
||||
* Chat component = Chat.text("Hello ").red()
|
||||
* .then(Chat.text("world").darkRed().bold())
|
||||
@@ -532,8 +532,8 @@ public abstract sealed class Chat extends ChatStatic implements HoverEventSource
|
||||
* ((FormatableChat)component).underlined(); // this will not format only the last appended text.
|
||||
* }</pre>
|
||||
*/
|
||||
public static final class FormatableChat extends Chat {
|
||||
/* package */ FormatableChat(ComponentBuilder<?, ?> c) {
|
||||
public static final class FormattableChat extends Chat {
|
||||
/* package */ FormattableChat(ComponentBuilder<?, ?> c) {
|
||||
super(c);
|
||||
}
|
||||
|
||||
@@ -543,33 +543,33 @@ public abstract sealed class Chat extends ChatStatic implements HoverEventSource
|
||||
* @param c true for console, false for game UI.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat console(boolean c) { console = c; return this; }
|
||||
public FormattableChat console(boolean c) { console = c; return this; }
|
||||
/**
|
||||
* Configure the width of the line.
|
||||
* @param w the width to consider when rendering the line. In pixel for game UI rendering, n character for
|
||||
* console rendering.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat maxWidth(int w) { maxWidth = w; return this; }
|
||||
public FormattableChat maxWidth(int w) { maxWidth = w; return this; }
|
||||
|
||||
/**
|
||||
* Sets the color of this component.
|
||||
* @param c the color.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat color(TextColor c) { builder.color(c); return this; }
|
||||
public FormattableChat color(TextColor c) { builder.color(c); return this; }
|
||||
/**
|
||||
* Sets the color of this component.
|
||||
* @param c the color.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat color(Color c) { return color(c == null ? null : TextColor.color(c.getRGB())); }
|
||||
public FormattableChat color(Color c) { return color(c == null ? null : TextColor.color(c.getRGB())); }
|
||||
/**
|
||||
* Sets the color of this component.
|
||||
* @param c the color.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat color(String c) {
|
||||
public FormattableChat color(String c) {
|
||||
if (c == null)
|
||||
return color((TextColor) null);
|
||||
TextColor tc = c.startsWith("#")
|
||||
@@ -585,138 +585,138 @@ public abstract sealed class Chat extends ChatStatic implements HoverEventSource
|
||||
* Sets the color of this component to {@link NamedTextColor#BLACK}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat black() { return color(NamedTextColor.BLACK); }
|
||||
public FormattableChat black() { return color(NamedTextColor.BLACK); }
|
||||
/**
|
||||
* Sets the color of this component to {@link NamedTextColor#DARK_BLUE}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat darkBlue() { return color(NamedTextColor.DARK_BLUE); }
|
||||
public FormattableChat darkBlue() { return color(NamedTextColor.DARK_BLUE); }
|
||||
/**
|
||||
* Sets the color of this component to {@link NamedTextColor#DARK_GREEN}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat darkGreen() { return color(NamedTextColor.DARK_GREEN); }
|
||||
public FormattableChat darkGreen() { return color(NamedTextColor.DARK_GREEN); }
|
||||
/**
|
||||
* Sets the color of this component to {@link NamedTextColor#DARK_AQUA}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat darkAqua() { return color(NamedTextColor.DARK_AQUA); }
|
||||
public FormattableChat darkAqua() { return color(NamedTextColor.DARK_AQUA); }
|
||||
/**
|
||||
* Sets the color of this component to {@link NamedTextColor#DARK_RED}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat darkRed() { return color(NamedTextColor.DARK_RED); }
|
||||
public FormattableChat darkRed() { return color(NamedTextColor.DARK_RED); }
|
||||
/**
|
||||
* Sets the color of this component to {@link NamedTextColor#DARK_PURPLE}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat darkPurple() { return color(NamedTextColor.DARK_PURPLE); }
|
||||
public FormattableChat darkPurple() { return color(NamedTextColor.DARK_PURPLE); }
|
||||
/**
|
||||
* Sets the color of this component to {@link NamedTextColor#GOLD}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat gold() { return color(NamedTextColor.GOLD); }
|
||||
public FormattableChat gold() { return color(NamedTextColor.GOLD); }
|
||||
/**
|
||||
* Sets the color of this component to {@link NamedTextColor#GRAY}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat gray() { return color(NamedTextColor.GRAY); }
|
||||
public FormattableChat gray() { return color(NamedTextColor.GRAY); }
|
||||
/**
|
||||
* Sets the color of this component to {@link NamedTextColor#DARK_GRAY}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat darkGray() { return color(NamedTextColor.DARK_GRAY); }
|
||||
public FormattableChat darkGray() { return color(NamedTextColor.DARK_GRAY); }
|
||||
/**
|
||||
* Sets the color of this component to {@link NamedTextColor#BLUE}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat blue() { return color(NamedTextColor.BLUE); }
|
||||
public FormattableChat blue() { return color(NamedTextColor.BLUE); }
|
||||
/**
|
||||
* Sets the color of this component to {@link NamedTextColor#GREEN}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat green() { return color(NamedTextColor.GREEN); }
|
||||
public FormattableChat green() { return color(NamedTextColor.GREEN); }
|
||||
/**
|
||||
* Sets the color of this component to {@link NamedTextColor#AQUA}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat aqua() { return color(NamedTextColor.AQUA); }
|
||||
public FormattableChat aqua() { return color(NamedTextColor.AQUA); }
|
||||
/**
|
||||
* Sets the color of this component to {@link NamedTextColor#RED}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat red() { return color(NamedTextColor.RED); }
|
||||
public FormattableChat red() { return color(NamedTextColor.RED); }
|
||||
/**
|
||||
* Sets the color of this component to {@link NamedTextColor#LIGHT_PURPLE}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat lightPurple() { return color(NamedTextColor.LIGHT_PURPLE); }
|
||||
public FormattableChat lightPurple() { return color(NamedTextColor.LIGHT_PURPLE); }
|
||||
/**
|
||||
* Sets the color of this component to {@link NamedTextColor#YELLOW}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat yellow() { return color(NamedTextColor.YELLOW); }
|
||||
public FormattableChat yellow() { return color(NamedTextColor.YELLOW); }
|
||||
/**
|
||||
* Sets the color of this component to {@link NamedTextColor#WHITE}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat white() { return color(NamedTextColor.WHITE); }
|
||||
public FormattableChat white() { return color(NamedTextColor.WHITE); }
|
||||
|
||||
|
||||
/**
|
||||
* Sets the color of this component to {@link ChatConfig#successColor}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat successColor() { return color(ChatConfig.successColor); }
|
||||
public FormattableChat successColor() { return color(ChatConfig.successColor); }
|
||||
/**
|
||||
* Sets the color of this component to {@link ChatConfig#failureColor}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat failureColor() { return color(ChatConfig.failureColor); }
|
||||
public FormattableChat failureColor() { return color(ChatConfig.failureColor); }
|
||||
/**
|
||||
* Sets the color of this component to {@link ChatConfig#infoColor}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat infoColor() { return color(ChatConfig.infoColor); }
|
||||
public FormattableChat infoColor() { return color(ChatConfig.infoColor); }
|
||||
/**
|
||||
* Sets the color of this component to {@link ChatConfig#warningColor}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat warningColor() { return color(ChatConfig.warningColor); }
|
||||
public FormattableChat warningColor() { return color(ChatConfig.warningColor); }
|
||||
/**
|
||||
* Sets the color of this component to {@link ChatConfig#dataColor}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat dataColor() { return color(ChatConfig.dataColor); }
|
||||
public FormattableChat dataColor() { return color(ChatConfig.dataColor); }
|
||||
/**
|
||||
* Sets the color of this component to {@link ChatConfig#decorationColor}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat decorationColor() { return color(ChatConfig.decorationColor); }
|
||||
public FormattableChat decorationColor() { return color(ChatConfig.decorationColor); }
|
||||
/**
|
||||
* Sets the color of this component to {@link ChatConfig#urlColor}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat urlColor() { return color(ChatConfig.urlColor); }
|
||||
public FormattableChat urlColor() { return color(ChatConfig.urlColor); }
|
||||
/**
|
||||
* Sets the color of this component to {@link ChatConfig#commandColor}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat commandColor() { return color(ChatConfig.commandColor); }
|
||||
public FormattableChat commandColor() { return color(ChatConfig.commandColor); }
|
||||
/**
|
||||
* Sets the color of this component to {@link ChatConfig#highlightedCommandColor}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat highlightedCommandColor() { return color(ChatConfig.highlightedCommandColor); }
|
||||
public FormattableChat highlightedCommandColor() { return color(ChatConfig.highlightedCommandColor); }
|
||||
/**
|
||||
* Sets the color of this component to {@link ChatConfig#broadcastColor}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat broadcastColor() { return color(ChatConfig.broadcastColor); }
|
||||
public FormattableChat broadcastColor() { return color(ChatConfig.broadcastColor); }
|
||||
|
||||
|
||||
private FormatableChat setStyle(Consumer<Style.Builder> styleOp) { builder.style(styleOp); return this; }
|
||||
private FormatableChat setDecoration(TextDecoration deco, Boolean state) {
|
||||
private FormattableChat setStyle(Consumer<Style.Builder> styleOp) { builder.style(styleOp); return this; }
|
||||
private FormattableChat setDecoration(TextDecoration deco, Boolean state) {
|
||||
return setStyle(b -> b.decoration(deco, State.byBoolean(state)));
|
||||
}
|
||||
|
||||
@@ -726,56 +726,56 @@ public abstract sealed class Chat extends ChatStatic implements HoverEventSource
|
||||
* @param b true to enable, false to disable, or null to inherit from parent.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat bold(Boolean b) { return setDecoration(TextDecoration.BOLD, b); }
|
||||
public FormattableChat bold(Boolean b) { return setDecoration(TextDecoration.BOLD, b); }
|
||||
/**
|
||||
* Enables the bold status of this component.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat bold() { return bold(true); }
|
||||
public FormattableChat bold() { return bold(true); }
|
||||
/**
|
||||
* Sets the italic status of this component.
|
||||
* @param i true to enable, false to disable, or null to inherit from parent.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat italic(Boolean i) { return setDecoration(TextDecoration.ITALIC, i); }
|
||||
public FormattableChat italic(Boolean i) { return setDecoration(TextDecoration.ITALIC, i); }
|
||||
/**
|
||||
* Enables the italic status of this component.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat italic() { return italic(true); }
|
||||
public FormattableChat italic() { return italic(true); }
|
||||
/**
|
||||
* Sets the underlined status of this component.
|
||||
* @param u true to enable, false to disable, or null to inherit from parent.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat underlined(Boolean u) { return setDecoration(TextDecoration.UNDERLINED, u); }
|
||||
public FormattableChat underlined(Boolean u) { return setDecoration(TextDecoration.UNDERLINED, u); }
|
||||
/**
|
||||
* Enables the underlined status of this component.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat underlined() { return underlined(true); }
|
||||
public FormattableChat underlined() { return underlined(true); }
|
||||
/**
|
||||
* Sets the strikethrough status of this component.
|
||||
* @param s true to enable, false to disable, or null to inherit from parent.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat strikethrough(Boolean s) { return setDecoration(TextDecoration.STRIKETHROUGH, s); }
|
||||
public FormattableChat strikethrough(Boolean s) { return setDecoration(TextDecoration.STRIKETHROUGH, s); }
|
||||
/**
|
||||
* Enables the strikethrough status of this component.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat strikethrough() { return strikethrough(true); }
|
||||
public FormattableChat strikethrough() { return strikethrough(true); }
|
||||
/**
|
||||
* Sets the obfuscated status of this component.
|
||||
* @param o true to enable, false to disable, or null to inherit from parent.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat obfuscated(Boolean o) { return setDecoration(TextDecoration.OBFUSCATED, o); }
|
||||
public FormattableChat obfuscated(Boolean o) { return setDecoration(TextDecoration.OBFUSCATED, o); }
|
||||
/**
|
||||
* Enables the obfuscated status of this component.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat obfuscated() { return obfuscated(true); }
|
||||
public FormattableChat obfuscated() { return obfuscated(true); }
|
||||
|
||||
|
||||
/**
|
||||
@@ -783,7 +783,7 @@ public abstract sealed class Chat extends ChatStatic implements HoverEventSource
|
||||
* @param f the font namespaced key.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat font(Key f) { return setStyle(s -> s.font(f)); }
|
||||
public FormattableChat font(Key f) { return setStyle(s -> s.font(f)); }
|
||||
|
||||
|
||||
/**
|
||||
@@ -791,7 +791,7 @@ public abstract sealed class Chat extends ChatStatic implements HoverEventSource
|
||||
* @param i the text to insert.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat shiftClickInsertion(String i) { builder.insertion(i); return this; }
|
||||
public FormattableChat shiftClickInsertion(String i) { builder.insertion(i); return this; }
|
||||
|
||||
|
||||
/**
|
||||
@@ -799,37 +799,37 @@ public abstract sealed class Chat extends ChatStatic implements HoverEventSource
|
||||
* @param e the {@link ClickEvent}.
|
||||
* @return this.
|
||||
*/
|
||||
private FormatableChat click(ClickEvent e) { builder.clickEvent(e); return this; }
|
||||
private FormattableChat click(ClickEvent e) { builder.clickEvent(e); return this; }
|
||||
/**
|
||||
* Configure this component to execute the specified command when clicked.
|
||||
* @param cmdWithSlash the command to execute.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat clickCommand(String cmdWithSlash) { return click(ClickEvent.runCommand(cmdWithSlash)); }
|
||||
public FormattableChat clickCommand(String cmdWithSlash) { return click(ClickEvent.runCommand(cmdWithSlash)); }
|
||||
/**
|
||||
* Configure this component to insert in the chat-box the specified command when clicked.
|
||||
* @param cmdWithSlash the command to suggest.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat clickSuggest(String cmdWithSlash) { return click(ClickEvent.suggestCommand(cmdWithSlash)); }
|
||||
public FormattableChat clickSuggest(String cmdWithSlash) { return click(ClickEvent.suggestCommand(cmdWithSlash)); }
|
||||
/**
|
||||
* Configure this component to copy into clipboard the specified text when clicked.
|
||||
* @param value the text to copy.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat clickClipboard(String value) { return click(ClickEvent.copyToClipboard(value)); }
|
||||
public FormattableChat clickClipboard(String value) { return click(ClickEvent.copyToClipboard(value)); }
|
||||
/**
|
||||
* Configure this component to open the specified URL when clicked.
|
||||
* @param url the URL to open.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat clickURL(String url) { return click(ClickEvent.openUrl(url)); }
|
||||
public FormattableChat clickURL(String url) { return click(ClickEvent.openUrl(url)); }
|
||||
/**
|
||||
* Configure this component to change the page of the opened book when clicked.
|
||||
* @param page the page to go to.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat clickBookPage(int page) { return click(ClickEvent.changePage(page)); }
|
||||
public FormattableChat clickBookPage(int page) { return click(ClickEvent.changePage(page)); }
|
||||
|
||||
|
||||
/**
|
||||
@@ -837,31 +837,31 @@ public abstract sealed class Chat extends ChatStatic implements HoverEventSource
|
||||
* @param e the {@link HoverEventSource}.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat hover(HoverEventSource<?> e) { builder.hoverEvent(e); return this; }
|
||||
public FormattableChat hover(HoverEventSource<?> e) { builder.hoverEvent(e); return this; }
|
||||
/**
|
||||
* Configure this component to show the provided component when hovered.
|
||||
* @param v the component to show.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat hover(Component v) { return hover((HoverEventSource<Component>) v); }
|
||||
public FormattableChat hover(Component v) { return hover((HoverEventSource<Component>) v); }
|
||||
/**
|
||||
* Configure this component to show the provided component when hovered.
|
||||
* @param v the component to show.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat hover(Chat v) { return hover((HoverEventSource<Component>) v); }
|
||||
public FormattableChat hover(Chat v) { return hover((HoverEventSource<Component>) v); }
|
||||
/**
|
||||
* Configure this component to show the provided component when hovered.
|
||||
* @param v the component to show.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat hover(ComponentLike v) { return hover(v.asComponent()); }
|
||||
public FormattableChat hover(ComponentLike v) { return hover(v.asComponent()); }
|
||||
/**
|
||||
* Configure this component to show the provided legacy text when hovered.
|
||||
* @param legacyText the legacy text to show.
|
||||
* @return this.
|
||||
*/
|
||||
public FormatableChat hover(String legacyText) { return hover(legacyText(legacyText)); }
|
||||
public FormattableChat hover(String legacyText) { return hover(legacyText(legacyText)); }
|
||||
|
||||
}
|
||||
|
||||
@@ -932,14 +932,14 @@ public abstract sealed class Chat extends ChatStatic implements HoverEventSource
|
||||
|
||||
/**
|
||||
* Force the italic formatting to be set to false if it is not explicitly set in the component.
|
||||
* This is useful for item lores that defaults to italic in the game UI.
|
||||
* This is useful for item lore that defaults to italic in the game UI.
|
||||
* @param c the {@link Chat} in which to set the italic property if needed.
|
||||
* @return the provided {@link Chat} instance.
|
||||
*/
|
||||
public static Chat italicFalseIfNotSet(Chat c) {
|
||||
c.builder.style(b -> {
|
||||
if (b.build().decoration(TextDecoration.ITALIC) == State.NOT_SET) {
|
||||
((FormatableChat) c).italic(false);
|
||||
((FormattableChat) c).italic(false);
|
||||
}
|
||||
});
|
||||
return c;
|
||||
|
@@ -5,7 +5,7 @@ import net.kyori.adventure.text.ComponentLike;
|
||||
import net.kyori.adventure.text.format.TextColor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import fr.pandacube.lib.chat.Chat.FormatableChat;
|
||||
import fr.pandacube.lib.chat.Chat.FormattableChat;
|
||||
|
||||
/**
|
||||
* Builder for a {@link Chat} component for filling a chat line, with decoration and eventual aligned text.
|
||||
@@ -150,10 +150,10 @@ public class ChatFilledLine implements ComponentLike {
|
||||
|
||||
|
||||
/**
|
||||
* Renders this line to a {@link FormatableChat}.
|
||||
* @return a new {@link FormatableChat} built by this {@link ChatFilledLine}.
|
||||
* Renders this line to a {@link FormattableChat}.
|
||||
* @return a new {@link FormattableChat} built by this {@link ChatFilledLine}.
|
||||
*/
|
||||
public FormatableChat toChat() {
|
||||
public FormattableChat toChat() {
|
||||
int maxWidth = (this.maxWidth != null)
|
||||
? this.maxWidth
|
||||
: console ? ChatUtil.CONSOLE_NB_CHAR_DEFAULT : ChatUtil.DEFAULT_CHAT_WIDTH;
|
||||
@@ -170,7 +170,7 @@ public class ChatFilledLine implements ComponentLike {
|
||||
int textWidth = ChatUtil.componentWidth(text.asComponent(), console);
|
||||
|
||||
if (textWidth > maxWidth)
|
||||
return (FormatableChat) text;
|
||||
return (FormattableChat) text;
|
||||
|
||||
int repeatedCharWidth = ChatUtil.charW(decorationChar, console, decorationBold);
|
||||
int nbCharLeft = 0, nbCharRight = 0;
|
||||
@@ -179,12 +179,12 @@ public class ChatFilledLine implements ComponentLike {
|
||||
case CENTER -> {
|
||||
nbCharLeft = nbCharRight = (maxWidth - textWidth) / 2 / repeatedCharWidth;
|
||||
if (nbCharLeft == 0)
|
||||
return (FormatableChat) text;
|
||||
return (FormattableChat) text;
|
||||
}
|
||||
case LEFT, RIGHT -> {
|
||||
int remWidth = textWidth + nbSide * repeatedCharWidth;
|
||||
if (remWidth > maxWidth)
|
||||
return (FormatableChat) text;
|
||||
return (FormattableChat) text;
|
||||
boolean left = alignment == Alignment.LEFT;
|
||||
int nbOtherSide = (maxWidth - remWidth) / repeatedCharWidth;
|
||||
nbCharLeft = left ? nbSide : nbOtherSide;
|
||||
@@ -197,7 +197,7 @@ public class ChatFilledLine implements ComponentLike {
|
||||
.then(text);
|
||||
if (decorationChar != ' ' || spacesDecorationRightSide)
|
||||
d.then(Chat.text(ChatUtil.repeatedChar(decorationChar, nbCharRight)).color(decorationColor).bold(decorationBold));
|
||||
return (FormatableChat) d;
|
||||
return (FormattableChat) d;
|
||||
}
|
||||
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package fr.pandacube.lib.chat;
|
||||
|
||||
import fr.pandacube.lib.chat.Chat.FormatableChat;
|
||||
import fr.pandacube.lib.chat.Chat.FormattableChat;
|
||||
import net.kyori.adventure.text.BlockNBTComponent;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.ComponentBuilder;
|
||||
@@ -27,27 +27,27 @@ public abstract class ChatStatic {
|
||||
|
||||
|
||||
|
||||
private static FormatableChat chatComponent(Component c) {
|
||||
return new FormatableChat(componentToBuilder(c));
|
||||
private static FormattableChat chatComponent(Component c) {
|
||||
return new FormattableChat(componentToBuilder(c));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} from the provided {@link ComponentLike}.
|
||||
* Creates a {@link FormattableChat} from the provided {@link ComponentLike}.
|
||||
* If the provided component is an instance of {@link Chat}, its content will be duplicated, and the provided one
|
||||
* will be untouched.
|
||||
* @param c the {@link ComponentLike}.
|
||||
* @return a new {@link FormatableChat}.
|
||||
* @return a new {@link FormattableChat}.
|
||||
*/
|
||||
public static FormatableChat chatComponent(ComponentLike c) {
|
||||
public static FormattableChat chatComponent(ComponentLike c) {
|
||||
return chatComponent(c.asComponent());
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} with an empty main text content.
|
||||
* @return a new empty {@link FormatableChat}.
|
||||
* Creates a {@link FormattableChat} with an empty main text content.
|
||||
* @return a new empty {@link FormattableChat}.
|
||||
*/
|
||||
public static FormatableChat chat() {
|
||||
return new FormatableChat(Component.text());
|
||||
public static FormattableChat chat() {
|
||||
return new FormattableChat(Component.text());
|
||||
}
|
||||
|
||||
|
||||
@@ -56,60 +56,60 @@ public abstract class ChatStatic {
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} with the provided plain text as its main text content.
|
||||
* Creates a {@link FormattableChat} with the provided plain text as its main text content.
|
||||
* @param plainText the text to use as the content.
|
||||
* @return a new {@link FormatableChat} with the provided text as its main text content.
|
||||
* @return a new {@link FormattableChat} with the provided text as its main text content.
|
||||
* @throws IllegalArgumentException if the {@code plainText} parameter is instance of {@link Chat} or
|
||||
* {@link Component}. The caller should use {@link #chatComponent(ComponentLike)}
|
||||
* instead.
|
||||
*/
|
||||
public static FormatableChat text(Object plainText) {
|
||||
public static FormattableChat text(Object plainText) {
|
||||
if (plainText instanceof ComponentLike) {
|
||||
throw new IllegalArgumentException("Expected any object except instance of " + ComponentLike.class + ". Received " + plainText + ". Please use ChatStatic.chatComponent(ComponentLike) instead.");
|
||||
}
|
||||
return new FormatableChat(Component.text().content(Objects.toString(plainText)));
|
||||
return new FormattableChat(Component.text().content(Objects.toString(plainText)));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} with the provided legacy text as its content, using the section {@code "§"}
|
||||
* Creates a {@link FormattableChat} with the provided legacy text as its content, using the section {@code "§"}
|
||||
* character.
|
||||
* @param legacyText the legacy text to use as the content, that uses the {@code "§"} character.
|
||||
* @return a new {@link FormatableChat} with the provided text as its content.
|
||||
* @return a new {@link FormattableChat} with the provided text as its content.
|
||||
* @throws IllegalArgumentException If the {@code legacyText} parameter is instance of {@link Chat} or
|
||||
* {@link Component}. The caller should use {@link #chatComponent(ComponentLike)}
|
||||
* instead.
|
||||
*/
|
||||
public static FormatableChat legacyText(Object legacyText) {
|
||||
public static FormattableChat legacyText(Object legacyText) {
|
||||
return legacyText(legacyText, LegacyComponentSerializer.SECTION_CHAR);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} with the provided legacy text as its content, using the ampersand {@code "&"}
|
||||
* Creates a {@link FormattableChat} with the provided legacy text as its content, using the ampersand {@code "&"}
|
||||
* character.
|
||||
* @param legacyText the legacy text to use as the content, that uses the {@code "&"} character.
|
||||
* @return a new {@link FormatableChat} with the provided text as its content.
|
||||
* @return a new {@link FormattableChat} with the provided text as its content.
|
||||
* @throws IllegalArgumentException If the {@code legacyText} parameter is instance of {@link Chat} or
|
||||
* {@link Component}. The caller should use {@link #chatComponent(ComponentLike)}
|
||||
* instead.
|
||||
*/
|
||||
public static FormatableChat legacyAmpersandText(Object legacyText) {
|
||||
public static FormattableChat legacyAmpersandText(Object legacyText) {
|
||||
return legacyText(legacyText, LegacyComponentSerializer.AMPERSAND_CHAR);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} with the provided legacy text as its content, using the specified
|
||||
* Creates a {@link FormattableChat} with the provided legacy text as its content, using the specified
|
||||
* legacyCharacter.
|
||||
* @param legacyText the legacy text to use as the content.
|
||||
* @param legacyCharacter the character used in the provided text to prefix color and format code.
|
||||
* @return a new {@link FormatableChat} with the provided text as its content.
|
||||
* @return a new {@link FormattableChat} with the provided text as its content.
|
||||
* @throws IllegalArgumentException If the {@code legacyText} parameter is instance of {@link Chat} or
|
||||
* {@link Component}. The caller should use {@link #chatComponent(ComponentLike)}
|
||||
* instead.
|
||||
*/
|
||||
private static FormatableChat legacyText(Object legacyText, char legacyCharacter) {
|
||||
private static FormattableChat legacyText(Object legacyText, char legacyCharacter) {
|
||||
if (legacyText instanceof ComponentLike) {
|
||||
throw new IllegalArgumentException("Expected any object except instance of " + ComponentLike.class + ". Received " + legacyText + ". Please use ChatStatic.chatComponent(ComponentLike) instead.");
|
||||
}
|
||||
@@ -118,118 +118,118 @@ public abstract class ChatStatic {
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} with the provided MiniMessage text as its content.
|
||||
* Creates a {@link FormattableChat} with the provided MiniMessage text as its content.
|
||||
* @param miniMessageText the MiniMessage text to use as the content.
|
||||
* @return a new {@link FormatableChat} with the provided text as its content.
|
||||
* @return a new {@link FormattableChat} with the provided text as its content.
|
||||
*/
|
||||
public static FormatableChat miniMessageText(String miniMessageText) {
|
||||
public static FormattableChat miniMessageText(String miniMessageText) {
|
||||
return chatComponent(MiniMessage.miniMessage().deserialize(miniMessageText));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} with the provided plain text as its main text content, and colored using the
|
||||
* Creates a {@link FormattableChat} with the provided plain text as its main text content, and colored using the
|
||||
* {@link ChatConfig#infoColor configured info color}.
|
||||
* @param plainText the text to use as the content.
|
||||
* @return a new {@link FormatableChat} with the provided text as its main text content, and the configured color.
|
||||
* @return a new {@link FormattableChat} with the provided text as its main text content, and the configured color.
|
||||
* @throws IllegalArgumentException if the {@code plainText} parameter is instance of {@link Chat} or
|
||||
* {@link Component}. The caller should use {@link #chatComponent(ComponentLike)} and
|
||||
* {@link FormatableChat#infoColor()} instead.
|
||||
* {@link FormattableChat#infoColor()} instead.
|
||||
*/
|
||||
public static FormatableChat infoText(Object plainText) {
|
||||
public static FormattableChat infoText(Object plainText) {
|
||||
return text(plainText).infoColor();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} with the provided plain text as its main text content, and colored using the
|
||||
* Creates a {@link FormattableChat} with the provided plain text as its main text content, and colored using the
|
||||
* {@link ChatConfig#warningColor configured warning color}.
|
||||
* @param plainText the text to use as the content.
|
||||
* @return a new {@link FormatableChat} with the provided text as its main text content, and the configured color.
|
||||
* @return a new {@link FormattableChat} with the provided text as its main text content, and the configured color.
|
||||
* @throws IllegalArgumentException if the {@code plainText} parameter is instance of {@link Chat} or
|
||||
* {@link Component}. The caller should use {@link #chatComponent(ComponentLike)} and
|
||||
* {@link FormatableChat#warningColor()} instead.
|
||||
* {@link FormattableChat#warningColor()} instead.
|
||||
*/
|
||||
public static FormatableChat warningText(Object plainText) {
|
||||
public static FormattableChat warningText(Object plainText) {
|
||||
return text(plainText).warningColor();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} with the provided plain text as its main text content, and colored using the
|
||||
* Creates a {@link FormattableChat} with the provided plain text as its main text content, and colored using the
|
||||
* {@link ChatConfig#dataColor configured data color}.
|
||||
* @param plainText the text to use as the content.
|
||||
* @return a new {@link FormatableChat} with the provided text as its main text content, and the configured color.
|
||||
* @return a new {@link FormattableChat} with the provided text as its main text content, and the configured color.
|
||||
* @throws IllegalArgumentException if the {@code plainText} parameter is instance of {@link Chat} or
|
||||
* {@link Component}. The caller should use {@link #chatComponent(ComponentLike)} and
|
||||
* {@link FormatableChat#dataColor()} instead.
|
||||
* {@link FormattableChat#dataColor()} instead.
|
||||
*/
|
||||
public static FormatableChat dataText(Object plainText) {
|
||||
public static FormattableChat dataText(Object plainText) {
|
||||
return text(plainText).dataColor();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} with the provided plain text as its main text content, and colored using the
|
||||
* Creates a {@link FormattableChat} with the provided plain text as its main text content, and colored using the
|
||||
* {@link ChatConfig#decorationColor configured decorationColor color}.
|
||||
* @param plainText the text to use as the content.
|
||||
* @return a new {@link FormatableChat} with the provided text as its main text content, and the configured color.
|
||||
* @return a new {@link FormattableChat} with the provided text as its main text content, and the configured color.
|
||||
* @throws IllegalArgumentException if the {@code plainText} parameter is instance of {@link Chat} or
|
||||
* {@link Component}. The caller should use {@link #chatComponent(ComponentLike)} and
|
||||
* {@link FormatableChat#decorationColor()} instead.
|
||||
* {@link FormattableChat#decorationColor()} instead.
|
||||
*/
|
||||
public static FormatableChat decorationText(Object plainText) {
|
||||
public static FormattableChat decorationText(Object plainText) {
|
||||
return text(plainText).decorationColor();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} with the provided plain text as its main text content, and colored using the
|
||||
* Creates a {@link FormattableChat} with the provided plain text as its main text content, and colored using the
|
||||
* {@link ChatConfig#successColor configured success color}.
|
||||
* @param plainText the text to use as the content.
|
||||
* @return a new {@link FormatableChat} with the provided text as its main text content, and the configured color.
|
||||
* @return a new {@link FormattableChat} with the provided text as its main text content, and the configured color.
|
||||
* @throws IllegalArgumentException if the {@code plainText} parameter is instance of {@link Chat} or
|
||||
* {@link Component}. The caller should use {@link #chatComponent(ComponentLike)} and
|
||||
* {@link FormatableChat#successColor()} instead.
|
||||
* {@link FormattableChat#successColor()} instead.
|
||||
*/
|
||||
public static FormatableChat successText(Object plainText) {
|
||||
public static FormattableChat successText(Object plainText) {
|
||||
return text(plainText).successColor();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} with the provided plain text as its main text content, and colored using the
|
||||
* Creates a {@link FormattableChat} with the provided plain text as its main text content, and colored using the
|
||||
* {@link ChatConfig#failureColor configured failure color}.
|
||||
* @param plainText the text to use as the content.
|
||||
* @return a new {@link FormatableChat} with the provided text as its main text content, and the configured color.
|
||||
* @return a new {@link FormattableChat} with the provided text as its main text content, and the configured color.
|
||||
* @throws IllegalArgumentException if the {@code plainText} parameter is instance of {@link Chat} or
|
||||
* {@link Component}. The caller should use {@link #chatComponent(ComponentLike)} and
|
||||
* {@link FormatableChat#failureColor()} instead.
|
||||
* {@link FormattableChat#failureColor()} instead.
|
||||
*/
|
||||
public static FormatableChat failureText(Object plainText) {
|
||||
public static FormattableChat failureText(Object plainText) {
|
||||
return text(plainText).failureColor();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} with the provided legacy text as its main text content, and colored in white in
|
||||
* Creates a {@link FormattableChat} with the provided legacy text as its main text content, and colored in white in
|
||||
* case there is no color on the generated parent component.
|
||||
* @param legacyText the legacy text to use as the content.
|
||||
* @return a new {@link FormatableChat} with the provided text as its main text content, and the configured color.
|
||||
* @return a new {@link FormattableChat} with the provided text as its main text content, and the configured color.
|
||||
* @throws IllegalArgumentException if the {@code plainText} parameter is instance of {@link Chat} or
|
||||
* {@link Component}. The caller should use {@link #chatComponent(ComponentLike)} and
|
||||
* {@link FormatableChat#failureColor()} instead.
|
||||
* {@link FormattableChat#failureColor()} instead.
|
||||
*/
|
||||
public static FormatableChat playerNameText(String legacyText) {
|
||||
FormatableChat fc = legacyText(legacyText);
|
||||
public static FormattableChat playerNameText(String legacyText) {
|
||||
FormattableChat fc = legacyText(legacyText);
|
||||
fc.builder.colorIfAbsent(NamedTextColor.WHITE);
|
||||
return fc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} from the provided {@link Component}, coloring in white the generated parent
|
||||
* Creates a {@link FormattableChat} from the provided {@link Component}, coloring in white the generated parent
|
||||
* component in case there is no color defined.
|
||||
* If the provided component is an instance of {@link Chat}, its content will be duplicated, and the provided one
|
||||
* will be untouched.
|
||||
* @param c the {@link Component}.
|
||||
* @return a new {@link FormatableChat}.
|
||||
* @return a new {@link FormattableChat}.
|
||||
*/
|
||||
public static FormatableChat playerNameComponent(ComponentLike c) {
|
||||
FormatableChat fc = chatComponent(c);
|
||||
public static FormattableChat playerNameComponent(ComponentLike c) {
|
||||
FormattableChat fc = chatComponent(c);
|
||||
fc.builder.colorIfAbsent(NamedTextColor.WHITE);
|
||||
return fc;
|
||||
}
|
||||
@@ -238,32 +238,32 @@ public abstract class ChatStatic {
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} with the provided translation key and parameters.
|
||||
* Creates a {@link FormattableChat} with the provided translation key and parameters.
|
||||
* @param key the translation key.
|
||||
* @param with the translation parameters.
|
||||
* @return a new {@link FormatableChat} with the provided translation key and parameters.
|
||||
* @return a new {@link FormattableChat} with the provided translation key and parameters.
|
||||
*/
|
||||
public static FormatableChat translation(String key, Object... with) {
|
||||
return new FormatableChat(Component.translatable().key(key).arguments(Chat.filterObjToTranslationArgumentLike(with)));
|
||||
public static FormattableChat translation(String key, Object... with) {
|
||||
return new FormattableChat(Component.translatable().key(key).arguments(Chat.filterObjToTranslationArgumentLike(with)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} with the provided keybinding.
|
||||
* Creates a {@link FormattableChat} with the provided keybinding.
|
||||
* @param key the keybinding to display.
|
||||
* @return a new {@link FormatableChat} with the provided keybinding.
|
||||
* @return a new {@link FormattableChat} with the provided keybinding.
|
||||
*/
|
||||
public static FormatableChat keybind(String key) {
|
||||
return new FormatableChat(Component.keybind().keybind(key));
|
||||
public static FormattableChat keyBind(String key) {
|
||||
return new FormattableChat(Component.keybind().keybind(key));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} with the provided score name and objective.
|
||||
* Creates a {@link FormattableChat} with the provided score name and objective.
|
||||
* @param name the score name.
|
||||
* @param objective the score objective.
|
||||
* @return a new {@link FormatableChat} with the provided score name and objective.
|
||||
* @return a new {@link FormattableChat} with the provided score name and objective.
|
||||
*/
|
||||
public static FormatableChat score(String name, String objective) {
|
||||
return new FormatableChat(Component.score().name(name).objective(objective));
|
||||
public static FormattableChat score(String name, String objective) {
|
||||
return new FormattableChat(Component.score().name(name).objective(objective));
|
||||
}
|
||||
|
||||
|
||||
@@ -272,49 +272,49 @@ public abstract class ChatStatic {
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} that leads to a URL when clicked.
|
||||
* Creates a {@link FormattableChat} that leads to a URL when clicked.
|
||||
* @param inner the component to make clickable.
|
||||
* @param url the target url. Must start with {@code "http://"} or {@code "https://"}.
|
||||
* @param hover the content to display when hovering the component.
|
||||
* @return a new {@link FormatableChat} that leads to a URL when clicked.
|
||||
* @return a new {@link FormattableChat} that leads to a URL when clicked.
|
||||
*/
|
||||
public static FormatableChat clickableURL(ComponentLike inner, String url, HoverEventSource<?> hover) {
|
||||
public static FormattableChat clickableURL(ComponentLike inner, String url, HoverEventSource<?> hover) {
|
||||
Objects.requireNonNull(url, "url");
|
||||
if (inner == null)
|
||||
inner = text(url);
|
||||
if (hover == null)
|
||||
hover = text(ChatUtil.wrapInLimitedPixels(url, 240));
|
||||
return (FormatableChat) chat().clickURL(url).urlColor().hover(hover).then(inner);
|
||||
return (FormattableChat) chat().clickURL(url).urlColor().hover(hover).then(inner);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} that leads to a URL when clicked.
|
||||
* Creates a {@link FormattableChat} that leads to a URL when clicked.
|
||||
* <p>
|
||||
* When hovered, the component will display the url. To customize the hover content, use
|
||||
* {@link #clickableURL(ComponentLike, String, HoverEventSource)}.
|
||||
* @param inner the component to make clickable.
|
||||
* @param url the target url. Must start with {@code "http://"} or {@code "https://"}.
|
||||
* @return a new {@link FormatableChat} that leads to a URL when clicked.
|
||||
* @return a new {@link FormattableChat} that leads to a URL when clicked.
|
||||
*/
|
||||
public static FormatableChat clickableURL(ComponentLike inner, String url) {
|
||||
public static FormattableChat clickableURL(ComponentLike inner, String url) {
|
||||
return clickableURL(inner, url, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} that leads to a URL when clicked.
|
||||
* Creates a {@link FormattableChat} that leads to a URL when clicked.
|
||||
* <p>
|
||||
* The text on which to click will be the URL itself. To configure the clicked text, use
|
||||
* {@link #clickableURL(ComponentLike, String, HoverEventSource)}.
|
||||
* @param url the target url. Must start with {@code "http://"} or {@code "https://"}.
|
||||
* @param hover the content to display when hovering the component.
|
||||
* @return a new {@link FormatableChat} that leads to a URL when clicked.
|
||||
* @return a new {@link FormattableChat} that leads to a URL when clicked.
|
||||
*/
|
||||
public static FormatableChat clickableURL(String url, HoverEventSource<?> hover) {
|
||||
public static FormattableChat clickableURL(String url, HoverEventSource<?> hover) {
|
||||
return clickableURL(null, url, hover);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} that leads to a URL when clicked.
|
||||
* Creates a {@link FormattableChat} that leads to a URL when clicked.
|
||||
* <p>
|
||||
* The text on which to click will be the URL itself. To configure the clicked text, use
|
||||
* {@link #clickableURL(ComponentLike, String)}.
|
||||
@@ -322,9 +322,9 @@ public abstract class ChatStatic {
|
||||
* When hovered, the component will display the url. To customize the hover content, use
|
||||
* {@link #clickableURL(String, HoverEventSource)}.
|
||||
* @param url the target url. Must start with {@code "http://"} or {@code "https://"}.
|
||||
* @return a new {@link FormatableChat} that leads to a URL when clicked.
|
||||
* @return a new {@link FormattableChat} that leads to a URL when clicked.
|
||||
*/
|
||||
public static FormatableChat clickableURL(String url) {
|
||||
public static FormattableChat clickableURL(String url) {
|
||||
return clickableURL(null, url, null);
|
||||
}
|
||||
|
||||
@@ -334,14 +334,14 @@ public abstract class ChatStatic {
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} that runs a command when clicked.
|
||||
* Creates a {@link FormattableChat} that runs a command when clicked.
|
||||
* @param inner the component to make clickable.
|
||||
* @param commandWithSlash the command to run. Must start with {@code "/"}.
|
||||
* @param hover the content to display when hovering the component.
|
||||
* @return a new {@link FormatableChat} that runs a command when clicked.
|
||||
* @return a new {@link FormattableChat} that runs a command when clicked.
|
||||
* @throws IllegalArgumentException if {@code commandWithSlash} does not start with a {@code "/"}.
|
||||
*/
|
||||
public static FormatableChat clickableCommand(ComponentLike inner, String commandWithSlash, HoverEventSource<?> hover) {
|
||||
public static FormattableChat clickableCommand(ComponentLike inner, String commandWithSlash, HoverEventSource<?> hover) {
|
||||
Objects.requireNonNull(commandWithSlash, "commandWithSlash");
|
||||
if (!commandWithSlash.startsWith("/"))
|
||||
throw new IllegalArgumentException("commandWithSlash must start with a '/' character.");
|
||||
@@ -349,39 +349,39 @@ public abstract class ChatStatic {
|
||||
inner = text(commandWithSlash);
|
||||
if (hover == null)
|
||||
hover = text(ChatUtil.wrapInLimitedPixels(commandWithSlash, 240));
|
||||
return (FormatableChat) chat().clickCommand(commandWithSlash).commandColor().hover(hover).then(inner);
|
||||
return (FormattableChat) chat().clickCommand(commandWithSlash).commandColor().hover(hover).then(inner);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} that runs a command when clicked.
|
||||
* Creates a {@link FormattableChat} that runs a command when clicked.
|
||||
* <p>
|
||||
* When hovered, the component will display the command itself. To customize the hover content, use
|
||||
* {@link #clickableCommand(ComponentLike, String, HoverEventSource)}.
|
||||
* @param inner the component to make clickable.
|
||||
* @param commandWithSlash the command to run. Must start with {@code "/"}.
|
||||
* @return a new {@link FormatableChat} that runs a command when clicked.
|
||||
* @return a new {@link FormattableChat} that runs a command when clicked.
|
||||
* @throws IllegalArgumentException if {@code commandWithSlash} does not start with a {@code "/"}.
|
||||
*/
|
||||
public static FormatableChat clickableCommand(ComponentLike inner, String commandWithSlash) {
|
||||
public static FormattableChat clickableCommand(ComponentLike inner, String commandWithSlash) {
|
||||
return clickableCommand(inner, commandWithSlash, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} that runs a command when clicked.
|
||||
* Creates a {@link FormattableChat} that runs a command when clicked.
|
||||
* <p>
|
||||
* The text on which to click will be the command itself. To configure the clicked text, use
|
||||
* {@link #clickableCommand(ComponentLike, String, HoverEventSource)}.
|
||||
* @param commandWithSlash the command to run. Must start with {@code "/"}.
|
||||
* @param hover the content to display when hovering the component.
|
||||
* @return a new {@link FormatableChat} that runs a command when clicked.
|
||||
* @return a new {@link FormattableChat} that runs a command when clicked.
|
||||
* @throws IllegalArgumentException if {@code commandWithSlash} does not start with a {@code "/"}.
|
||||
*/
|
||||
public static FormatableChat clickableCommand(String commandWithSlash, HoverEventSource<?> hover) {
|
||||
public static FormattableChat clickableCommand(String commandWithSlash, HoverEventSource<?> hover) {
|
||||
return clickableCommand(null, commandWithSlash, hover);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} that runs a command when clicked.
|
||||
* Creates a {@link FormattableChat} that runs a command when clicked.
|
||||
* <p>
|
||||
* The text on which to click will be the command itself. To configure the clicked text, use
|
||||
* {@link #clickableCommand(ComponentLike, String)}.
|
||||
@@ -389,10 +389,10 @@ public abstract class ChatStatic {
|
||||
* When hovered, the component will display the command itself. To customize the hover content, use
|
||||
* {@link #clickableCommand(String, HoverEventSource)}.
|
||||
* @param commandWithSlash the command to run. Must start with {@code "/"}.
|
||||
* @return a new {@link FormatableChat} that runs a command when clicked.
|
||||
* @return a new {@link FormattableChat} that runs a command when clicked.
|
||||
* @throws IllegalArgumentException if {@code commandWithSlash} does not start with a {@code "/"}.
|
||||
*/
|
||||
public static FormatableChat clickableCommand(String commandWithSlash) {
|
||||
public static FormattableChat clickableCommand(String commandWithSlash) {
|
||||
return clickableCommand(null, commandWithSlash, null);
|
||||
}
|
||||
|
||||
@@ -402,14 +402,14 @@ public abstract class ChatStatic {
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} that pre-fill the chat box with a command when clicked.
|
||||
* Creates a {@link FormattableChat} that pre-fill the chat box with a command when clicked.
|
||||
* @param inner the component to make clickable.
|
||||
* @param commandWithSlash the command to suggest. Must start with {@code "/"}.
|
||||
* @param hover the content to display when hovering the component.
|
||||
* @return a new {@link FormatableChat} that pre-fill the chat box with a command when clicked.
|
||||
* @return a new {@link FormattableChat} that pre-fill the chat box with a command when clicked.
|
||||
* @throws IllegalArgumentException if {@code commandWithSlash} does not start with a {@code "/"}.
|
||||
*/
|
||||
public static FormatableChat clickableSuggest(ComponentLike inner, String commandWithSlash, HoverEventSource<?> hover) {
|
||||
public static FormattableChat clickableSuggest(ComponentLike inner, String commandWithSlash, HoverEventSource<?> hover) {
|
||||
Objects.requireNonNull(commandWithSlash, "commandWithSlash");
|
||||
if (!commandWithSlash.startsWith("/"))
|
||||
throw new IllegalArgumentException("commandWithSlash must start with a '/' character.");
|
||||
@@ -417,39 +417,39 @@ public abstract class ChatStatic {
|
||||
inner = text(commandWithSlash);
|
||||
if (hover == null)
|
||||
hover = text(ChatUtil.wrapInLimitedPixels(commandWithSlash, 240));
|
||||
return (FormatableChat) chat().clickSuggest(commandWithSlash).commandColor().hover(hover).then(inner);
|
||||
return (FormattableChat) chat().clickSuggest(commandWithSlash).commandColor().hover(hover).then(inner);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} that pre-fill the chat box with a command when clicked.
|
||||
* Creates a {@link FormattableChat} that pre-fill the chat box with a command when clicked.
|
||||
* <p>
|
||||
* When hovered, the component will display the command itself. To customize the hover content, use
|
||||
* {@link #clickableSuggest(ComponentLike, String, HoverEventSource)}.
|
||||
* @param inner the component to make clickable.
|
||||
* @param commandWithSlash the command to suggest. Must start with {@code "/"}.
|
||||
* @return a new {@link FormatableChat} that pre-fill the chat box with a command when clicked.
|
||||
* @return a new {@link FormattableChat} that pre-fill the chat box with a command when clicked.
|
||||
* @throws IllegalArgumentException if {@code commandWithSlash} does not start with a {@code "/"}.
|
||||
*/
|
||||
public static FormatableChat clickableSuggest(ComponentLike inner, String commandWithSlash) {
|
||||
public static FormattableChat clickableSuggest(ComponentLike inner, String commandWithSlash) {
|
||||
return clickableSuggest(inner, commandWithSlash, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} that pre-fill the chat box with a command when clicked.
|
||||
* Creates a {@link FormattableChat} that pre-fill the chat box with a command when clicked.
|
||||
* <p>
|
||||
* The text on which to click will be the command itself. To configure the clicked text, use
|
||||
* {@link #clickableSuggest(ComponentLike, String, HoverEventSource)}.
|
||||
* @param commandWithSlash the command to suggest. Must start with {@code "/"}.
|
||||
* @param hover the content to display when hovering the component.
|
||||
* @return a new {@link FormatableChat} that pre-fill the chat box with a command when clicked.
|
||||
* @return a new {@link FormattableChat} that pre-fill the chat box with a command when clicked.
|
||||
* @throws IllegalArgumentException if {@code commandWithSlash} does not start with a {@code "/"}.
|
||||
*/
|
||||
public static FormatableChat clickableSuggest(String commandWithSlash, HoverEventSource<?> hover) {
|
||||
public static FormattableChat clickableSuggest(String commandWithSlash, HoverEventSource<?> hover) {
|
||||
return clickableSuggest(null, commandWithSlash, hover);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} that pre-fill the chat box with a command when clicked.
|
||||
* Creates a {@link FormattableChat} that pre-fill the chat box with a command when clicked.
|
||||
* <p>
|
||||
* The text on which to click will be the command itself. To configure the clicked text, use
|
||||
* {@link #clickableSuggest(ComponentLike, String)}.
|
||||
@@ -457,10 +457,10 @@ public abstract class ChatStatic {
|
||||
* When hovered, the component will display the command itself. To customize the hover content, use
|
||||
* {@link #clickableSuggest(String, HoverEventSource)}.
|
||||
* @param commandWithSlash the command to suggest. Must start with {@code "/"}.
|
||||
* @return a new {@link FormatableChat} that pre-fill the chat box with a command when clicked.
|
||||
* @return a new {@link FormattableChat} that pre-fill the chat box with a command when clicked.
|
||||
* @throws IllegalArgumentException if {@code commandWithSlash} does not start with a {@code "/"}.
|
||||
*/
|
||||
public static FormatableChat clickableSuggest(String commandWithSlash) {
|
||||
public static FormattableChat clickableSuggest(String commandWithSlash) {
|
||||
return clickableSuggest(null, commandWithSlash, null);
|
||||
}
|
||||
|
||||
@@ -472,112 +472,112 @@ public abstract class ChatStatic {
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} filling a chat line with decoration and a left-aligned text.
|
||||
* Creates a {@link FormattableChat} filling a chat line with decoration and a left-aligned text.
|
||||
* @param text the text aligned to the left.
|
||||
* @param decorationChar the character used for decoration around the text.
|
||||
* @param decorationColor the color used for the decoration characters.
|
||||
* @param console if the line is rendered on console (true) or IG (false).
|
||||
* @return a new {@link FormatableChat} filling a chat line with decoration and a left-aligned text.
|
||||
* @return a new {@link FormattableChat} filling a chat line with decoration and a left-aligned text.
|
||||
* @see ChatFilledLine#leftText(ComponentLike)
|
||||
*/
|
||||
public static FormatableChat leftText(ComponentLike text, char decorationChar, TextColor decorationColor, boolean console) {
|
||||
public static FormattableChat leftText(ComponentLike text, char decorationChar, TextColor decorationColor, boolean console) {
|
||||
return ChatFilledLine.leftText(text).decoChar(decorationChar).decoColor(decorationColor).spacesAroundText().console(console).toChat();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} filling a chat line with the configured decoration character and
|
||||
* Creates a {@link FormattableChat} filling a chat line with the configured decoration character and
|
||||
* color and a left-aligned text.
|
||||
* @param text the text aligned to the left.
|
||||
* @param console if the line is rendered on console (true) or IG (false).
|
||||
* @return a new {@link FormatableChat} filling a chat line with the configured decoration character
|
||||
* @return a new {@link FormattableChat} filling a chat line with the configured decoration character
|
||||
* and color and a left-aligned text.
|
||||
* @see ChatFilledLine#leftText(ComponentLike)
|
||||
* @see ChatConfig#decorationChar
|
||||
* @see ChatConfig#decorationColor
|
||||
*/
|
||||
public static FormatableChat leftText(ComponentLike text, boolean console) {
|
||||
public static FormattableChat leftText(ComponentLike text, boolean console) {
|
||||
return ChatFilledLine.leftText(text).spacesAroundText().console(console).toChat();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} filling a chat line with decoration and a right-aligned text.
|
||||
* Creates a {@link FormattableChat} filling a chat line with decoration and a right-aligned text.
|
||||
* @param text the text aligned to the right.
|
||||
* @param decorationChar the character used for decoration around the text.
|
||||
* @param decorationColor the color used for the decoration characters.
|
||||
* @param console if the line is rendered on console (true) or IG (false).
|
||||
* @return a new {@link FormatableChat} filling a chat line with decoration and a right-aligned
|
||||
* @return a new {@link FormattableChat} filling a chat line with decoration and a right-aligned
|
||||
* text.
|
||||
* @see ChatFilledLine#rightText(ComponentLike)
|
||||
*/
|
||||
public static FormatableChat rightText(ComponentLike text, char decorationChar, TextColor decorationColor, boolean console) {
|
||||
public static FormattableChat rightText(ComponentLike text, char decorationChar, TextColor decorationColor, boolean console) {
|
||||
return ChatFilledLine.rightText(text).decoChar(decorationChar).decoColor(decorationColor).spacesAroundText().console(console).toChat();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} filling a chat line with the configured decoration character and
|
||||
* Creates a {@link FormattableChat} filling a chat line with the configured decoration character and
|
||||
* color and a right-aligned text.
|
||||
* @param text the text aligned to the right.
|
||||
* @param console if the line is rendered on console (true) or IG (false).
|
||||
* @return a new {@link FormatableChat} filling a chat line with the configured decoration character
|
||||
* @return a new {@link FormattableChat} filling a chat line with the configured decoration character
|
||||
* and color and a right-aligned text.
|
||||
* @see ChatFilledLine#rightText(ComponentLike)
|
||||
* @see ChatConfig#decorationChar
|
||||
* @see ChatConfig#decorationColor
|
||||
*/
|
||||
public static FormatableChat rightText(ComponentLike text, boolean console) {
|
||||
public static FormattableChat rightText(ComponentLike text, boolean console) {
|
||||
return ChatFilledLine.rightText(text).spacesAroundText().console(console).toChat();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} filling a chat line with decoration and a centered text.
|
||||
* Creates a {@link FormattableChat} filling a chat line with decoration and a centered text.
|
||||
* @param text the text aligned to the center.
|
||||
* @param decorationChar the character used for decoration around the text.
|
||||
* @param decorationColor the color used for the decoration characters.
|
||||
* @param console if the line is rendered on console (true) or IG (false).
|
||||
* @return a new {@link FormatableChat} filling a chat line with decoration and a centered text.
|
||||
* @return a new {@link FormattableChat} filling a chat line with decoration and a centered text.
|
||||
* @see ChatFilledLine#centerText(ComponentLike)
|
||||
*/
|
||||
public static FormatableChat centerText(ComponentLike text, char decorationChar, TextColor decorationColor, boolean console) {
|
||||
public static FormattableChat centerText(ComponentLike text, char decorationChar, TextColor decorationColor, boolean console) {
|
||||
return ChatFilledLine.centerText(text).decoChar(decorationChar).decoColor(decorationColor).spacesAroundText().console(console).toChat();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} filling a chat line with the configured decoration character and
|
||||
* Creates a {@link FormattableChat} filling a chat line with the configured decoration character and
|
||||
* color and a centered text.
|
||||
* @param text the text aligned to the center.
|
||||
* @param console if the line is rendered on console (true) or IG (false).
|
||||
* @return a new {@link FormatableChat} filling a chat line with the configured decoration character
|
||||
* @return a new {@link FormattableChat} filling a chat line with the configured decoration character
|
||||
* and color and a centered text.
|
||||
* @see ChatFilledLine#centerText(ComponentLike)
|
||||
* @see ChatConfig#decorationChar
|
||||
* @see ChatConfig#decorationColor
|
||||
*/
|
||||
public static FormatableChat centerText(ComponentLike text, boolean console) {
|
||||
public static FormattableChat centerText(ComponentLike text, boolean console) {
|
||||
return ChatFilledLine.centerText(text).spacesAroundText().console(console).toChat();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} filling a chat line with a decoration character and color.
|
||||
* Creates a {@link FormattableChat} filling a chat line with a decoration character and color.
|
||||
* @param decorationChar the character used for decoration.
|
||||
* @param decorationColor the color used for the decoration characters.
|
||||
* @param console if the line is rendered on console (true) or IG (false).
|
||||
* @return a new {@link FormatableChat} filling a chat line with a decoration character and color.
|
||||
* @return a new {@link FormattableChat} filling a chat line with a decoration character and color.
|
||||
* @see ChatFilledLine#filled()
|
||||
*/
|
||||
public static FormatableChat filledLine(char decorationChar, TextColor decorationColor, boolean console) {
|
||||
public static FormattableChat filledLine(char decorationChar, TextColor decorationColor, boolean console) {
|
||||
return ChatFilledLine.filled().decoChar(decorationChar).decoColor(decorationColor).console(console).toChat();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link FormatableChat} filling a chat line with the configured decoration character and
|
||||
* Creates a {@link FormattableChat} filling a chat line with the configured decoration character and
|
||||
* color.
|
||||
* @param console if the line is rendered on console (true) or IG (false).
|
||||
* @return a new {@link FormatableChat} filling a chat line with a decoration character and color.
|
||||
* @return a new {@link FormattableChat} filling a chat line with a decoration character and color.
|
||||
* @see ChatFilledLine#filled()
|
||||
* @see ChatConfig#decorationChar
|
||||
* @see ChatConfig#decorationColor
|
||||
*/
|
||||
public static FormatableChat filledLine(boolean console) {
|
||||
public static FormattableChat filledLine(boolean console) {
|
||||
return ChatFilledLine.filled().console(console).toChat();
|
||||
}
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package fr.pandacube.lib.chat;
|
||||
|
||||
import fr.pandacube.lib.chat.Chat.FormatableChat;
|
||||
import fr.pandacube.lib.chat.Chat.FormattableChat;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.ComponentLike;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
@@ -152,7 +152,7 @@ public class ChatUtil {
|
||||
else
|
||||
first = false;
|
||||
|
||||
FormatableChat pDisplay = Chat.clickableCommand(Chat.text(page), String.format(cmdFormat, page), Chat.text("Aller à la page " + page));
|
||||
FormattableChat pDisplay = Chat.clickableCommand(Chat.text(page), String.format(cmdFormat, page), Chat.text("Aller à la page " + page));
|
||||
if (page == currentPage) {
|
||||
pDisplay.highlightedCommandColor();
|
||||
}
|
||||
@@ -180,12 +180,12 @@ public class ChatUtil {
|
||||
* @param elements the components to join.
|
||||
* @return a new {@link Chat} instance with all the provided {@code component} joined using the separators.
|
||||
*/
|
||||
public static FormatableChat joinGrammatically(ComponentLike regularSeparator, ComponentLike finalSeparator, List<? extends ComponentLike> elements) {
|
||||
public static FormattableChat joinGrammatically(ComponentLike regularSeparator, ComponentLike finalSeparator, List<? extends ComponentLike> elements) {
|
||||
int size = elements == null ? 0 : elements.size();
|
||||
int last = size - 1;
|
||||
return switch (size) {
|
||||
case 0, 1, 2 -> join(finalSeparator, elements);
|
||||
default -> (FormatableChat) join(regularSeparator, elements.subList(0, last))
|
||||
default -> (FormattableChat) join(regularSeparator, elements.subList(0, last))
|
||||
.then(finalSeparator)
|
||||
.then(elements.get(last));
|
||||
};
|
||||
@@ -202,8 +202,8 @@ public class ChatUtil {
|
||||
* @param elements the components to join.
|
||||
* @return a new {@link Chat} instance with all the provided {@code component} joined using the separators.
|
||||
*/
|
||||
public static FormatableChat join(ComponentLike separator, Iterable<? extends ComponentLike> elements) {
|
||||
FormatableChat c = chat();
|
||||
public static FormattableChat join(ComponentLike separator, Iterable<? extends ComponentLike> elements) {
|
||||
FormattableChat c = chat();
|
||||
if (elements == null)
|
||||
return c;
|
||||
boolean first = true;
|
||||
@@ -596,7 +596,7 @@ public class ChatUtil {
|
||||
for (int i = 0; i < sizes.length; i++) {
|
||||
sumSizes += sizes[i];
|
||||
|
||||
FormatableChat subC = ChatStatic.text(repeatedChar(PROGRESS_BAR_FULL_CHAR, sizes[i]));
|
||||
FormattableChat subC = ChatStatic.text(repeatedChar(PROGRESS_BAR_FULL_CHAR, sizes[i]));
|
||||
|
||||
if (colors != null && i < colors.length && colors[i] != null)
|
||||
subC.color(colors[i]);
|
||||
|
Reference in New Issue
Block a user