diff --git a/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java b/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java index 8a8ac0924..995ff6c5d 100644 --- a/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java +++ b/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java @@ -696,10 +696,15 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { return config.getDouble("Skills."+abstractSubSkill.getPrimaryKeyName()+"."+abstractSubSkill.getConfigKeyName()+".ChanceMax", 100.0D); } - /* Interaction Settings */ + /* Notification Settings */ public boolean doesNotificationUseActionBar(NotificationType notificationType) { - return config.getBoolean("Feedback.ActionBarNotifications."+notificationType.toString(), true); + return config.getBoolean("Feedback.ActionBarNotifications."+notificationType.toString()+".Enabled", true); + } + + public boolean doesNotificationSendCopyToChat(NotificationType notificationType) + { + return config.getBoolean("Feedback.ActionBarNotifications."+notificationType.toString()+".SendCopyOfMessageToChat", false); } /* diff --git a/src/main/java/com/gmail/nossr50/datatypes/interactions/NotificationType.java b/src/main/java/com/gmail/nossr50/datatypes/interactions/NotificationType.java index 5abf780fd..a635b6054 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/interactions/NotificationType.java +++ b/src/main/java/com/gmail/nossr50/datatypes/interactions/NotificationType.java @@ -5,6 +5,7 @@ package com.gmail.nossr50.datatypes.interactions; */ public enum NotificationType { XP_GAIN("ExperienceGain"), + HARDCORE_MODE("HardcoreMode"), NO_PERMISSION("NoPermission"), SUBSKILL_UNLOCKED("SubSkillUnlocked"), LEVEL_UP_MESSAGE("LevelUps"), diff --git a/src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerNotificationEvent.java b/src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerNotificationEvent.java index 1089be081..1cb182dcc 100644 --- a/src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerNotificationEvent.java +++ b/src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerNotificationEvent.java @@ -13,17 +13,25 @@ import org.bukkit.event.player.PlayerEvent; */ public class McMMOPlayerNotificationEvent extends PlayerEvent implements Cancellable { 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 static final HandlerList handlers = new HandlerList(); protected ChatMessageType chatMessageType; protected TextComponent notificationTextComponent; protected final NotificationType notificationType; - public McMMOPlayerNotificationEvent(Player who, NotificationType notificationType, TextComponent notificationTextComponent, ChatMessageType chatMessageType) { + public McMMOPlayerNotificationEvent(Player who, NotificationType notificationType, TextComponent notificationTextComponent, ChatMessageType chatMessageType, boolean isMessageAlsoBeingSentToChat) { super(who); this.notificationType = notificationType; this.notificationTextComponent = notificationTextComponent; this.chatMessageType = chatMessageType; + this.isMessageAlsoBeingSentToChat = isMessageAlsoBeingSentToChat; isCancelled = false; } @@ -31,6 +39,14 @@ public class McMMOPlayerNotificationEvent extends PlayerEvent implements Cancell * Getters & Setters */ + public boolean isMessageAlsoBeingSentToChat() { + return isMessageAlsoBeingSentToChat; + } + + public void setMessageAlsoBeingSentToChat(boolean messageAlsoBeingSentToChat) { + isMessageAlsoBeingSentToChat = messageAlsoBeingSentToChat; + } + public TextComponent getNotificationTextComponent() { return notificationTextComponent; } diff --git a/src/main/java/com/gmail/nossr50/util/HardcoreManager.java b/src/main/java/com/gmail/nossr50/util/HardcoreManager.java index 5992913e4..a932d0b9d 100644 --- a/src/main/java/com/gmail/nossr50/util/HardcoreManager.java +++ b/src/main/java/com/gmail/nossr50/util/HardcoreManager.java @@ -2,7 +2,10 @@ package com.gmail.nossr50.util; import java.util.HashMap; +import com.gmail.nossr50.config.AdvancedConfig; +import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; +import com.gmail.nossr50.util.player.NotificationManager; import org.bukkit.entity.Player; import com.gmail.nossr50.config.Config; @@ -52,7 +55,7 @@ public final class HardcoreManager { return; } - player.sendMessage(LocaleLoader.getString("Hardcore.DeathStatLoss.PlayerDeath", totalLevelsLost)); + NotificationManager.sendPlayerInformation(player, NotificationType.HARDCORE_MODE, "Hardcore.DeathStatLoss.PlayerDeath", String.valueOf(totalLevelsLost)); } public static void invokeVampirism(Player killer, Player victim) { diff --git a/src/main/java/com/gmail/nossr50/util/player/NotificationManager.java b/src/main/java/com/gmail/nossr50/util/player/NotificationManager.java index 2dab0e308..507ba991c 100644 --- a/src/main/java/com/gmail/nossr50/util/player/NotificationManager.java +++ b/src/main/java/com/gmail/nossr50/util/player/NotificationManager.java @@ -66,13 +66,25 @@ public class NotificationManager { if (customEvent.isCancelled()) return; - player.spigot().sendMessage(customEvent.getChatMessageType(), customEvent.getNotificationTextComponent()); + //If the message is being sent to the action bar we need to check if the copy if a copy is sent to the chat system + if(customEvent.getChatMessageType() == ChatMessageType.ACTION_BAR) + { + player.spigot().sendMessage(customEvent.getChatMessageType(), customEvent.getNotificationTextComponent()); + + if(customEvent.isMessageAlsoBeingSentToChat()) + { + //Send copy to chat system + player.spigot().sendMessage(ChatMessageType.SYSTEM, customEvent.getNotificationTextComponent()); + } + } else { + player.spigot().sendMessage(customEvent.getChatMessageType(), customEvent.getNotificationTextComponent()); + } } private static McMMOPlayerNotificationEvent checkNotificationEvent(Player player, NotificationType notificationType, ChatMessageType destination, TextComponent message) { //Init event McMMOPlayerNotificationEvent customEvent = new McMMOPlayerNotificationEvent(player, - notificationType, message, destination); + notificationType, message, destination, AdvancedConfig.getInstance().doesNotificationSendCopyToChat(notificationType)); //Call event Bukkit.getServer().getPluginManager().callEvent(customEvent); diff --git a/src/main/resources/advanced.yml b/src/main/resources/advanced.yml index 310b238a9..5bbd6a21f 100644 --- a/src/main/resources/advanced.yml +++ b/src/main/resources/advanced.yml @@ -14,23 +14,57 @@ # Settings for the Skills ### Feedback: - # Turning these to false will have them printed in chat instead + #The actionbar is the message location right above the health bar + ## If you disable the action bar messages, mcMMO will send the message to the chat system instead ActionBarNotifications: - AbilityOff: true - RequirementsNotMet: true - AbilityCoolDown: true - LevelUps: true - Holiday: true - ToolReady: true - SubSkillInteraction: true - SubSkillFailure: true - SubSkillUnlocked: true - SuperAbilityInteraction: true - SuperAbilityAlertOthers: true - ExperienceGain: true - ItemMessage: true - NoPermission: true - PartyMessage: true + AbilityOff: + Enabled: true + SendCopyOfMessageToChat: false + HardcoreMode: + Enabled: true + SendCopyOfMessageToChat: false + RequirementsNotMet: + Enabled: true + SendCopyOfMessageToChat: false + AbilityCoolDown: + Enabled: true + SendCopyOfMessageToChat: false + LevelUps: + Enabled: true + SendCopyOfMessageToChat: false + Holiday: + Enabled: true + SendCopyOfMessageToChat: true + ToolReady: + Enabled: true + SendCopyOfMessageToChat: false + SubSkillInteraction: + Enabled: true + SendCopyOfMessageToChat: false + SubSkillFailure: + Enabled: true + SendCopyOfMessageToChat: false + SubSkillUnlocked: + Enabled: true + SendCopyOfMessageToChat: true + SuperAbilityInteraction: + Enabled: true + SendCopyOfMessageToChat: false + SuperAbilityAlertOthers: + Enabled: true + SendCopyOfMessageToChat: false + ExperienceGain: + Enabled: true + SendCopyOfMessageToChat: false + ItemMessage: + Enabled: true + SendCopyOfMessageToChat: false + NoPermission: + Enabled: true + SendCopyOfMessageToChat: false + PartyMessage: + Enabled: true + SendCopyOfMessageToChat: true Skills: General: Ability: