ActionBar messages can now have copies sent to chat

This commit is contained in:
nossr50 2019-01-14 01:22:14 -08:00
parent ee04bebcd9
commit ed2c3975d8
6 changed files with 93 additions and 22 deletions

View File

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

View File

@ -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"),

View File

@ -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;
}

View File

@ -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) {

View File

@ -66,13 +66,25 @@ public class NotificationManager {
if (customEvent.isCancelled())
return;
//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);

View File

@ -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: