瀏覽代碼

ActionBar messages can now have copies sent to chat

nossr50 6 年之前
父節點
當前提交
ed2c3975d8

+ 7 - 2
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);
     }
 
     /*

+ 1 - 0
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"),

+ 17 - 1
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;
     }

+ 4 - 1
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) {

+ 14 - 2
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);

+ 50 - 16
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: