diff --git a/src/main/java/minevalley/core/api/ChatMenu.java b/src/main/java/minevalley/core/api/ChatMenu.java index 8e9a4fc7..b3d5518c 100644 --- a/src/main/java/minevalley/core/api/ChatMenu.java +++ b/src/main/java/minevalley/core/api/ChatMenu.java @@ -2,6 +2,7 @@ import minevalley.core.api.utils.ClickableMessage; +@Deprecated(forRemoval = true) public interface ChatMenu { /** diff --git a/src/main/java/minevalley/core/api/CoreServer.java b/src/main/java/minevalley/core/api/CoreServer.java index 04dec7b0..7681f777 100644 --- a/src/main/java/minevalley/core/api/CoreServer.java +++ b/src/main/java/minevalley/core/api/CoreServer.java @@ -209,9 +209,11 @@ public interface CoreServer { @Contract("_ -> new") ItemBuilder createItem(String url) throws IllegalArgumentException; + @SuppressWarnings("removal") @Deprecated(forRemoval = true) ChatMenu createChatMenu(ChatMenu.Option... options); + @SuppressWarnings("removal") @Deprecated(forRemoval = true) ChatMenu createChatMenu(); diff --git a/src/main/java/minevalley/core/api/chat/MessageSender.java b/src/main/java/minevalley/core/api/chat/MessageSender.java new file mode 100644 index 00000000..0a63fd06 --- /dev/null +++ b/src/main/java/minevalley/core/api/chat/MessageSender.java @@ -0,0 +1,60 @@ +package minevalley.core.api.chat; + +import minevalley.core.api.chat.clickable.ChatMenu; +import minevalley.core.api.chat.clickable.ClickableOption; +import minevalley.core.api.chat.instruction.Instruction; +import minevalley.core.api.utils.ClickableMessage; +import net.kyori.adventure.text.ComponentLike; +import org.jetbrains.annotations.Contract; + +import javax.annotation.Nonnull; + +@SuppressWarnings("unused") +public interface MessageSender { + + /** + * Sends a message to a receiver. + * + * @param receiver receiver to send the message to + * @param message message to send + * @throws IllegalArgumentException if the receiver or message is null + */ + void send(@Nonnull MessageReceiver receiver, @Nonnull ComponentLike message) throws IllegalArgumentException; + + /** + * Sends a message to a receiver with an instruction. + * + * @param receiver receiver to send the message to + * @param message message to send + * @param instruction instruction to send + * @throws IllegalArgumentException if the receiver, message or instruction is null + */ + void send(@Nonnull MessageReceiver receiver, @Nonnull ComponentLike message, @Nonnull Instruction instruction) throws IllegalArgumentException; + + /** + * Sends a message to a receiver with a menu. + * + * @param receiver receiver to send the message to + * @param message message to send + * @param menu menu to send + * @return the chat menu + * @throws IllegalArgumentException if the receiver, message or menu is null + */ + @Nonnull + @Contract("_, _, _ -> new") + ChatMenu send(@Nonnull MessageReceiver receiver, @Nonnull ComponentLike message, @Nonnull ClickableOption... menu) throws IllegalArgumentException; + + /** + * Sends a message to a receiver with an instruction and a menu. + * + * @param receiver receiver to send the message to + * @param message message to send + * @param instruction instruction to send + * @param menu menu to send + * @return the chat menu + * @throws IllegalArgumentException if the receiver, message, instruction or menu is null + */ + @Nonnull + @Contract("_, _, _, _ -> new") + ChatMenu send(@Nonnull MessageReceiver receiver, @Nonnull ComponentLike message, @Nonnull Instruction instruction, @Nonnull ClickableMessage... menu) throws IllegalArgumentException; +} diff --git a/src/main/java/minevalley/core/api/npc/NPC.java b/src/main/java/minevalley/core/api/npc/NPC.java index 5d67e234..6575f96a 100644 --- a/src/main/java/minevalley/core/api/npc/NPC.java +++ b/src/main/java/minevalley/core/api/npc/NPC.java @@ -3,8 +3,8 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.RequiredArgsConstructor; -import minevalley.core.api.ChatMenu; import minevalley.core.api.armorstand.FakeArmorStand; +import minevalley.core.api.chat.MessageSender; import minevalley.core.api.modifiers.EquipmentModifier; import minevalley.core.api.modifiers.InteractionModifier; import minevalley.core.api.modifiers.LocationModifier; @@ -17,11 +17,10 @@ import org.bukkit.util.Vector; import java.util.List; -import java.util.function.BiConsumer; import java.util.function.Consumer; @SuppressWarnings("unused") -public interface NPC extends EquipmentModifier, InteractionModifier, LocationModifier, VisibilityModifier { +public interface NPC extends MessageSender, EquipmentModifier, InteractionModifier, LocationModifier, VisibilityModifier { String getName(); @@ -77,29 +76,47 @@ default void zoomIn(OnlineUser user) { NPC setChatPrefix(String prefix); + @Deprecated(forRemoval = true) void say(OnlineUser user, String text); + @Deprecated(forRemoval = true) void say(OnlineUser user, BaseComponent[] baseComponent); - void say(OnlineUser user, String text, ChatMenu chatMenu); + @SuppressWarnings("removal") + @Deprecated(forRemoval = true) + void say(OnlineUser user, String text, minevalley.core.api.ChatMenu chatMenu); - void say(OnlineUser user, BaseComponent[] baseComponent, ChatMenu chatMenu); + @SuppressWarnings("removal") + @Deprecated(forRemoval = true) + void say(OnlineUser user, BaseComponent[] baseComponent, minevalley.core.api.ChatMenu chatMenu); + @Deprecated(forRemoval = true) void say(OnlineUser user, String text, OnlineUser.Notice notice); + @Deprecated(forRemoval = true) void say(OnlineUser user, BaseComponent[] baseComponent, OnlineUser.Notice notice); - void say(OnlineUser user, String text, ChatMenu chatMenu, OnlineUser.Notice notice); + @SuppressWarnings("removal") + @Deprecated(forRemoval = true) + void say(OnlineUser user, String text, minevalley.core.api.ChatMenu chatMenu, OnlineUser.Notice notice); - void say(OnlineUser user, BaseComponent[] baseComponent, ChatMenu chatMenu, OnlineUser.Notice notice); + @SuppressWarnings("removal") + @Deprecated(forRemoval = true) + void say(OnlineUser user, BaseComponent[] baseComponent, minevalley.core.api.ChatMenu chatMenu, OnlineUser.Notice notice); + @Deprecated(forRemoval = true) void say(OnlineUser user, RandomText... text); - void say(OnlineUser user, ChatMenu chatMenu, RandomText... text); + @SuppressWarnings("removal") + @Deprecated(forRemoval = true) + void say(OnlineUser user, minevalley.core.api.ChatMenu chatMenu, RandomText... text); + @Deprecated(forRemoval = true) void say(OnlineUser user, OnlineUser.Notice notice, RandomText... text); - void say(OnlineUser user, ChatMenu chatMenu, OnlineUser.Notice notice, RandomText... text); + @SuppressWarnings("removal") + @Deprecated(forRemoval = true) + void say(OnlineUser user, minevalley.core.api.ChatMenu chatMenu, OnlineUser.Notice notice, RandomText... text); OnlineUser.Notice getTalkWithMeNotice(); diff --git a/src/main/java/minevalley/core/api/users/OnlineUser.java b/src/main/java/minevalley/core/api/users/OnlineUser.java index fa825490..14815d73 100644 --- a/src/main/java/minevalley/core/api/users/OnlineUser.java +++ b/src/main/java/minevalley/core/api/users/OnlineUser.java @@ -1,7 +1,6 @@ package minevalley.core.api.users; import lombok.NonNull; -import minevalley.core.api.ChatMenu; import minevalley.core.api.chat.MessageReceiver; import minevalley.core.api.chat.types.MessageType; import minevalley.core.api.economy.AccountUser; @@ -239,8 +238,9 @@ default void closeInventory() { * @param message message to be sent as string * @param chatMenu menu to attach underneath the message */ + @SuppressWarnings("removal") @Deprecated(forRemoval = true) - void sendMessage(@NonNull String message, ChatMenu chatMenu); + void sendMessage(@NonNull String message, minevalley.core.api.ChatMenu chatMenu); /** * Sends a message to this user like the default player.sendMessage()-method. Without any prefix or color. @@ -250,8 +250,9 @@ default void closeInventory() { * @param chatMenu menu to attach underneath the message * @param notice notice that is sent to the user */ + @SuppressWarnings("removal") @Deprecated(forRemoval = true) - void sendMessage(@NonNull String message, ChatMenu chatMenu, @NonNull Notice notice); + void sendMessage(@NonNull String message, minevalley.core.api.ChatMenu chatMenu, @NonNull Notice notice); /** * Sends a message to this user with a specific prefix. @@ -260,8 +261,9 @@ default void closeInventory() { * @param message message to be sent as string * @param chatMenu menu to attach underneath the message */ + @SuppressWarnings("removal") @Deprecated(forRemoval = true) - void sendMessage(@NonNull MessageType messageType, @NonNull String message, ChatMenu chatMenu); + void sendMessage(@NonNull MessageType messageType, @NonNull String message, minevalley.core.api.ChatMenu chatMenu); /** * Sends a message to this user with a specific prefix. @@ -272,8 +274,9 @@ default void closeInventory() { * @param chatMenu menu to attach underneath the message * @param notice notice that is sent to the user */ + @SuppressWarnings("removal") @Deprecated(forRemoval = true) - void sendMessage(@NonNull MessageType messageType, @NonNull String message, ChatMenu chatMenu, @NonNull Notice notice); + void sendMessage(@NonNull MessageType messageType, @NonNull String message, minevalley.core.api.ChatMenu chatMenu, @NonNull Notice notice); /** * Sends a message to this user with a specific prefix, using ComponentBuilders. @@ -282,8 +285,9 @@ default void closeInventory() { * @param baseComponent message to be sent as string * @param chatMenu menu to attach underneath the message */ + @SuppressWarnings("removal") @Deprecated(forRemoval = true) - void sendMessage(@NonNull MessageType messageType, @NonNull BaseComponent[] baseComponent, ChatMenu chatMenu); + void sendMessage(@NonNull MessageType messageType, @NonNull BaseComponent[] baseComponent, minevalley.core.api.ChatMenu chatMenu); /** * Sends a message to this user with a specific prefix, using ComponentBuilders. @@ -294,8 +298,9 @@ default void closeInventory() { * @param chatMenu menu to attach underneath the message * @param notice notice that is sent to the user */ + @SuppressWarnings("removal") @Deprecated(forRemoval = true) - void sendMessage(@NonNull MessageType messageType, @NonNull BaseComponent[] baseComponent, ChatMenu chatMenu, @NonNull Notice notice); + void sendMessage(@NonNull MessageType messageType, @NonNull BaseComponent[] baseComponent, minevalley.core.api.ChatMenu chatMenu, @NonNull Notice notice); /** * Sends a message to this user, with using ComponentBuilders. This way you can use hover and click-events and can take advantage of the clickable messages. @@ -303,8 +308,9 @@ default void closeInventory() { * @param baseComponent base-component which can be created by "new ComponentBuilder().create()" * @param chatMenu menu to attach underneath the message */ + @SuppressWarnings("removal") @Deprecated(forRemoval = true) - void sendMessage(@NonNull BaseComponent[] baseComponent, ChatMenu chatMenu); + void sendMessage(@NonNull BaseComponent[] baseComponent, minevalley.core.api.ChatMenu chatMenu); /** * Sends a message to this user, with using ComponentBuilders. This way you can use hover and click-events and can take advantage of the clickable messages. @@ -314,8 +320,9 @@ default void closeInventory() { * @param chatMenu menu to attach underneath the message * @param notice notice that is sent to the user */ + @SuppressWarnings("removal") @Deprecated(forRemoval = true) - void sendMessage(@NonNull BaseComponent[] baseComponent, ChatMenu chatMenu, @NonNull Notice notice); + void sendMessage(@NonNull BaseComponent[] baseComponent, minevalley.core.api.ChatMenu chatMenu, @NonNull Notice notice); /** * Sends a message to the user providing useful side information. The user can click a button so that the message will not be sent the next time.