mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-26 07:06:45 +01:00
move chat config options from config.yml -> chat.yml
This commit is contained in:
parent
4bac586253
commit
8856d2b071
@ -1,5 +1,13 @@
|
|||||||
Version 2.1.151
|
Version 2.1.151
|
||||||
Fixed a bug where players could chat to party chat without the party chat permission
|
Fixed a bug where players could use the party chat command without the party chat permission
|
||||||
|
Added new config 'chat.yml'
|
||||||
|
All chat settings that used to be in 'config.yml' are now in 'chat.yml'
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
The new config file lets you disable the chat system (you can disable all of it, or just party chat, and or just admin chat) without permission nodes.
|
||||||
|
If you disable the party/admin chat, then the party/admin chat command never gets registered and attempting to use the command will result in a whole lot of nothing.
|
||||||
|
I hate adding more config files using the old .yml system, but the config update is a ways out and this works for now.
|
||||||
|
Reminder that the look/feel of party/admin chat is now determined by locale entries
|
||||||
|
|
||||||
Version 2.1.150
|
Version 2.1.150
|
||||||
Fixed an ArrayIndexOutOfBounds exception when using /skillreset
|
Fixed an ArrayIndexOutOfBounds exception when using /skillreset
|
||||||
|
@ -4,6 +4,7 @@ import com.gmail.nossr50.chat.author.Author;
|
|||||||
import com.gmail.nossr50.chat.author.ConsoleAuthor;
|
import com.gmail.nossr50.chat.author.ConsoleAuthor;
|
||||||
import com.gmail.nossr50.chat.mailer.AdminChatMailer;
|
import com.gmail.nossr50.chat.mailer.AdminChatMailer;
|
||||||
import com.gmail.nossr50.chat.mailer.PartyChatMailer;
|
import com.gmail.nossr50.chat.mailer.PartyChatMailer;
|
||||||
|
import com.gmail.nossr50.config.ChatConfig;
|
||||||
import com.gmail.nossr50.datatypes.chat.ChatChannel;
|
import com.gmail.nossr50.datatypes.chat.ChatChannel;
|
||||||
import com.gmail.nossr50.datatypes.party.Party;
|
import com.gmail.nossr50.datatypes.party.Party;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
@ -25,12 +26,15 @@ public class ChatManager {
|
|||||||
private final @NotNull ConsoleAuthor consoleAuthor;
|
private final @NotNull ConsoleAuthor consoleAuthor;
|
||||||
private final @NotNull Audience consoleAudience;
|
private final @NotNull Audience consoleAudience;
|
||||||
|
|
||||||
|
private final boolean isChatEnabled;
|
||||||
|
|
||||||
public ChatManager(@NotNull mcMMO pluginRef) {
|
public ChatManager(@NotNull mcMMO pluginRef) {
|
||||||
adminChatMailer = new AdminChatMailer(pluginRef);
|
adminChatMailer = new AdminChatMailer(pluginRef);
|
||||||
partyChatMailer = new PartyChatMailer(pluginRef);
|
partyChatMailer = new PartyChatMailer(pluginRef);
|
||||||
|
|
||||||
this.consoleAuthor = new ConsoleAuthor(LocaleLoader.getString("Chat.Identity.Console"));
|
this.consoleAuthor = new ConsoleAuthor(LocaleLoader.getString("Chat.Identity.Console"));
|
||||||
this.consoleAudience = mcMMO.getAudiences().filter((cs) -> cs instanceof ConsoleCommandSender);
|
this.consoleAudience = mcMMO.getAudiences().filter((cs) -> cs instanceof ConsoleCommandSender);
|
||||||
|
this.isChatEnabled = ChatConfig.getInstance().isChatEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -179,5 +183,40 @@ public class ChatManager {
|
|||||||
public void sendConsoleMessage(@NotNull Author author, @NotNull TextComponent message) {
|
public void sendConsoleMessage(@NotNull Author author, @NotNull TextComponent message) {
|
||||||
consoleAudience.sendMessage(author, message);
|
consoleAudience.sendMessage(author, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether the mcMMO chat system which handles party and admin chat is enabled or disabled
|
||||||
|
* @return true if mcMMO chat processing (for party/admin chat) is enabled
|
||||||
|
*/
|
||||||
|
public boolean isChatEnabled() {
|
||||||
|
return isChatEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether or not a specific chat channel is enabled
|
||||||
|
* ChatChannels are enabled/disabled via user config
|
||||||
|
*
|
||||||
|
* If chat is disabled, this always returns false
|
||||||
|
* If NONE is passed as a {@link ChatChannel} it will return true
|
||||||
|
* @param chatChannel target chat channel
|
||||||
|
* @return true if the chat channel is enabled
|
||||||
|
*/
|
||||||
|
public boolean isChatChannelEnabled(@NotNull ChatChannel chatChannel) {
|
||||||
|
if(!isChatEnabled) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
switch(chatChannel) {
|
||||||
|
|
||||||
|
case ADMIN:
|
||||||
|
case PARTY:
|
||||||
|
case PARTY_OFFICER:
|
||||||
|
return ChatConfig.getInstance().isChatChannelEnabled(chatChannel);
|
||||||
|
case NONE:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.gmail.nossr50.chat.author;
|
package com.gmail.nossr50.chat.author;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.ChatConfig;
|
||||||
|
import com.gmail.nossr50.datatypes.chat.ChatChannel;
|
||||||
import com.google.common.base.Objects;
|
import com.google.common.base.Objects;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
@ -23,7 +24,7 @@ public class AdminAuthor implements Author {
|
|||||||
if(overrideName != null) {
|
if(overrideName != null) {
|
||||||
return overrideName;
|
return overrideName;
|
||||||
} else {
|
} else {
|
||||||
if(Config.getInstance().getAdminDisplayNames()) {
|
if(ChatConfig.getInstance().useDisplayNames(ChatChannel.ADMIN)) {
|
||||||
return player.getDisplayName();
|
return player.getDisplayName();
|
||||||
} else {
|
} else {
|
||||||
return player.getName();
|
return player.getName();
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.gmail.nossr50.chat.author;
|
package com.gmail.nossr50.chat.author;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.ChatConfig;
|
||||||
|
import com.gmail.nossr50.datatypes.chat.ChatChannel;
|
||||||
import com.google.common.base.Objects;
|
import com.google.common.base.Objects;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
@ -23,7 +24,7 @@ public class PartyAuthor implements Author {
|
|||||||
if(overrideName != null) {
|
if(overrideName != null) {
|
||||||
return overrideName;
|
return overrideName;
|
||||||
} else {
|
} else {
|
||||||
if(Config.getInstance().getPartyDisplayNames()) {
|
if(ChatConfig.getInstance().useDisplayNames(ChatChannel.PARTY)) {
|
||||||
return player.getDisplayName();
|
return player.getDisplayName();
|
||||||
} else {
|
} else {
|
||||||
return player.getName();
|
return player.getName();
|
||||||
|
@ -5,6 +5,8 @@ import co.aikar.commands.BukkitCommandManager;
|
|||||||
import co.aikar.commands.ConditionFailedException;
|
import co.aikar.commands.ConditionFailedException;
|
||||||
import com.gmail.nossr50.commands.chat.AdminChatCommand;
|
import com.gmail.nossr50.commands.chat.AdminChatCommand;
|
||||||
import com.gmail.nossr50.commands.chat.PartyChatCommand;
|
import com.gmail.nossr50.commands.chat.PartyChatCommand;
|
||||||
|
import com.gmail.nossr50.config.ChatConfig;
|
||||||
|
import com.gmail.nossr50.datatypes.chat.ChatChannel;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
@ -18,9 +20,9 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
* For now this class will only handle ACF converted commands, all other commands will be handled elsewhere
|
* For now this class will only handle ACF converted commands, all other commands will be handled elsewhere
|
||||||
*/
|
*/
|
||||||
public class CommandManager {
|
public class CommandManager {
|
||||||
public static final String ADMIN_CONDITION = "adminCondition";
|
public static final @NotNull String ADMIN_CONDITION = "adminCondition";
|
||||||
public static final String PARTY_CONDITION = "partyCondition";
|
public static final @NotNull String PARTY_CONDITION = "partyCondition";
|
||||||
public static final String MMO_DATA_LOADED = "mmoDataLoaded";
|
public static final @NotNull String MMO_DATA_LOADED = "mmoDataLoaded";
|
||||||
|
|
||||||
private final @NotNull mcMMO pluginRef;
|
private final @NotNull mcMMO pluginRef;
|
||||||
private final @NotNull BukkitCommandManager bukkitCommandManager;
|
private final @NotNull BukkitCommandManager bukkitCommandManager;
|
||||||
@ -34,9 +36,22 @@ public class CommandManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void registerCommands() {
|
private void registerCommands() {
|
||||||
|
registerChatCommands();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers chat commands if the chat system is enabled
|
||||||
|
*/
|
||||||
|
private void registerChatCommands() {
|
||||||
|
if(ChatConfig.getInstance().isChatEnabled()) {
|
||||||
|
if(ChatConfig.getInstance().isChatChannelEnabled(ChatChannel.ADMIN)) {
|
||||||
bukkitCommandManager.registerCommand(new AdminChatCommand(pluginRef));
|
bukkitCommandManager.registerCommand(new AdminChatCommand(pluginRef));
|
||||||
|
}
|
||||||
|
if(ChatConfig.getInstance().isChatChannelEnabled(ChatChannel.PARTY)) {
|
||||||
bukkitCommandManager.registerCommand(new PartyChatCommand(pluginRef));
|
bukkitCommandManager.registerCommand(new PartyChatCommand(pluginRef));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void registerConditions() {
|
public void registerConditions() {
|
||||||
// Method or Class based - Can only be used on methods
|
// Method or Class based - Can only be used on methods
|
||||||
|
51
src/main/java/com/gmail/nossr50/config/ChatConfig.java
Normal file
51
src/main/java/com/gmail/nossr50/config/ChatConfig.java
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
package com.gmail.nossr50.config;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.datatypes.chat.ChatChannel;
|
||||||
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class ChatConfig extends AutoUpdateConfigLoader {
|
||||||
|
private static ChatConfig instance;
|
||||||
|
|
||||||
|
private ChatConfig() {
|
||||||
|
super("chat.yml");
|
||||||
|
validate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ChatConfig getInstance() {
|
||||||
|
if (instance == null) {
|
||||||
|
instance = new ChatConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void loadKeys() {
|
||||||
|
//Sigh this old config system...
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean validateKeys() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isChatEnabled() {
|
||||||
|
return config.getBoolean("Chat.Enable", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isChatChannelEnabled(@NotNull ChatChannel chatChannel) {
|
||||||
|
String key = "Chat.Channels." + StringUtils.getCapitalized(chatChannel.toString()) + ".Enabled";
|
||||||
|
return config.getBoolean(key, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether or not to use display names for players in target {@link ChatChannel}
|
||||||
|
* @param chatChannel target chat channel
|
||||||
|
* @return true if display names should be used
|
||||||
|
*/
|
||||||
|
public boolean useDisplayNames(@NotNull ChatChannel chatChannel) {
|
||||||
|
String key = "Chat.Channels." + StringUtils.getCapitalized(chatChannel.toString()) + ".Use_Display_Names";
|
||||||
|
return config.getBoolean(key, true);
|
||||||
|
}
|
||||||
|
}
|
@ -259,13 +259,6 @@ public class Config extends AutoUpdateConfigLoader {
|
|||||||
public boolean getPreferBeta() { return config.getBoolean("General.Prefer_Beta", false); }
|
public boolean getPreferBeta() { return config.getBoolean("General.Prefer_Beta", false); }
|
||||||
public boolean getVerboseLoggingEnabled() { return config.getBoolean("General.Verbose_Logging", false); }
|
public boolean getVerboseLoggingEnabled() { return config.getBoolean("General.Verbose_Logging", false); }
|
||||||
|
|
||||||
public String getPartyChatPrefix() { return config.getString("Commands.partychat.Chat_Prefix_Format", "[[GREEN]]([[WHITE]]{0}[[GREEN]])"); }
|
|
||||||
public boolean getPartyChatColorLeaderName() { return config.getBoolean("Commands.partychat.Gold_Leader_Name", true); }
|
|
||||||
public boolean getPartyDisplayNames() { return config.getBoolean("Commands.partychat.Use_Display_Names", true); }
|
|
||||||
public String getPartyChatPrefixAlly() { return config.getString("Commands.partychat.Chat_Prefix_Format_Ally", "[[GREEN]](A)[[RESET]]"); }
|
|
||||||
|
|
||||||
public String getAdminChatPrefix() { return config.getString("Commands.adminchat.Chat_Prefix_Format", "[[AQUA]][[[WHITE]]{0}[[AQUA]]]"); }
|
|
||||||
public boolean getAdminDisplayNames() { return config.getBoolean("Commands.adminchat.Use_Display_Names", true); }
|
|
||||||
|
|
||||||
public boolean getMatchOfflinePlayers() { return config.getBoolean("Commands.Generic.Match_OfflinePlayers", false); }
|
public boolean getMatchOfflinePlayers() { return config.getBoolean("Commands.Generic.Match_OfflinePlayers", false); }
|
||||||
public long getDatabasePlayerCooldown() { return config.getLong("Commands.Database.Player_Cooldown", 1750); }
|
public long getDatabasePlayerCooldown() { return config.getLong("Commands.Database.Player_Cooldown", 1750); }
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
package com.gmail.nossr50.datatypes.party;
|
package com.gmail.nossr50.datatypes.party;
|
||||||
|
|
||||||
import com.gmail.nossr50.chat.SamePartyPredicate;
|
import com.gmail.nossr50.chat.SamePartyPredicate;
|
||||||
|
import com.gmail.nossr50.config.ChatConfig;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||||
|
import com.gmail.nossr50.datatypes.chat.ChatChannel;
|
||||||
import com.gmail.nossr50.datatypes.experience.FormulaType;
|
import com.gmail.nossr50.datatypes.experience.FormulaType;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
@ -403,7 +405,7 @@ public class Party {
|
|||||||
|
|
||||||
List<Player> nearbyPlayerList = getNearMembers(UserManager.getPlayer(player));
|
List<Player> nearbyPlayerList = getNearMembers(UserManager.getPlayer(player));
|
||||||
|
|
||||||
boolean useDisplayNames = Config.getInstance().getPartyDisplayNames();
|
boolean useDisplayNames = ChatConfig.getInstance().useDisplayNames(ChatChannel.PARTY);
|
||||||
|
|
||||||
if(isPartyLeaderOfflineOrHidden)
|
if(isPartyLeaderOfflineOrHidden)
|
||||||
{
|
{
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
package com.gmail.nossr50.runnables.party;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
|
||||||
import com.gmail.nossr50.datatypes.party.Party;
|
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
|
||||||
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
public class PartyChatTask extends BukkitRunnable {
|
|
||||||
private final Plugin plugin;
|
|
||||||
|
|
||||||
private final Party party;
|
|
||||||
private final String senderName;
|
|
||||||
private final String displayName;
|
|
||||||
private String message;
|
|
||||||
|
|
||||||
public PartyChatTask(Plugin plugin, Party party, String senderName, String displayName, String message) {
|
|
||||||
this.plugin = plugin;
|
|
||||||
|
|
||||||
this.party = party;
|
|
||||||
this.senderName = senderName;
|
|
||||||
this.displayName = displayName;
|
|
||||||
this.message = message;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (Config.getInstance().getPartyChatColorLeaderName() && senderName.equalsIgnoreCase(party.getLeader().getPlayerName())) {
|
|
||||||
message = message.replaceFirst(Pattern.quote(displayName), ChatColor.GOLD + Matcher.quoteReplacement(displayName) + ChatColor.RESET);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Player member : party.getOnlineMembers()) {
|
|
||||||
member.sendMessage(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (party.getAlly() != null) {
|
|
||||||
for (Player member : party.getAlly().getOnlineMembers()) {
|
|
||||||
String allyPrefix = LocaleLoader.formatString(Config.getInstance().getPartyChatPrefixAlly());
|
|
||||||
member.sendMessage(allyPrefix + message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
plugin.getServer().getConsoleSender().sendMessage(ChatColor.stripColor("[mcMMO] [P]<" + party.getName() + ">" + message));
|
|
||||||
}
|
|
||||||
}
|
|
20
src/main/resources/chat.yml
Normal file
20
src/main/resources/chat.yml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# Settings for the chat channels in mcMMO
|
||||||
|
Chat:
|
||||||
|
# Turn this off if you don't want mcMMO to process any chat (such as party chat or admin chat)
|
||||||
|
Enable: true
|
||||||
|
Channels:
|
||||||
|
Party:
|
||||||
|
# Enable or disable party chat
|
||||||
|
Enable: true
|
||||||
|
# Whether or not to use the current display name of a player
|
||||||
|
Use_Display_Names: true
|
||||||
|
Admin:
|
||||||
|
# Enable or disable party chat
|
||||||
|
Enable: true
|
||||||
|
# Whether or not to use the current display name of a player
|
||||||
|
Use_Display_Names: true
|
||||||
|
# CUSTOMIZATION INFORMATION
|
||||||
|
# If you want to customize the look and feel of chat channels, that is handled through localization which is customizeable.
|
||||||
|
# You can find information on how to handle that in the link below
|
||||||
|
# https://mcmmo.org/wiki/Locale
|
||||||
|
# When editing the locale for chat, do a search in the master text file (your local locale override file is empty at first, read the wiki article above) for "chat" and that should lead you right to the locale entries related to chat
|
@ -575,13 +575,6 @@ Commands:
|
|||||||
# If true, require players to have a mcmmo.commands.ptp.world.[WorldName] permission
|
# If true, require players to have a mcmmo.commands.ptp.world.[WorldName] permission
|
||||||
# to teleport to, from, or within any given world.
|
# to teleport to, from, or within any given world.
|
||||||
World_Based_Permissions: false
|
World_Based_Permissions: false
|
||||||
partychat:
|
|
||||||
Chat_Prefix_Format: '[[GREEN]]([[WHITE]]{0}[[GREEN]])'
|
|
||||||
Use_Display_Names: true
|
|
||||||
Chat_Prefix_Format_Ally: '[[GREEN]](A)[[RESET]]'
|
|
||||||
adminchat:
|
|
||||||
Chat_Prefix_Format: '[[AQUA]][[[WHITE]]{0}[[AQUA]]]'
|
|
||||||
Use_Display_Names: true
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Settings for particles
|
# Settings for particles
|
||||||
|
Loading…
Reference in New Issue
Block a user