mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-06-25 10:14:43 +02:00
Rewrite of McMMOPlayerNotificationEvent
This commit is contained in:
@ -1,8 +1,10 @@
|
||||
package com.gmail.nossr50.events.skills;
|
||||
|
||||
import com.gmail.nossr50.config.hocon.notifications.PlayerNotification;
|
||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||
import net.md_5.bungee.api.ChatMessageType;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import org.bukkit.craftbukkit.libs.jline.internal.Nullable;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.Event;
|
||||
@ -10,26 +12,23 @@ import org.bukkit.event.HandlerList;
|
||||
|
||||
/**
|
||||
* This event is sent for when mcMMO informs a player about various important information
|
||||
* Contains a TextComponent if the message contains complex features such as hover objects, clickables, etc
|
||||
* TextComponent is not guaranteed to exist, but often it does
|
||||
*/
|
||||
public class McMMOPlayerNotificationEvent extends Event implements Cancellable {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
protected final NotificationType notificationType;
|
||||
protected ChatMessageType chatMessageType;
|
||||
protected TextComponent notificationTextComponent;
|
||||
private PlayerNotification playerNotification;
|
||||
private Player recipient;
|
||||
private boolean isCancelled;
|
||||
/*
|
||||
* Messages can be sent to both places, as configured in advanced.yml
|
||||
* If isBeingSentToActionBar is false, then messages will ALWAYS be sent to the chat bar
|
||||
* isMessageAlsoBeingSentToChat just indicates a copy of that message will be sent to chat
|
||||
*/
|
||||
private boolean isMessageAlsoBeingSentToChat;
|
||||
private NotificationType notificationType;
|
||||
private TextComponent textComponent;
|
||||
|
||||
public McMMOPlayerNotificationEvent(Player who, NotificationType notificationType, TextComponent notificationTextComponent, ChatMessageType chatMessageType, boolean isMessageAlsoBeingSentToChat) {
|
||||
public McMMOPlayerNotificationEvent(NotificationType notificationType, Player recipient, PlayerNotification playerNotification, TextComponent textComponent) {
|
||||
super(false);
|
||||
this.notificationType = notificationType;
|
||||
this.notificationTextComponent = notificationTextComponent;
|
||||
this.chatMessageType = chatMessageType;
|
||||
this.isMessageAlsoBeingSentToChat = isMessageAlsoBeingSentToChat;
|
||||
this.recipient = recipient;
|
||||
this.playerNotification = playerNotification;
|
||||
this.textComponent = textComponent;
|
||||
isCancelled = false;
|
||||
}
|
||||
|
||||
@ -37,33 +36,80 @@ public class McMMOPlayerNotificationEvent extends Event implements Cancellable {
|
||||
* Getters & Setters
|
||||
*/
|
||||
|
||||
/**
|
||||
* Whether or not this notification event uses a text component
|
||||
* @return true if this notification has a text component
|
||||
*/
|
||||
public boolean hasTextComponent() {
|
||||
return textComponent != null;
|
||||
}
|
||||
|
||||
/**
|
||||
* The recipient of this notification
|
||||
* @return the recipient of this notification
|
||||
*/
|
||||
public Player getRecipient() {
|
||||
return recipient;
|
||||
}
|
||||
|
||||
public void setRecipient(Player recipient) {
|
||||
this.recipient = recipient;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is this notification being sent to chat
|
||||
* @return true if being sent to chat
|
||||
*/
|
||||
public boolean isBeingSentToChat() {
|
||||
return playerNotification.isSendToChat();
|
||||
}
|
||||
|
||||
/**
|
||||
* Is this notification being sent to action bar
|
||||
* @return true if being sent to action bar
|
||||
*/
|
||||
public boolean isBeingSentToActionBar() {
|
||||
return playerNotification.isSendToActionBar();
|
||||
}
|
||||
|
||||
/**
|
||||
* Change whether or not this notification sends to chat
|
||||
* @param sendToChat new value
|
||||
*/
|
||||
public void setSendToChat(boolean sendToChat) {
|
||||
playerNotification.setSendToChat(sendToChat);
|
||||
}
|
||||
|
||||
/**
|
||||
* Change whether or not this notification sends to action bar
|
||||
* @param sendToActionBar new value
|
||||
*/
|
||||
public void setSendToActionBar(boolean sendToActionBar) {
|
||||
playerNotification.setSendToActionBar(sendToActionBar);
|
||||
}
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
public boolean isMessageAlsoBeingSentToChat() {
|
||||
return isMessageAlsoBeingSentToChat;
|
||||
}
|
||||
|
||||
public void setMessageAlsoBeingSentToChat(boolean messageAlsoBeingSentToChat) {
|
||||
isMessageAlsoBeingSentToChat = messageAlsoBeingSentToChat;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the text component if it exists
|
||||
* @return the text component if it exists
|
||||
*/
|
||||
public TextComponent getNotificationTextComponent() {
|
||||
return notificationTextComponent;
|
||||
return textComponent;
|
||||
}
|
||||
|
||||
public void setNotificationTextComponent(TextComponent notificationTextComponent) {
|
||||
this.notificationTextComponent = notificationTextComponent;
|
||||
/**
|
||||
* Override the text component for this event
|
||||
* Note that not all events are using a text component
|
||||
* If you set one and it didn't exist before, then mcMMO will use the text component instead of the raw message
|
||||
* @param textComponent new text component
|
||||
*/
|
||||
public void setNotificationTextComponent(TextComponent textComponent) {
|
||||
this.textComponent = textComponent;
|
||||
}
|
||||
|
||||
public ChatMessageType getChatMessageType() {
|
||||
return chatMessageType;
|
||||
}
|
||||
|
||||
public void setChatMessageType(ChatMessageType chatMessageType) {
|
||||
this.chatMessageType = chatMessageType;
|
||||
}
|
||||
|
||||
/*
|
||||
* Custom Event Boilerplate
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.gmail.nossr50.util.player;
|
||||
|
||||
import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.config.hocon.notifications.PlayerNotification;
|
||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||
import com.gmail.nossr50.datatypes.notifications.SensitiveCommandType;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
@ -22,7 +23,23 @@ import org.bukkit.SoundCategory;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class NotificationManager {
|
||||
|
||||
private HashMap<NotificationType, PlayerNotification> playerNotificationHashMap;
|
||||
|
||||
public NotificationManager() {
|
||||
playerNotificationHashMap = new HashMap<>();
|
||||
|
||||
initMaps();
|
||||
}
|
||||
|
||||
private void initMaps() {
|
||||
//Copy the map
|
||||
playerNotificationHashMap = new HashMap<>(mcMMO.getConfigManager().getConfigNotifications().getNotificationSettingHashMap());
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends players notifications from mcMMO
|
||||
* This does this by sending out an event so other plugins can cancel it
|
||||
|
Reference in New Issue
Block a user