diff --git a/Readme.md b/Readme.md index 858bc6a..d9b0e69 100644 --- a/Readme.md +++ b/Readme.md @@ -9,11 +9,11 @@ that are detailed in their respective Readme file (if any). - `pandalib-util` General purpose utility and helper classes; - `pandalib-chat` A chat API working on top of the Adventure API; - `pandalib-db` An ORM working with a MySQL server through JDBC; -- `pandalib-bungee` Utility and helper classes to use in Bungeecord plugins. Also provides platform implementation for `pandalib-players` and `pandalib-commands`; +- `pandalib-bungee` Utility and helper classes to use in BungeeCord plugins. Also provides platform implementation for `pandalib-players` and `pandalib-commands`; - `pandalib-paper` Utility and helper classes to use in Spigot/Paper plugins. Also provides platform implementation for `pandalib-players` and `pandalib-commands`; - `pandalib-reflect` A reflection wrapper to make reflective operation easier; - `pandalib-permissions` A general purpose permission system; -- `pandalib-bungee-permissions` Integration of the permission system `pandalib-permissions` into Bungeecord; +- `pandalib-bungee-permissions` Integration of the permission system `pandalib-permissions` into BungeeCord; - `pandalib-paper-permissions` Integration of the permission system `pandalib-permissions` into Bukkit, Vault and WEPIF permission systems; - `pandalib-players` A library to handle classes representing online or offline players; - `pandalib-players-permissible` An extension of `pandalib-players` with support for the permission system `pandalib-permissions`; diff --git a/pandalib-bungee-chat/pom.xml b/pandalib-bungee-chat/pom.xml index 988e257..8dc6fd1 100644 --- a/pandalib-bungee-chat/pom.xml +++ b/pandalib-bungee-chat/pom.xml @@ -21,11 +21,6 @@ - - fr.pandacube.lib - pandalib-util - ${project.version} - fr.pandacube.lib pandalib-chat diff --git a/pandalib-bungee-chat/src/main/java/fr/pandacube/lib/bungee/chat/ChatBungee.java b/pandalib-bungee-chat/src/main/java/fr/pandacube/lib/bungee/chat/ChatBungee.java index fd557fe..36fc8f7 100644 --- a/pandalib-bungee-chat/src/main/java/fr/pandacube/lib/bungee/chat/ChatBungee.java +++ b/pandalib-bungee-chat/src/main/java/fr/pandacube/lib/bungee/chat/ChatBungee.java @@ -1,7 +1,7 @@ package fr.pandacube.lib.bungee.chat; import fr.pandacube.lib.chat.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.serializer.bungeecord.BungeeComponentSerializer; @@ -15,22 +15,22 @@ public class ChatBungee { /** - * Creates a {@link FormatableChat} from the provided Bungee {@link BaseComponent}. + * Creates a {@link FormattableChat} from the provided Bungee {@link BaseComponent}. * @param c the {@link BaseComponent}. - * @return a new {@link FormatableChat}. + * @return a new {@link FormattableChat}. */ - public static FormatableChat chatComponent(BaseComponent c) { + public static FormattableChat chatComponent(BaseComponent c) { return Chat.chatComponent(toAdventure(c)); } /** - * Creates a {@link FormatableChat} from the provided Bungee {@link BaseComponent BaseComponent[]}. + * Creates a {@link FormattableChat} from the provided Bungee {@link BaseComponent BaseComponent[]}. * @param c the array of {@link BaseComponent}. - * @return a new {@link FormatableChat}. + * @return a new {@link FormattableChat}. */ - public static FormatableChat chatComponent(BaseComponent[] c) { + public static FormattableChat chatComponent(BaseComponent[] c) { return Chat.chatComponent(toAdventure(c)); } diff --git a/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/PandaLibBungee.java b/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/PandaLibBungee.java index a93797a..92fc327 100644 --- a/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/PandaLibBungee.java +++ b/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/PandaLibBungee.java @@ -1,7 +1,7 @@ package fr.pandacube.lib.bungee; import fr.pandacube.lib.bungee.util.BungeeDailyLogRotateFileHandler; -import fr.pandacube.lib.bungee.util.PluginMessagePassthrough; +import fr.pandacube.lib.bungee.util.PluginMessagePassThrough; import net.md_5.bungee.api.plugin.Plugin; /** @@ -24,7 +24,7 @@ public class PandaLibBungee { * Method to be called in {@link Plugin#onEnable()} method. */ public static void onEnable() { - PluginMessagePassthrough.init(plugin); + PluginMessagePassThrough.init(plugin); BungeeDailyLogRotateFileHandler.init(true); } diff --git a/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/backup/BungeeBackupConfig.java b/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/backup/BungeeBackupConfig.java index e3ff20f..f14ea5d 100644 --- a/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/backup/BungeeBackupConfig.java +++ b/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/backup/BungeeBackupConfig.java @@ -7,7 +7,7 @@ import java.util.ArrayList; import java.util.List; /** - * Class that holds the configuration varables for {@link BungeeBackupManager}. + * Class that holds the configuration variables for {@link BungeeBackupManager}. */ @SuppressWarnings("CanBeFinal") public class BungeeBackupConfig { diff --git a/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/backup/BungeeBackupManager.java b/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/backup/BungeeBackupManager.java index 50ba2b1..4a5c990 100644 --- a/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/backup/BungeeBackupManager.java +++ b/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/backup/BungeeBackupManager.java @@ -7,14 +7,14 @@ import fr.pandacube.lib.core.backup.RotatedLogsBackupProcess; import java.io.File; /** - * Handles the backup processes for a Bungeecord instance. + * Handles the backup processes for a BungeeCord instance. */ public class BungeeBackupManager extends BackupManager { BungeeBackupConfig config; /** - * Instanciate a new {@link BungeeBackupManager}. + * Creates a new {@link BungeeBackupManager}. * @param config the configuration. */ public BungeeBackupManager(BungeeBackupConfig config) { diff --git a/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/backup/BungeeWorkdirProcess.java b/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/backup/BungeeWorkdirProcess.java index 9ce5a2e..6def8b5 100644 --- a/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/backup/BungeeWorkdirProcess.java +++ b/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/backup/BungeeWorkdirProcess.java @@ -6,7 +6,7 @@ import java.io.File; import java.util.function.BiPredicate; /** - * The backup process responsible for the working directory of the current Bungeecord instance. + * The backup process responsible for the working directory of the current BungeeCord instance. */ public class BungeeWorkdirProcess extends BackupProcess { diff --git a/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/players/BungeeOffPlayer.java b/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/players/BungeeOffPlayer.java index f2280d1..bc5beac 100644 --- a/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/players/BungeeOffPlayer.java +++ b/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/players/BungeeOffPlayer.java @@ -6,7 +6,7 @@ import net.md_5.bungee.api.connection.ProxiedPlayer; import fr.pandacube.lib.players.standalone.AbstractOffPlayer; /** - * Represents any player on a Bungeecord proxy, either offline or online. + * Represents any player on a BungeeCord proxy, either offline or online. */ public interface BungeeOffPlayer extends AbstractOffPlayer { diff --git a/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/players/BungeeOnlinePlayer.java b/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/players/BungeeOnlinePlayer.java index d760260..158acb7 100644 --- a/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/players/BungeeOnlinePlayer.java +++ b/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/players/BungeeOnlinePlayer.java @@ -20,7 +20,7 @@ import net.md_5.bungee.protocol.packet.PluginMessage; import java.util.Locale; /** - * Represents any online player on a Bungeecord proxy. + * Represents any online player on a BungeeCord proxy. */ public interface BungeeOnlinePlayer extends BungeeOffPlayer, AbstractOnlinePlayer { diff --git a/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/util/PluginMessagePassthrough.java b/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/util/PluginMessagePassThrough.java similarity index 89% rename from pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/util/PluginMessagePassthrough.java rename to pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/util/PluginMessagePassThrough.java index 1495aa6..1d2e05c 100644 --- a/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/util/PluginMessagePassthrough.java +++ b/pandalib-bungee/src/main/java/fr/pandacube/lib/bungee/util/PluginMessagePassThrough.java @@ -19,16 +19,16 @@ import net.md_5.bungee.event.EventHandler; *

* Usage example, in your plugin init code: *

{@code
- * PluginMessagePassthrough.init(yourPluginInstance);
- * PluginMessagePassthrough.register("worldedit:cui"); // plugin message used by WorldEdit
+ * PluginMessagePassThrough.init(yourPluginInstance);
+ * PluginMessagePassThrough.register("worldedit:cui"); // plugin message used by WorldEdit
  * }
*/ -public class PluginMessagePassthrough implements Listener { +public class PluginMessagePassThrough implements Listener { private static final List channels = Collections.synchronizedList(new ArrayList<>()); - private static final PluginMessagePassthrough instance = new PluginMessagePassthrough(); + private static final PluginMessagePassThrough instance = new PluginMessagePassThrough(); /** - * Initialize the {@link PluginMessagePassthrough}. + * Initialize the {@link PluginMessagePassThrough}. * It registers the required event listener. * @param plugin the plugin instance. */ @@ -92,7 +92,7 @@ public class PluginMessagePassthrough implements Listener { } - private PluginMessagePassthrough() { } + private PluginMessagePassThrough() { } /** diff --git a/pandalib-chat/src/main/java/fr/pandacube/lib/chat/Chat.java b/pandalib-chat/src/main/java/fr/pandacube/lib/chat/Chat.java index 7fc937c..4a8771b 100644 --- a/pandalib-chat/src/main/java/fr/pandacube/lib/chat/Chat.java +++ b/pandalib-chat/src/main/java/fr/pandacube/lib/chat/Chat.java @@ -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. *

- * 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, 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. * } - * 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. *

{@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.
      * }
*/ - 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 styleOp) { builder.style(styleOp); return this; } - private FormatableChat setDecoration(TextDecoration deco, Boolean state) { + private FormattableChat setStyle(Consumer 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) v); } + public FormattableChat hover(Component v) { return hover((HoverEventSource) 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) v); } + public FormattableChat hover(Chat v) { return hover((HoverEventSource) 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; diff --git a/pandalib-chat/src/main/java/fr/pandacube/lib/chat/ChatFilledLine.java b/pandalib-chat/src/main/java/fr/pandacube/lib/chat/ChatFilledLine.java index 6517f8f..77beed7 100644 --- a/pandalib-chat/src/main/java/fr/pandacube/lib/chat/ChatFilledLine.java +++ b/pandalib-chat/src/main/java/fr/pandacube/lib/chat/ChatFilledLine.java @@ -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; } diff --git a/pandalib-chat/src/main/java/fr/pandacube/lib/chat/ChatStatic.java b/pandalib-chat/src/main/java/fr/pandacube/lib/chat/ChatStatic.java index 53c2168..49e897d 100644 --- a/pandalib-chat/src/main/java/fr/pandacube/lib/chat/ChatStatic.java +++ b/pandalib-chat/src/main/java/fr/pandacube/lib/chat/ChatStatic.java @@ -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. *

* 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. *

* 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. *

* 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. *

* 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. *

* 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. *

* 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. *

* 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. *

* 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. *

* 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(); } diff --git a/pandalib-chat/src/main/java/fr/pandacube/lib/chat/ChatUtil.java b/pandalib-chat/src/main/java/fr/pandacube/lib/chat/ChatUtil.java index 00bf683..26182d6 100644 --- a/pandalib-chat/src/main/java/fr/pandacube/lib/chat/ChatUtil.java +++ b/pandalib-chat/src/main/java/fr/pandacube/lib/chat/ChatUtil.java @@ -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 elements) { + public static FormattableChat joinGrammatically(ComponentLike regularSeparator, ComponentLike finalSeparator, List 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 elements) { - FormatableChat c = chat(); + public static FormattableChat join(ComponentLike separator, Iterable 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]); diff --git a/pandalib-cli/pom.xml b/pandalib-cli/pom.xml index d512303..f17799a 100644 --- a/pandalib-cli/pom.xml +++ b/pandalib-cli/pom.xml @@ -27,21 +27,11 @@ pandalib-core ${project.version} - - fr.pandacube.lib - pandalib-reflect - ${project.version} - fr.pandacube.lib pandalib-commands ${project.version} - - fr.pandacube.lib - pandalib-config - ${project.version} - net.md-5 bungeecord-log diff --git a/pandalib-cli/src/main/java/fr/pandacube/lib/cli/CLI.java b/pandalib-cli/src/main/java/fr/pandacube/lib/cli/CLI.java index 280735e..54073a3 100644 --- a/pandalib-cli/src/main/java/fr/pandacube/lib/cli/CLI.java +++ b/pandalib-cli/src/main/java/fr/pandacube/lib/cli/CLI.java @@ -66,7 +66,7 @@ public class CLI extends Thread { String line; try { while((line = reader.readLine()) != null) { - if (line.trim().equals("")) + if (line.trim().isEmpty()) continue; String cmdLine = line; new Thread(() -> CLIBrigadierDispatcher.instance.execute(cmdLine), "CLICmdThread #"+(i++)).start(); diff --git a/pandalib-cli/src/main/java/fr/pandacube/lib/cli/CLIApplication.java b/pandalib-cli/src/main/java/fr/pandacube/lib/cli/CLIApplication.java index dec6ab1..c4bb7ef 100644 --- a/pandalib-cli/src/main/java/fr/pandacube/lib/cli/CLIApplication.java +++ b/pandalib-cli/src/main/java/fr/pandacube/lib/cli/CLIApplication.java @@ -32,6 +32,7 @@ public abstract class CLIApplication { /** * Creates a new application instance. */ + @SuppressWarnings("CallToPrintStackTrace") protected CLIApplication() { instance = this; CLI tmpCLI = null; diff --git a/pandalib-cli/src/main/java/fr/pandacube/lib/cli/commands/CLIBrigadierCommand.java b/pandalib-cli/src/main/java/fr/pandacube/lib/cli/commands/CLIBrigadierCommand.java index cf7c3fc..f985102 100644 --- a/pandalib-cli/src/main/java/fr/pandacube/lib/cli/commands/CLIBrigadierCommand.java +++ b/pandalib-cli/src/main/java/fr/pandacube/lib/cli/commands/CLIBrigadierCommand.java @@ -38,16 +38,9 @@ public abstract class CLIBrigadierCommand extends BrigadierCommand buildCommand(); - - protected String[] getAliases() { - return new String[0]; - } - - - - public boolean isPlayer(CLICommandSender sender) { + public boolean isPlayer(CLICommandSender sender) { return sender.isPlayer(); } diff --git a/pandalib-cli/src/main/java/fr/pandacube/lib/cli/commands/CLICommandSender.java b/pandalib-cli/src/main/java/fr/pandacube/lib/cli/commands/CLICommandSender.java index 9d4c696..83b7cba 100644 --- a/pandalib-cli/src/main/java/fr/pandacube/lib/cli/commands/CLICommandSender.java +++ b/pandalib-cli/src/main/java/fr/pandacube/lib/cli/commands/CLICommandSender.java @@ -41,6 +41,9 @@ public interface CLICommandSender extends Audience { */ void sendMessage(String message); + @SuppressWarnings({"UnstableApiUsage", "deprecation"}) @Override // force implementation of super-interface default method void sendMessage(@NotNull Identity source, @NotNull Component message, @NotNull MessageType type); + + } diff --git a/pandalib-cli/src/main/java/fr/pandacube/lib/cli/commands/CLIConsoleCommandSender.java b/pandalib-cli/src/main/java/fr/pandacube/lib/cli/commands/CLIConsoleCommandSender.java index 8a7eaf7..1040dca 100644 --- a/pandalib-cli/src/main/java/fr/pandacube/lib/cli/commands/CLIConsoleCommandSender.java +++ b/pandalib-cli/src/main/java/fr/pandacube/lib/cli/commands/CLIConsoleCommandSender.java @@ -38,7 +38,7 @@ public class CLIConsoleCommandSender implements CLICommandSender { } @Override - public void sendMessage(@NotNull Identity source, @NotNull Component message, @NotNull MessageType type) { + public void sendMessage(@NotNull Identity source, @NotNull Component message, @SuppressWarnings({"UnstableApiUsage", "deprecation"}) @NotNull MessageType type) { sendMessage(Chat.chatComponent(message).getLegacyText()); } } diff --git a/pandalib-cli/src/main/java/fr/pandacube/lib/cli/commands/CommandAdmin.java b/pandalib-cli/src/main/java/fr/pandacube/lib/cli/commands/CommandAdmin.java index 0fbddc0..808b4b2 100644 --- a/pandalib-cli/src/main/java/fr/pandacube/lib/cli/commands/CommandAdmin.java +++ b/pandalib-cli/src/main/java/fr/pandacube/lib/cli/commands/CommandAdmin.java @@ -14,7 +14,7 @@ import com.mojang.brigadier.tree.CommandNode; import com.mojang.brigadier.tree.LiteralCommandNode; import com.mojang.brigadier.tree.RootCommandNode; import fr.pandacube.lib.chat.Chat; -import fr.pandacube.lib.chat.Chat.FormatableChat; +import fr.pandacube.lib.chat.Chat.FormattableChat; import fr.pandacube.lib.chat.ChatTreeNode; import fr.pandacube.lib.cli.CLIApplication; import fr.pandacube.lib.util.log.Log; @@ -195,13 +195,13 @@ public class CommandAdmin extends CLIBrigadierCommand { private Component displayCurrentNode(CommandNode node, boolean redirectTarget, CLICommandSender sender) { if (node == null) throw new IllegalArgumentException("node must not be null"); - FormatableChat d; + FormattableChat d; if (node instanceof RootCommandNode) { d = text("(root)").italic() .hover("Root command node"); } - else if (node instanceof ArgumentCommandNode) { - ArgumentType type = ((ArgumentCommandNode) node).getType(); + else if (node instanceof ArgumentCommandNode argNode) { + ArgumentType type = argNode.getType(); String typeStr = type.getClass().getSimpleName(); if (type instanceof IntegerArgumentType || type instanceof LongArgumentType @@ -260,10 +260,10 @@ public class CommandAdmin extends CLIBrigadierCommand { return d.get(); } - - - - + + + + private static class DisplayCommandNode { final List> nodes = new ArrayList<>(); final List children = new ArrayList<>(); diff --git a/pandalib-commands/src/main/java/fr/pandacube/lib/commands/BadCommandUsage.java b/pandalib-commands/src/main/java/fr/pandacube/lib/commands/BadCommandUsage.java index 437fab2..331075c 100644 --- a/pandalib-commands/src/main/java/fr/pandacube/lib/commands/BadCommandUsage.java +++ b/pandalib-commands/src/main/java/fr/pandacube/lib/commands/BadCommandUsage.java @@ -3,8 +3,8 @@ package fr.pandacube.lib.commands; import java.util.logging.Logger; /** - * Throw an instance of this exception to indicate to the plugin command handler that the user has missused the command. - * The message, if provided, must indicate the reason of the mussusage of the command. It will be displayed on the + * Throw an instance of this exception to indicate to the plugin command handler that the user has badly used the command. + * The message, if provided, must indicate the reason of the bad usage of the command. It will be displayed on the * screen with eventual indications of how to use the command (help command for example). * If a {@link Throwable} cause is provided, it will be relayed to the plugin {@link Logger}. * diff --git a/pandalib-commands/src/main/java/fr/pandacube/lib/commands/BrigadierCommand.java b/pandalib-commands/src/main/java/fr/pandacube/lib/commands/BrigadierCommand.java index 7b3beae..d151f72 100644 --- a/pandalib-commands/src/main/java/fr/pandacube/lib/commands/BrigadierCommand.java +++ b/pandalib-commands/src/main/java/fr/pandacube/lib/commands/BrigadierCommand.java @@ -223,14 +223,14 @@ public abstract class BrigadierCommand { /** * Wraps the provided {@link SuggestionsSupplier} into a Brigadier’s {@link SuggestionProvider}. * @param suggestions the suggestions to wrap. - * @param senderUnwrapper function to convert the command sender provided by brigadier into the command sender + * @param senderUnWrapper function to convert the command sender provided by brigadier into the command sender * supported by {@link SuggestionsSupplier}. * @return a {@link SuggestionProvider} generating the suggestions from the provided {@link SuggestionsSupplier}. * @param the type of command sender supported by the {@link SuggestionsSupplier}. */ - protected SuggestionProvider wrapSuggestions(SuggestionsSupplier suggestions, Function senderUnwrapper) { + protected SuggestionProvider wrapSuggestions(SuggestionsSupplier suggestions, Function senderUnWrapper) { return (context, builder) -> { - AS sender = senderUnwrapper.apply(context.getSource()); + AS sender = senderUnWrapper.apply(context.getSource()); String message = builder.getInput(); try { int tokenStartPos = builder.getStart(); diff --git a/pandalib-commands/src/main/java/fr/pandacube/lib/commands/SuggestionsSupplier.java b/pandalib-commands/src/main/java/fr/pandacube/lib/commands/SuggestionsSupplier.java index 0a638dc..d97f8b5 100644 --- a/pandalib-commands/src/main/java/fr/pandacube/lib/commands/SuggestionsSupplier.java +++ b/pandalib-commands/src/main/java/fr/pandacube/lib/commands/SuggestionsSupplier.java @@ -241,7 +241,7 @@ public interface SuggestionsSupplier { return (s, ti, token, a) -> { try { List proposedValues = new ArrayList<>(); - if (token.length() == 0) { + if (token.isEmpty()) { long start = Math.max(Math.max(Math.min(-4, max - 9), min), -9); long end = Math.min(Math.min(start + 9, max), 9); ListUtil.addLongRangeToList(proposedValues, start, end); @@ -399,7 +399,7 @@ public interface SuggestionsSupplier { */ default SuggestionsSupplier quotableString() { return (s, ti, token, a) -> { - boolean startWithQuote = token.length() > 0 && (token.charAt(0) == '"' || token.charAt(0) == '\''); + boolean startWithQuote = !token.isEmpty() && (token.charAt(0) == '"' || token.charAt(0) == '\''); String realToken = startWithQuote ? unescapeBrigadierQuotable(token.substring(1), token.charAt(0)) : token; String[] argsCopy = Arrays.copyOf(a, a.length); argsCopy[a.length - 1] = realToken; diff --git a/pandalib-core/src/main/java/fr/pandacube/lib/core/json/Json.java b/pandalib-core/src/main/java/fr/pandacube/lib/core/json/Json.java index f3f4e6b..8b16078 100644 --- a/pandalib-core/src/main/java/fr/pandacube/lib/core/json/Json.java +++ b/pandalib-core/src/main/java/fr/pandacube/lib/core/json/Json.java @@ -32,7 +32,7 @@ public class Json { boolean isFloat = value.contains("."); if (isFloat) { - // if float, will only parse to Double + // if is float, will only parse to Double // (see org.yaml.snakeyaml.constructor.SafeConstructor.ConstructYamlFloat) try { Double d = Double.valueOf(value); diff --git a/pandalib-core/src/main/java/fr/pandacube/lib/core/json/ThrowableAdapter.java b/pandalib-core/src/main/java/fr/pandacube/lib/core/json/ThrowableAdapter.java index a6adff7..866a7aa 100644 --- a/pandalib-core/src/main/java/fr/pandacube/lib/core/json/ThrowableAdapter.java +++ b/pandalib-core/src/main/java/fr/pandacube/lib/core/json/ThrowableAdapter.java @@ -134,30 +134,30 @@ public class ThrowableAdapter implements JsonSerializer, JsonDeserial } private static ThrowableSubAdapter defaultSubAdapter(Class clazz) { - BiFunction constructor = null; + BiFunction constructionFunction = null; // try (String, Throwable) constructor try { - Constructor constr = clazz.getConstructor(String.class, Throwable.class); - if (constr.canAccess(null)) { - constructor = (m, t) -> ThrowableUtil.wrapReflectEx(() -> constr.newInstance(m, t)); + Constructor constructor = clazz.getConstructor(String.class, Throwable.class); + if (constructor.canAccess(null)) { + constructionFunction = (m, t) -> ThrowableUtil.wrapReflectEx(() -> constructor.newInstance(m, t)); } } catch (ReflectiveOperationException ignore) { } // try (String) constructor try { - Constructor constr = clazz.getConstructor(String.class); - if (constr.canAccess(null)) { - constructor = ThrowableSubAdapter.messageOnly((m) -> ThrowableUtil.wrapReflectEx(() -> constr.newInstance(m))); + Constructor constructor = clazz.getConstructor(String.class); + if (constructor.canAccess(null)) { + constructionFunction = ThrowableSubAdapter.messageOnly((m) -> ThrowableUtil.wrapReflectEx(() -> constructor.newInstance(m))); } } catch (ReflectiveOperationException ignore) { } - if (constructor == null) { + if (constructionFunction == null) { Log.warning("Provided Throwable class '" + clazz + "' does not have any of those constructors or are not accessible: (String, Throwable), (String)."); return null; } - return new ThrowableSubAdapter<>(constructor); + return new ThrowableSubAdapter<>(constructionFunction); } diff --git a/pandalib-core/src/main/java/fr/pandacube/lib/core/mc_version/MinecraftVersionUtil.java b/pandalib-core/src/main/java/fr/pandacube/lib/core/mc_version/MinecraftVersionUtil.java index 0263e8f..4c445cb 100644 --- a/pandalib-core/src/main/java/fr/pandacube/lib/core/mc_version/MinecraftVersionUtil.java +++ b/pandalib-core/src/main/java/fr/pandacube/lib/core/mc_version/MinecraftVersionUtil.java @@ -37,8 +37,8 @@ public class MinecraftVersionUtil { /** * Decompose a version string into a series of integers. - * @param v a string representation of a version (eg. 1.19.1). - * @return an array of int representing the provided version (eg. [1, 19, 1]). + * @param v a string representation of a version (e.g. 1.19.1). + * @return an array of int representing the provided version (e.g. [1, 19, 1]). */ public static int[] decomposedVersion(String v) { try { diff --git a/pandalib-core/src/main/java/fr/pandacube/lib/core/mc_version/ProtocolVersion.java b/pandalib-core/src/main/java/fr/pandacube/lib/core/mc_version/ProtocolVersion.java index ee94058..b30d96f 100644 --- a/pandalib-core/src/main/java/fr/pandacube/lib/core/mc_version/ProtocolVersion.java +++ b/pandalib-core/src/main/java/fr/pandacube/lib/core/mc_version/ProtocolVersion.java @@ -68,12 +68,12 @@ public class ProtocolVersion implements Comparable { private static void init() { // try online source first - try { - HttpResponse response = HttpClient.newBuilder() - .connectTimeout(Duration.ofSeconds(5)) - .build() - .send(HttpRequest.newBuilder(URI.create(ONLINE_DATA_URL)).build(), - BodyHandlers.ofString() + try (HttpClient cl = HttpClient.newBuilder() + .connectTimeout(Duration.ofSeconds(5)) + .build()) { + HttpResponse response = cl.send( + HttpRequest.newBuilder(URI.create(ONLINE_DATA_URL)).build(), + BodyHandlers.ofString() ); if (response.statusCode() == 200) { MinecraftVersionList data = Json.gson.fromJson(response.body(), MinecraftVersionList.class); @@ -123,7 +123,7 @@ public class ProtocolVersion implements Comparable { /** * Gets the {@link ProtocolVersion} associated with the provided Minecraft version. - * @param version The Minecraft version, in the format "X.X[.X]" (eg. "1.17" or "1.8.8"). + * @param version The Minecraft version, in the format "X.X[.X]" (e.g. "1.17" or "1.8.8"). * @return an instance of {@link ProtocolVersion}. */ public static ProtocolVersion ofVersion(String version) { diff --git a/pandalib-db/src/main/java/fr/pandacube/lib/db/DB.java b/pandalib-db/src/main/java/fr/pandacube/lib/db/DB.java index 939fd7c..86d8368 100644 --- a/pandalib-db/src/main/java/fr/pandacube/lib/db/DB.java +++ b/pandalib-db/src/main/java/fr/pandacube/lib/db/DB.java @@ -227,7 +227,7 @@ public final class DB { */ public static > E getFirst(Class elemClass, SQLWhere where, SQLOrderBy orderBy, Integer offset) throws DBException { SQLElementList elements = getAll(elemClass, where, orderBy, 1, offset); - return (elements.size() == 0) ? null : elements.get(0); + return (elements.isEmpty()) ? null : elements.get(0); } /** diff --git a/pandalib-db/src/main/java/fr/pandacube/lib/db/SQLType.java b/pandalib-db/src/main/java/fr/pandacube/lib/db/SQLType.java index 8bc7d38..cb889c7 100644 --- a/pandalib-db/src/main/java/fr/pandacube/lib/db/SQLType.java +++ b/pandalib-db/src/main/java/fr/pandacube/lib/db/SQLType.java @@ -42,7 +42,7 @@ public class SQLType { @Override public boolean equals(Object obj) { - return obj instanceof SQLType o + return obj instanceof SQLType o && toString().equals(o.toString()); } diff --git a/pandalib-paper/src/main/java/fr/pandacube/lib/paper/gui/GUIHotBar.java b/pandalib-paper/src/main/java/fr/pandacube/lib/paper/gui/GUIHotBar.java index 05799f7..f86c96f 100644 --- a/pandalib-paper/src/main/java/fr/pandacube/lib/paper/gui/GUIHotBar.java +++ b/pandalib-paper/src/main/java/fr/pandacube/lib/paper/gui/GUIHotBar.java @@ -39,7 +39,7 @@ public class GUIHotBar implements Listener { private final List currentPlayers = new ArrayList<>(); /** - * Setup a new gui hot bar. You should not instantiate more than one hot bar. + * Set up a new gui hot bar. You should not instantiate more than one hot bar. * @param defaultSlot the default slot (currently held item) when the player joins the hot bar. */ public GUIHotBar(int defaultSlot) { diff --git a/pandalib-paper/src/main/java/fr/pandacube/lib/paper/modules/PerformanceAnalysisManager.java b/pandalib-paper/src/main/java/fr/pandacube/lib/paper/modules/PerformanceAnalysisManager.java index 8412bd9..0266e6c 100644 --- a/pandalib-paper/src/main/java/fr/pandacube/lib/paper/modules/PerformanceAnalysisManager.java +++ b/pandalib-paper/src/main/java/fr/pandacube/lib/paper/modules/PerformanceAnalysisManager.java @@ -493,7 +493,7 @@ public class PerformanceAnalysisManager implements Listener { /** * Runs the garbage collector on the server. * Depending on the server load and the used memory, this can freeze the server for a second. - * @param sender the command sender that triggers the garbase collector. Can be null (the report will be sent to the + * @param sender the command sender that triggers the garbage collector. Can be null (the report will be sent to the * console) */ public static void gc(CommandSender sender) { diff --git a/pandalib-paper/src/main/java/fr/pandacube/lib/paper/util/AutoUpdatedBossBar.java b/pandalib-paper/src/main/java/fr/pandacube/lib/paper/util/AutoUpdatedBossBar.java index 7ed80d4..6ca1b41 100644 --- a/pandalib-paper/src/main/java/fr/pandacube/lib/paper/util/AutoUpdatedBossBar.java +++ b/pandalib-paper/src/main/java/fr/pandacube/lib/paper/util/AutoUpdatedBossBar.java @@ -57,8 +57,8 @@ public class AutoUpdatedBossBar implements Listener { * Schedule the update of this boss bar with synchronisation with the system clock. * The underlying method called is {@link Timer#schedule(TimerTask, long, long)}. * The updater is executed in a separate Thread. - * @param msDelay ms before running the first update of this bossbar - * @param msPeriod ms between each call of the updater + * @param msDelay ms before running the first update of this boss bar. + * @param msPeriod ms between each call of the updater. */ public synchronized void scheduleUpdateTimeSyncThreadAsync(long msDelay, long msPeriod) { if (scheduled) @@ -82,8 +82,8 @@ public class AutoUpdatedBossBar implements Listener { * Schedule the update of this boss bar with synchronisation with the ticking of this Minecraft server. * The underlying method called is {@link BukkitScheduler#runTaskTimer(org.bukkit.plugin.Plugin, Runnable, long, long)}. * The updater is executed by the main Server Thread. - * @param tickDelay number of server tick before running the first update of this boss bar - * @param tickPeriod number of server tick between each call of the updater + * @param tickDelay number of server tick before running the first update of this boss bar. + * @param tickPeriod number of server tick between each call of the updater. */ public synchronized void scheduleUpdateTickSyncThreadSync(long tickDelay, long tickPeriod) { if (scheduled) diff --git a/pandalib-paper/src/main/java/fr/pandacube/lib/paper/util/BukkitEvent.java b/pandalib-paper/src/main/java/fr/pandacube/lib/paper/util/BukkitEvent.java index e28f207..b0498ad 100644 --- a/pandalib-paper/src/main/java/fr/pandacube/lib/paper/util/BukkitEvent.java +++ b/pandalib-paper/src/main/java/fr/pandacube/lib/paper/util/BukkitEvent.java @@ -141,7 +141,7 @@ public class BukkitEvent { /** - * An single executor event listener. Used for the {@link #register(Class, EventListener)} static method and the other variants. + * A single executor event listener. Used for the {@link #register(Class, EventListener)} static method and the other variants. * @param the event type. */ public interface EventListener extends Listener, EventExecutor { diff --git a/pandalib-permissions/src/main/java/fr/pandacube/lib/permissions/PermissionsCachedBackendReader.java b/pandalib-permissions/src/main/java/fr/pandacube/lib/permissions/PermissionsCachedBackendReader.java index 70e442e..3a63e30 100644 --- a/pandalib-permissions/src/main/java/fr/pandacube/lib/permissions/PermissionsCachedBackendReader.java +++ b/pandalib-permissions/src/main/java/fr/pandacube/lib/permissions/PermissionsCachedBackendReader.java @@ -71,9 +71,7 @@ import fr.pandacube.lib.util.log.Log; try { DB.getAll(SQLPermissions.class, SQLPermissions.type.eq(EntityType.User.getCode())) .stream() - .collect(Collectors.groupingBy(el -> el.get(SQLPermissions.name), - Collectors.toCollection(() -> new SQLElementList()) - ) + .collect(Collectors.groupingBy(el -> el.get(SQLPermissions.name)) ) .forEach((idStr, pData) -> { try { @@ -100,7 +98,7 @@ import fr.pandacube.lib.util.log.Log; return initPlayer(playerId, playerData); } - private CachedPlayer initPlayer(UUID playerId, SQLElementList playerData) { + private CachedPlayer initPlayer(UUID playerId, List playerData) { Map> playerRawData = playerData.stream() .collect( diff --git a/pandalib-reflect/src/main/java/fr/pandacube/lib/reflect/ReflectField.java b/pandalib-reflect/src/main/java/fr/pandacube/lib/reflect/ReflectField.java index d5c2d25..5eb3a4f 100644 --- a/pandalib-reflect/src/main/java/fr/pandacube/lib/reflect/ReflectField.java +++ b/pandalib-reflect/src/main/java/fr/pandacube/lib/reflect/ReflectField.java @@ -122,9 +122,11 @@ public final class ReflectField extends ReflectMember= 16 // set the value of the field, directly in the memory + @SuppressWarnings("deprecation") // no other options yet. VarHandle blocks edition of final fields Object unsafeObjInstance = Modifier.isStatic(realModifiers) ? sunMiscUnsafeInstance.staticFieldBase(f) : instance; + @SuppressWarnings("deprecation") // no other options yet. VarHandle blocks edition of final fields long offset = Modifier.isStatic(realModifiers) ? sunMiscUnsafeInstance.staticFieldOffset(f) : sunMiscUnsafeInstance.objectFieldOffset(f); diff --git a/pandalib-reflect/src/main/java/fr/pandacube/lib/reflect/wrapper/ReflectListWrapper.java b/pandalib-reflect/src/main/java/fr/pandacube/lib/reflect/wrapper/ReflectListWrapper.java index e84db05..b030c2b 100644 --- a/pandalib-reflect/src/main/java/fr/pandacube/lib/reflect/wrapper/ReflectListWrapper.java +++ b/pandalib-reflect/src/main/java/fr/pandacube/lib/reflect/wrapper/ReflectListWrapper.java @@ -39,7 +39,7 @@ public class ReflectListWrapper extends MappedListVie */ @Override public boolean equals(Object o) { - return o instanceof List l && backend.equals(l instanceof ReflectListWrapper rw ? rw.backend : l); + return o instanceof List l && backend.equals(l instanceof ReflectListWrapper rw ? rw.backend : l); } @Override diff --git a/pandalib-reflect/src/main/java/fr/pandacube/lib/reflect/wrapper/ReflectWrapperTyped.java b/pandalib-reflect/src/main/java/fr/pandacube/lib/reflect/wrapper/ReflectWrapperTyped.java index 1fdd676..d6f9103 100644 --- a/pandalib-reflect/src/main/java/fr/pandacube/lib/reflect/wrapper/ReflectWrapperTyped.java +++ b/pandalib-reflect/src/main/java/fr/pandacube/lib/reflect/wrapper/ReflectWrapperTyped.java @@ -16,11 +16,6 @@ public abstract class ReflectWrapperTyped extends ReflectWrapper implements R super(obj); } - @Override - public Class __getRuntimeClass() { - return ReflectWrapperTypedI.super.__getRuntimeClass(); - } - @SuppressWarnings("unchecked") @Override public T __getRuntimeInstance() { diff --git a/pandalib-util/src/main/java/fr/pandacube/lib/util/AmountPerTimeLimiter.java b/pandalib-util/src/main/java/fr/pandacube/lib/util/AmountPerTimeLimiter.java index cf12f41..0149375 100644 --- a/pandalib-util/src/main/java/fr/pandacube/lib/util/AmountPerTimeLimiter.java +++ b/pandalib-util/src/main/java/fr/pandacube/lib/util/AmountPerTimeLimiter.java @@ -6,10 +6,10 @@ import java.util.stream.Collectors; /** * Utility class to track and limit the amount of a specific value for a specified amount of duration. - * + *

* An exemple of application is for rolling expense limit of a debit card: you cannot expense more that {@code $X} * during a rolling period of {@code $Y} time. - * + *

* Here is an example usage of this class: *

  *     AmountPerTimeLimiter instance = new AmountPerTimeLimiter(X, Y);
diff --git a/pandalib-util/src/main/java/fr/pandacube/lib/util/EnumUtil.java b/pandalib-util/src/main/java/fr/pandacube/lib/util/EnumUtil.java
index 6be31ba..953e260 100644
--- a/pandalib-util/src/main/java/fr/pandacube/lib/util/EnumUtil.java
+++ b/pandalib-util/src/main/java/fr/pandacube/lib/util/EnumUtil.java
@@ -55,7 +55,7 @@ public class EnumUtil {
 	 * Search for a specific enum entry in the provided enum type, using the case-insensitive search string.
 	 * unlike {@link #searchEnum(Class, String)}, this method does not statically check the enum type, in case it is not
 	 * known at compilation time.
-	 *
+	 * 

* For a statically checked enum type, uses {@link #searchEnum(Class, String)} instead. * * @param enumType the class of the enum in which to search diff --git a/pandalib-util/src/main/java/fr/pandacube/lib/util/IteratorIterator.java b/pandalib-util/src/main/java/fr/pandacube/lib/util/IteratorIterator.java index ba7be02..929fbd6 100644 --- a/pandalib-util/src/main/java/fr/pandacube/lib/util/IteratorIterator.java +++ b/pandalib-util/src/main/java/fr/pandacube/lib/util/IteratorIterator.java @@ -15,7 +15,7 @@ public class IteratorIterator implements Iterator { /** * Create an {@link IteratorIterator} with the provided {@link Collection} of {@link Iterable}. - * The iterables’ iterators will be concatenated in the order of the collection’s iterator. + * The iterable's iterators will be concatenated in the order of the collection’s iterator. * @param coll the collection of iterables. * @return a new instance of {@link IteratorIterator} iterating over the elements of the provided iterables. * @param the type of the values in the iterables. @@ -37,7 +37,7 @@ public class IteratorIterator implements Iterator { /** * Create an {@link IteratorIterator} with the provided array of {@link Iterable}. - * The iterables’ iterators will be concatenated in the order of the array. + * The iterable's iterators will be concatenated in the order of the array. * @param arr the array of iterables. * @return a new instance of {@link IteratorIterator} iterating over the elements of the provided iterables. * @param the type of the values in the iterables. diff --git a/pandalib-util/src/main/java/fr/pandacube/lib/util/log/Log.java b/pandalib-util/src/main/java/fr/pandacube/lib/util/log/Log.java index 5c3ab2f..c63202f 100644 --- a/pandalib-util/src/main/java/fr/pandacube/lib/util/log/Log.java +++ b/pandalib-util/src/main/java/fr/pandacube/lib/util/log/Log.java @@ -7,7 +7,7 @@ import java.util.logging.Logger; /** * Utility class to easily log info into a provided logger. This class avoid the needs to fetch the logger everytime it * is needed. - * + *

* For instance, this piece of code: *

  * getTheLoggerFromSomewhere().info(message);
@@ -22,7 +22,7 @@ import java.util.logging.Logger;
  * Log.info(message);
  * 
* - * This the {@link #setLogger(Logger)} method is not called, thi class will use the logger returned by + * If the {@link #setLogger(Logger)} method is not called, this class will use the logger returned by * {@link Logger#getGlobal()}. */ public final class Log { diff --git a/pandalib-ws-client/src/main/java/fr/pandacube/lib/ws/client/AbstractClientWS.java b/pandalib-ws-client/src/main/java/fr/pandacube/lib/ws/client/AbstractClientWS.java index c5d54b4..29f1977 100644 --- a/pandalib-ws-client/src/main/java/fr/pandacube/lib/ws/client/AbstractClientWS.java +++ b/pandalib-ws-client/src/main/java/fr/pandacube/lib/ws/client/AbstractClientWS.java @@ -127,31 +127,34 @@ public abstract class AbstractClientWS implements AbstractWS { private void connect() { synchronized (socket) { isConnecting = true; - HttpClient.newHttpClient() - .newWebSocketBuilder() - .connectTimeout(Duration.ofSeconds(5)) - .buildAsync(uri, receiveListener) - .whenCompleteAsync((ws, ex) -> { - synchronized (socket) { - isConnecting = false; - if (ws != null) { - // the value may already been set by the onOpen method of the receiveListener - // but just in case, we do it here too - socket.set(ws); - return; + try (HttpClient cl = HttpClient.newHttpClient()) { + cl.newWebSocketBuilder() + .connectTimeout(Duration.ofSeconds(5)) + .buildAsync(uri, receiveListener) + .whenCompleteAsync((ws, ex) -> { + synchronized (socket) { + isConnecting = false; + if (ws != null) { + // the value may already been set by the onOpen method of the receiveListener + // but just in case, we do it here too + socket.set(ws); + return; + } } - } - if (ex instanceof CompletionException) - ex = ex.getCause(); - if (ex instanceof IOException) { - reconnectIfNecessary(); - log("Unable to connect. Trying again...: " + ex); - } - else { - autoReconnect = false; - logError("Error connecting (not trying to reconnect even if asked)", ex); - } - }); + if (ex instanceof CompletionException) + ex = ex.getCause(); + if (ex instanceof IOException) { + reconnectIfNecessary(); + log("Unable to connect. Trying again...: " + ex); + } + else { + autoReconnect = false; + logError("Error connecting (not trying to reconnect even if asked)", ex); + } + }); + } + + } } diff --git a/pandalib-ws-server/src/main/java/fr/pandacube/lib/ws/server/AbstractServerWS.java b/pandalib-ws-server/src/main/java/fr/pandacube/lib/ws/server/AbstractServerWS.java index 0958c73..54ad67f 100644 --- a/pandalib-ws-server/src/main/java/fr/pandacube/lib/ws/server/AbstractServerWS.java +++ b/pandalib-ws-server/src/main/java/fr/pandacube/lib/ws/server/AbstractServerWS.java @@ -61,7 +61,7 @@ public abstract class AbstractServerWS extends WebSocketAdapter implements Abstr } @Override - public final void sendClose(int code, String reason) throws IOException { + public final void sendClose(int code, String reason) { getSession().close(code, reason); isClosed = true; }