Skip to content

Commit

Permalink
add MessageSender and surpress removal warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
Snabeldier committed Jan 11, 2025
1 parent d395cb1 commit 50d7c1a
Show file tree
Hide file tree
Showing 5 changed files with 105 additions and 18 deletions.
1 change: 1 addition & 0 deletions src/main/java/minevalley/core/api/ChatMenu.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import minevalley.core.api.utils.ClickableMessage;

@Deprecated(forRemoval = true)
public interface ChatMenu {

/**
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/minevalley/core/api/CoreServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down
60 changes: 60 additions & 0 deletions src/main/java/minevalley/core/api/chat/MessageSender.java
Original file line number Diff line number Diff line change
@@ -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;
}
35 changes: 26 additions & 9 deletions src/main/java/minevalley/core/api/npc/NPC.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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();

Expand Down Expand Up @@ -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();

Expand Down
25 changes: 16 additions & 9 deletions src/main/java/minevalley/core/api/users/OnlineUser.java
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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.
Expand All @@ -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.
Expand All @@ -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.
Expand All @@ -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.
Expand All @@ -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.
Expand All @@ -294,17 +298,19 @@ 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.
*
* @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.
Expand All @@ -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.
Expand Down

0 comments on commit 50d7c1a

Please sign in to comment.