diff --git a/multichat/dependency-reduced-pom.xml b/multichat/dependency-reduced-pom.xml
index 0652177d..daff753d 100644
--- a/multichat/dependency-reduced-pom.xml
+++ b/multichat/dependency-reduced-pom.xml
@@ -3,7 +3,7 @@
4.0.0
xyz.olivermartin.multichat
multichat
- 1.9-snapshot.20.5.1
+ 1.9.2
@@ -23,6 +23,10 @@
com.zaxxer.hikari
xyz.olivermartin.shadedlib.hikari
+
+ org.slf4j
+ xyz.olivermartin.shadedlib.slf4j
+
@@ -276,6 +280,18 @@
+
+ com.github.MyzelYam
+ PremiumVanishAPI
+ 2.0.2
+ provided
+
+
+ jsr305
+ com.google.code.findbugs
+
+
+
diff --git a/multichat/pom.xml b/multichat/pom.xml
index 6d60b031..42224962 100644
--- a/multichat/pom.xml
+++ b/multichat/pom.xml
@@ -5,7 +5,7 @@
xyz.olivermartin.multichat
multichat
- 1.9.1
+ 1.9.2
@@ -58,6 +58,10 @@
com.zaxxer.hikari
xyz.olivermartin.shadedlib.hikari
+
+ org.slf4j
+ xyz.olivermartin.shadedlib.slf4j
+
@@ -90,6 +94,12 @@
2.6.1
+
+ org.slf4j
+ slf4j-simple
+ 1.7.21
+
+
org.xerial
sqlite-jdbc
@@ -148,6 +158,13 @@
provided
+
+ com.github.MyzelYam
+ PremiumVanishAPI
+ 2.0.2
+ provided
+
+
\ No newline at end of file
diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java
index af47b0ed..39d83a30 100644
--- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java
+++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java
@@ -37,11 +37,12 @@
*/
public class MultiChat extends Plugin implements Listener {
- public static final String LATEST_VERSION = "1.9.1";
+ public static final String LATEST_VERSION = "1.9.2";
public static final String[] ALLOWED_VERSIONS = new String[] {
LATEST_VERSION,
+ "1.9.1",
"1.9",
"1.8.2",
"1.8.1",
@@ -92,6 +93,10 @@ public class MultiChat extends Plugin implements Listener {
private static MultiChat instance;
+ public static boolean premiumVanish = false;
+ public static boolean hideVanishedStaffInMsg = true;
+ public static boolean hideVanishedStaffInStaffList = true;
+
public static MultiChat getInstance() {
return instance;
}
@@ -132,9 +137,10 @@ public void run() {
if (ConfigManager.getInstance().getHandler("config.yml").getConfig().getBoolean("fetch_spigot_display_names") == true) {
- getProxy();
for (ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) {
- BungeeComm.sendMessage(player.getName(), player.getServer().getInfo());
+ if (player.getServer() != null) {
+ BungeeComm.sendMessage(player.getName(), player.getServer().getInfo());
+ }
}
}
@@ -170,7 +176,9 @@ public void run() {
if (ConfigManager.getInstance().getHandler("config.yml").getConfig().getBoolean("fetch_spigot_display_names") == true) {
ProxiedPlayer player = getProxy().getPlayer(playername);
- BungeeComm.sendMessage(player.getName(), player.getServer().getInfo());
+ if (player.getServer() != null) {
+ BungeeComm.sendMessage(player.getName(), player.getServer().getInfo());
+ }
}
} catch (NullPointerException ex) { /* EMPTY */ }
@@ -188,7 +196,9 @@ public void run() {
if (ConfigManager.getInstance().getHandler("config.yml").getConfig().getBoolean("fetch_spigot_display_names") == true) {
ProxiedPlayer player = getProxy().getPlayer(playername);
- BungeeComm.sendMessage(player.getName(), player.getServer().getInfo());
+ if (player.getServer() != null) {
+ BungeeComm.sendMessage(player.getName(), player.getServer().getInfo());
+ }
}
}
@@ -207,7 +217,9 @@ public void run() {
if (ConfigManager.getInstance().getHandler("config.yml").getConfig().getBoolean("fetch_spigot_display_names") == true) {
ProxiedPlayer player = getProxy().getPlayer(playername);
- BungeeComm.sendMessage(player.getName(), player.getServer().getInfo());
+ if (player.getServer() != null) {
+ BungeeComm.sendMessage(player.getName(), player.getServer().getInfo());
+ }
}
@@ -226,7 +238,9 @@ public void run() {
if (ConfigManager.getInstance().getHandler("config.yml").getConfig().getBoolean("fetch_spigot_display_names") == true) {
ProxiedPlayer player = getProxy().getPlayer(playername);
- BungeeComm.sendMessage(player.getName(), player.getServer().getInfo());
+ if (player.getServer() != null) {
+ BungeeComm.sendMessage(player.getName(), player.getServer().getInfo());
+ }
}
@@ -348,6 +362,17 @@ public void onEnable() {
// Fetch display names of all players
fetchDisplayNames();
+ // Manage premiumVanish dependency
+ if (ProxyServer.getInstance().getPluginManager().getPlugin("PremiumVanish") != null) {
+ premiumVanish = true;
+
+ if (configYML.contains("premium_vanish")) {
+ hideVanishedStaffInMsg = configYML.getBoolean("premium_vanish.prevent_message");
+ hideVanishedStaffInStaffList = configYML.getBoolean("premium_vanish.prevent_staff_list");
+ }
+
+ }
+
} else {
getLogger().info("Config incorrect version! Please repair or delete it!");
}
diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChatUtil.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChatUtil.java
index 133c30af..70348788 100644
--- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChatUtil.java
+++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChatUtil.java
@@ -18,7 +18,11 @@ public static String getMessageFromArgs(String[] args, int start, int end) {
String message = "";
for (String arg : args) {
if (counter >= start && counter <= end) {
- message = message + arg + " ";
+ if (counter != end) {
+ message = message + arg + " ";
+ } else {
+ message = message + arg;
+ }
}
counter++;
}
diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/DisplayCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/DisplayCommand.java
index bd7b6814..89e3f53b 100644
--- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/DisplayCommand.java
+++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/DisplayCommand.java
@@ -6,7 +6,9 @@
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Command;
+import net.md_5.bungee.config.Configuration;
import xyz.olivermartin.multichat.bungee.ChatControl;
+import xyz.olivermartin.multichat.bungee.ConfigManager;
import xyz.olivermartin.multichat.bungee.ConsoleManager;
import xyz.olivermartin.multichat.bungee.MessageManager;
import xyz.olivermartin.multichat.bungee.MultiChatUtil;
@@ -45,9 +47,15 @@ public void execute(CommandSender sender, String[] args) {
public static void displayMessage(String message) {
message = ChatControl.applyChatRules(message, "display_command", "").get();
+ Configuration config = ConfigManager.getInstance().getHandler("config.yml").getConfig();
for (ProxiedPlayer onlineplayer : ProxyServer.getInstance().getPlayers()) {
- onlineplayer.sendMessage(TextComponent.fromLegacyText(ChatColor.translateAlternateColorCodes('&', message)));
+ if (onlineplayer.getServer() != null) {
+ if (!config.getStringList("no_global").contains(
+ onlineplayer.getServer().getInfo().getName())) {
+ onlineplayer.sendMessage(TextComponent.fromLegacyText(ChatColor.translateAlternateColorCodes('&', message)));
+ }
+ }
}
// Trigger PostBroadcastEvent
diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MsgCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MsgCommand.java
index a5abc966..22fc963c 100644
--- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MsgCommand.java
+++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MsgCommand.java
@@ -4,6 +4,7 @@
import java.util.Optional;
import java.util.Set;
+import de.myzelyam.api.vanish.BungeeVanishAPI;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.connection.ProxiedPlayer;
@@ -15,6 +16,7 @@
import xyz.olivermartin.multichat.bungee.ConfigManager;
import xyz.olivermartin.multichat.bungee.Events;
import xyz.olivermartin.multichat.bungee.MessageManager;
+import xyz.olivermartin.multichat.bungee.MultiChat;
import xyz.olivermartin.multichat.bungee.MultiChatUtil;
import xyz.olivermartin.multichat.bungee.PrivateMessageManager;
@@ -54,24 +56,39 @@ public void execute(CommandSender sender, String[] args) {
if ((sender instanceof ProxiedPlayer)) {
- ProxiedPlayer player = (ProxiedPlayer)sender;
- toggleresult = Events.togglePM(player.getUniqueId(), target.getUniqueId());
+ boolean permittedToMessage = true;
- if (toggleresult == true) {
+ if (MultiChat.premiumVanish && MultiChat.hideVanishedStaffInMsg) {
+ if (BungeeVanishAPI.isInvisible(target) && !sender.hasPermission("multichat.chat.msg.vanished")) {
+ permittedToMessage = false;
+ }
+ }
+
+ if (permittedToMessage) {
+
+ ProxiedPlayer player = (ProxiedPlayer)sender;
+ toggleresult = Events.togglePM(player.getUniqueId(), target.getUniqueId());
- Configuration config = ConfigManager.getInstance().getHandler("config.yml").getConfig();
+ if (toggleresult == true) {
- if (config.contains("toggle_pm") ? config.getBoolean("toggle_pm") == false : false) {
+ Configuration config = ConfigManager.getInstance().getHandler("config.yml").getConfig();
- toggleresult = Events.togglePM(player.getUniqueId(), target.getUniqueId());
- MessageManager.sendMessage(sender, "command_msg_no_toggle");
+ if (config.contains("toggle_pm") ? config.getBoolean("toggle_pm") == false : false) {
+
+ toggleresult = Events.togglePM(player.getUniqueId(), target.getUniqueId());
+ MessageManager.sendMessage(sender, "command_msg_no_toggle");
+
+ } else {
+ MessageManager.sendSpecialMessage(sender, "command_msg_toggle_on", target.getName());
+ }
} else {
- MessageManager.sendSpecialMessage(sender, "command_msg_toggle_on", target.getName());
+ MessageManager.sendMessage(sender, "command_msg_toggle_off");
}
} else {
- MessageManager.sendMessage(sender, "command_msg_toggle_off");
+ // Vanished staff member
+ MessageManager.sendMessage(sender, "command_msg_not_online");
}
} else {
@@ -120,30 +137,45 @@ public void execute(CommandSender sender, String[] args) {
ProxiedPlayer target = ProxyServer.getInstance().getPlayer(args[0]);
- if (ConfigManager.getInstance().getHandler("config.yml").getConfig().getBoolean("fetch_spigot_display_names") == true) {
-
- BungeeComm.sendMessage(sender.getName(), ((ProxiedPlayer)sender).getServer().getInfo());
- BungeeComm.sendMessage(target.getName(), target.getServer().getInfo());
+ boolean permittedToMessage = true;
+ if (MultiChat.premiumVanish && MultiChat.hideVanishedStaffInMsg) {
+ if (BungeeVanishAPI.isInvisible(target) && !sender.hasPermission("multichat.chat.msg.vanished")) {
+ permittedToMessage = false;
+ }
}
- if (!ConfigManager.getInstance().getHandler("config.yml").getConfig().getStringList("no_pm").contains(((ProxiedPlayer)sender).getServer().getInfo().getName())) {
+ if (permittedToMessage) {
- if (!ConfigManager.getInstance().getHandler("config.yml").getConfig().getStringList("no_pm").contains(target.getServer().getInfo().getName())) {
+ if (ConfigManager.getInstance().getHandler("config.yml").getConfig().getBoolean("fetch_spigot_display_names") == true) {
- if (ChatControl.ignores(((ProxiedPlayer)sender).getUniqueId(), target.getUniqueId(), "private_messages")) {
- ChatControl.sendIgnoreNotifications(target, sender, "private_messages");
- return;
- }
+ BungeeComm.sendMessage(sender.getName(), ((ProxiedPlayer)sender).getServer().getInfo());
+ BungeeComm.sendMessage(target.getName(), target.getServer().getInfo());
+
+ }
+
+ if (!ConfigManager.getInstance().getHandler("config.yml").getConfig().getStringList("no_pm").contains(((ProxiedPlayer)sender).getServer().getInfo().getName())) {
+
+ if (!ConfigManager.getInstance().getHandler("config.yml").getConfig().getStringList("no_pm").contains(target.getServer().getInfo().getName())) {
+
+ if (ChatControl.ignores(((ProxiedPlayer)sender).getUniqueId(), target.getUniqueId(), "private_messages")) {
+ ChatControl.sendIgnoreNotifications(target, sender, "private_messages");
+ return;
+ }
- PrivateMessageManager.getInstance().sendMessage(message, (ProxiedPlayer)sender, target);
+ PrivateMessageManager.getInstance().sendMessage(message, (ProxiedPlayer)sender, target);
+
+ } else {
+ MessageManager.sendMessage(sender, "command_msg_disabled_target");
+ }
} else {
- MessageManager.sendMessage(sender, "command_msg_disabled_target");
+ MessageManager.sendMessage(sender, "command_msg_disabled_sender");
}
} else {
- MessageManager.sendMessage(sender, "command_msg_disabled_sender");
+ // Vanished staff member
+ MessageManager.sendMessage(sender, "command_msg_not_online");
}
} else if (args[0].equalsIgnoreCase("console")) {
@@ -214,9 +246,17 @@ public Iterable onTabComplete(CommandSender sender, String[] args) {
for ( ProxiedPlayer player : ProxyServer.getInstance().getPlayers() ) {
if ( player.getName().toLowerCase().startsWith( search ) ) {
+
if (!Events.hiddenStaff.contains(player.getUniqueId())) {
- matches.add( player.getName() );
+ if (MultiChat.premiumVanish) {
+ if (!BungeeVanishAPI.isInvisible(player)) {
+ matches.add(player.getName());
+ }
+ } else {
+ matches.add(player.getName());
+ }
}
+
}
}
diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/StaffListCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/StaffListCommand.java
index b0b972b9..c3fc2ea8 100644
--- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/StaffListCommand.java
+++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/StaffListCommand.java
@@ -2,6 +2,7 @@
import java.util.Iterator;
+import de.myzelyam.api.vanish.BungeeVanishAPI;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.connection.ProxiedPlayer;
@@ -9,6 +10,7 @@
import xyz.olivermartin.multichat.bungee.BungeeComm;
import xyz.olivermartin.multichat.bungee.ConfigManager;
import xyz.olivermartin.multichat.bungee.MessageManager;
+import xyz.olivermartin.multichat.bungee.MultiChat;
/**
* Staff List Command
@@ -38,27 +40,39 @@ public void execute(CommandSender sender, String[] args) {
server = (String)localIterator1.next();
if (!ProxyServer.getInstance().getServerInfo(server).getPlayers().isEmpty()) {
-
+
onServer = false;
for (ProxiedPlayer onlineplayer2 : ProxyServer.getInstance().getPlayers()) {
if ((onlineplayer2.hasPermission("multichat.staff"))) {
- if (onlineplayer2.getServer().getInfo().getName().equals(server)) {
+ boolean showInList = true;
- if (ConfigManager.getInstance().getHandler("config.yml").getConfig().getBoolean("fetch_spigot_display_names") == true) {
- BungeeComm.sendMessage(onlineplayer2.getName(), onlineplayer2.getServer().getInfo());
+ if (MultiChat.premiumVanish && MultiChat.hideVanishedStaffInStaffList) {
+ if (BungeeVanishAPI.isInvisible(onlineplayer2) && !sender.hasPermission("multichat.staff.list.vanished")) {
+ showInList = false;
}
+ }
+
+ if (showInList) {
+
+ if (onlineplayer2.getServer().getInfo().getName().equals(server)) {
+
+ if (ConfigManager.getInstance().getHandler("config.yml").getConfig().getBoolean("fetch_spigot_display_names") == true) {
+ BungeeComm.sendMessage(onlineplayer2.getName(), onlineplayer2.getServer().getInfo());
+ }
+
+ staff = true;
+
+ if (!onServer) {
+ MessageManager.sendSpecialMessage(sender, "command_stafflist_list_server", server);
+ onServer = true;
+ }
+
+ MessageManager.sendSpecialMessage(sender, "command_stafflist_list_item", onlineplayer2.getDisplayName());
- staff = true;
-
- if (!onServer) {
- MessageManager.sendSpecialMessage(sender, "command_stafflist_list_server", server);
- onServer = true;
}
-
- MessageManager.sendSpecialMessage(sender, "command_stafflist_list_item", onlineplayer2.getDisplayName());
}
}
@@ -66,8 +80,8 @@ public void execute(CommandSender sender, String[] args) {
}
}
-
+
if (!staff) MessageManager.sendMessage(sender, "command_stafflist_no_staff");
-
+
}
}
diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/local/common/commands/NickCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/local/common/commands/NickCommand.java
index 90eb2415..bdd6e8bc 100644
--- a/multichat/src/main/java/xyz/olivermartin/multichat/local/common/commands/NickCommand.java
+++ b/multichat/src/main/java/xyz/olivermartin/multichat/local/common/commands/NickCommand.java
@@ -55,9 +55,46 @@ private boolean checkPermissions(MultiChatLocalPlayer targetPlayer, MultiChatLoc
return false;
}
- if (lnm.containsFormatCodes(proposedNick) && !(sender.hasPermission("multichatlocal.nick.format"))) {
- sender.sendBadMessage("You do not have permission to use nicknames with format codes!");
- return false;
+ if (lnm.containsFormatCodes(proposedNick)) {
+
+ // If the nickname has ANY format codes...
+
+ if (!sender.hasPermission("multichatlocal.nick.format")) {
+
+ // If they don't have the permission for ALL format codes, then we will check individually...
+
+ if (lnm.containsBoldFormatCodes(proposedNick) && !(sender.hasPermission("multichatlocal.nick.format.bold"))) {
+ sender.sendBadMessage("You do not have permission to use nicknames with bold format codes!");
+ return false;
+ }
+
+ if (lnm.containsItalicFormatCodes(proposedNick) && !(sender.hasPermission("multichatlocal.nick.format.italic"))) {
+ sender.sendBadMessage("You do not have permission to use nicknames with italic format codes!");
+ return false;
+ }
+
+ if (lnm.containsUnderlineFormatCodes(proposedNick) && !(sender.hasPermission("multichatlocal.nick.format.underline"))) {
+ sender.sendBadMessage("You do not have permission to use nicknames with underline format codes!");
+ return false;
+ }
+
+ if (lnm.containsStrikethroughFormatCodes(proposedNick) && !(sender.hasPermission("multichatlocal.nick.format.strikethrough"))) {
+ sender.sendBadMessage("You do not have permission to use nicknames with strikethrough format codes!");
+ return false;
+ }
+
+ if (lnm.containsObfuscatedFormatCodes(proposedNick) && !(sender.hasPermission("multichatlocal.nick.format.obfuscated"))) {
+ sender.sendBadMessage("You do not have permission to use nicknames with obfuscated format codes!");
+ return false;
+ }
+
+ if (lnm.containsResetFormatCodes(proposedNick) && !(sender.hasPermission("multichatlocal.nick.format.reset"))) {
+ sender.sendBadMessage("You do not have permission to use nicknames with reset format codes!");
+ return false;
+ }
+
+ }
+
}
if (!simpleNickname.matcher(proposedNick).matches() && !(sender.hasPermission("multichatlocal.nick.special"))) {
diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/local/common/storage/LocalNameManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/local/common/storage/LocalNameManager.java
index 22b03b6a..c853f2f3 100644
--- a/multichat/src/main/java/xyz/olivermartin/multichat/local/common/storage/LocalNameManager.java
+++ b/multichat/src/main/java/xyz/olivermartin/multichat/local/common/storage/LocalNameManager.java
@@ -302,4 +302,106 @@ public boolean containsFormatCodes(String input) {
}
+ /**
+ * @param input
+ * @return True if the input contains bold format codes
+ */
+ public boolean containsBoldFormatCodes(String input) {
+
+ char COLOR_CHAR = '&';
+ Pattern STRIP_COLOR_PATTERN = Pattern.compile("(?i)" + String.valueOf(COLOR_CHAR) + "L");
+
+ if (input == null) {
+ return false;
+ }
+
+ return !STRIP_COLOR_PATTERN.matcher(input).replaceAll("").equals(input);
+
+ }
+
+ /**
+ * @param input
+ * @return True if the input contains italic format codes
+ */
+ public boolean containsItalicFormatCodes(String input) {
+
+ char COLOR_CHAR = '&';
+ Pattern STRIP_COLOR_PATTERN = Pattern.compile("(?i)" + String.valueOf(COLOR_CHAR) + "O");
+
+ if (input == null) {
+ return false;
+ }
+
+ return !STRIP_COLOR_PATTERN.matcher(input).replaceAll("").equals(input);
+
+ }
+
+ /**
+ * @param input
+ * @return True if the input contains underline format codes
+ */
+ public boolean containsUnderlineFormatCodes(String input) {
+
+ char COLOR_CHAR = '&';
+ Pattern STRIP_COLOR_PATTERN = Pattern.compile("(?i)" + String.valueOf(COLOR_CHAR) + "N");
+
+ if (input == null) {
+ return false;
+ }
+
+ return !STRIP_COLOR_PATTERN.matcher(input).replaceAll("").equals(input);
+
+ }
+
+ /**
+ * @param input
+ * @return True if the input contains strikethrough format codes
+ */
+ public boolean containsStrikethroughFormatCodes(String input) {
+
+ char COLOR_CHAR = '&';
+ Pattern STRIP_COLOR_PATTERN = Pattern.compile("(?i)" + String.valueOf(COLOR_CHAR) + "M");
+
+ if (input == null) {
+ return false;
+ }
+
+ return !STRIP_COLOR_PATTERN.matcher(input).replaceAll("").equals(input);
+
+ }
+
+ /**
+ * @param input
+ * @return True if the input contains obfuscated format codes
+ */
+ public boolean containsObfuscatedFormatCodes(String input) {
+
+ char COLOR_CHAR = '&';
+ Pattern STRIP_COLOR_PATTERN = Pattern.compile("(?i)" + String.valueOf(COLOR_CHAR) + "K");
+
+ if (input == null) {
+ return false;
+ }
+
+ return !STRIP_COLOR_PATTERN.matcher(input).replaceAll("").equals(input);
+
+ }
+
+ /**
+ * @param input
+ * @return True if the input contains reset format codes
+ */
+ public boolean containsResetFormatCodes(String input) {
+
+ char COLOR_CHAR = '&';
+ Pattern STRIP_COLOR_PATTERN = Pattern.compile("(?i)" + String.valueOf(COLOR_CHAR) + "R");
+
+ if (input == null) {
+ return false;
+ }
+
+ return !STRIP_COLOR_PATTERN.matcher(input).replaceAll("").equals(input);
+
+ }
+
}
diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/MultiChatLocalSpongePlugin.java b/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/MultiChatLocalSpongePlugin.java
index 3905ac43..1246fa60 100644
--- a/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/MultiChatLocalSpongePlugin.java
+++ b/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/MultiChatLocalSpongePlugin.java
@@ -56,7 +56,7 @@
import xyz.olivermartin.multichat.local.sponge.listeners.communication.LocalSpongePlayerChannelListener;
import xyz.olivermartin.multichat.local.sponge.listeners.communication.LocalSpongePlayerMetaListener;
-@Plugin(id = "multichat", name = "MultiChat", version = "1.9.1", dependencies = { @Dependency(id = "placeholderapi", optional = true) })
+@Plugin(id = "multichat", name = "MultiChat", version = "1.9.2", dependencies = { @Dependency(id = "placeholderapi", optional = true) })
public class MultiChatLocalSpongePlugin {
@Inject
diff --git a/multichat/src/main/resources/bungee.yml b/multichat/src/main/resources/bungee.yml
index 0881bb66..d8ec0553 100644
--- a/multichat/src/main/resources/bungee.yml
+++ b/multichat/src/main/resources/bungee.yml
@@ -1,5 +1,6 @@
name: MultiChat
main: xyz.olivermartin.multichat.bungee.MultiChat
-version: 1.9.1
+version: 1.9.2
author: Revilo410
-api-version: 1.15
\ No newline at end of file
+api-version: 1.15
+softdepends: [PremiumVanish]
\ No newline at end of file
diff --git a/multichat/src/main/resources/chatcontrol.yml b/multichat/src/main/resources/chatcontrol.yml
index eab30011..ab884b80 100644
--- a/multichat/src/main/resources/chatcontrol.yml
+++ b/multichat/src/main/resources/chatcontrol.yml
@@ -8,7 +8,7 @@
##################
# DON'T EDIT #
-version: "1.9.1" #
+version: "1.9.2" #
##################
# 1. Chat Control Rules
diff --git a/multichat/src/main/resources/chatcontrol_fr.yml b/multichat/src/main/resources/chatcontrol_fr.yml
index 9aebe17e..30647c3e 100644
--- a/multichat/src/main/resources/chatcontrol_fr.yml
+++ b/multichat/src/main/resources/chatcontrol_fr.yml
@@ -8,7 +8,7 @@
##################
# NE PAS EDITER #
-version: "1.9.1" #
+version: "1.9.2" #
##################
# French Translation by Nogapra - Thank you !
diff --git a/multichat/src/main/resources/config.yml b/multichat/src/main/resources/config.yml
index 821c46e6..7338a5c0 100644
--- a/multichat/src/main/resources/config.yml
+++ b/multichat/src/main/resources/config.yml
@@ -8,7 +8,7 @@
##################
# DON'T EDIT #
-version: "1.9.1" #
+version: "1.9.2" #
##################
# 1. General
@@ -265,3 +265,8 @@ privacy_settings:
log_pms: true
log_staffchat: true
log_groupchat: true
+
+# Settings for PremiumVanish
+premium_vanish:
+ prevent_message: true # Prevent players being able to /msg vanished staff
+ prevent_staff_list: true # Prevent vanished staff showing up in /staff
diff --git a/multichat/src/main/resources/config_fr.yml b/multichat/src/main/resources/config_fr.yml
index 173a3456..04f80bb1 100644
--- a/multichat/src/main/resources/config_fr.yml
+++ b/multichat/src/main/resources/config_fr.yml
@@ -8,7 +8,7 @@
##################
# NE PAS EDITER #
-version: "1.9.1" #
+version: "1.9.2" #
##################
# French Translation by Nogapra - Thank you !
@@ -270,3 +270,8 @@ privacy_settings:
log_pms: true
log_staffchat: true
log_groupchat: true
+
+# PremiumVanish
+premium_vanish:
+ prevent_message: true # Bloquer l'utilisation de la commande /msg
+ prevent_staff_list: true # Masquer de la liste /staff
diff --git a/multichat/src/main/resources/joinmessages.yml b/multichat/src/main/resources/joinmessages.yml
index 4ed88219..13483a18 100644
--- a/multichat/src/main/resources/joinmessages.yml
+++ b/multichat/src/main/resources/joinmessages.yml
@@ -8,7 +8,7 @@
##################
# DON'T EDIT #
-version: "1.9.1" #
+version: "1.9.2" #
##################
############################################################
diff --git a/multichat/src/main/resources/joinmessages_fr.yml b/multichat/src/main/resources/joinmessages_fr.yml
index d86ac5f3..d6f05a36 100644
--- a/multichat/src/main/resources/joinmessages_fr.yml
+++ b/multichat/src/main/resources/joinmessages_fr.yml
@@ -8,7 +8,7 @@
##################
# Ne pas éditer #
-version: "1.9.1" #
+version: "1.9.2" #
##################
# French Translation by Nogapra - Thank you!
diff --git a/multichat/src/main/resources/localconfig.yml b/multichat/src/main/resources/localconfig.yml
index 4f883305..04f4baf4 100644
--- a/multichat/src/main/resources/localconfig.yml
+++ b/multichat/src/main/resources/localconfig.yml
@@ -8,7 +8,7 @@
##################
# DON'T EDIT #
-version: "1.9.1" #
+version: "1.9.2" #
##################
# 1. Global Chat Settings
diff --git a/multichat/src/main/resources/localconfig_fr.yml b/multichat/src/main/resources/localconfig_fr.yml
index b08824fb..40670c36 100644
--- a/multichat/src/main/resources/localconfig_fr.yml
+++ b/multichat/src/main/resources/localconfig_fr.yml
@@ -8,7 +8,7 @@
##################
# NE PAS EDITER #
-version: "1.9.1" #
+version: "1.9.2" #
##################
# French Translation by Nogapra - Thank you !
diff --git a/multichat/src/main/resources/messages.yml b/multichat/src/main/resources/messages.yml
index 16ba2ab3..7b76a3f5 100644
--- a/multichat/src/main/resources/messages.yml
+++ b/multichat/src/main/resources/messages.yml
@@ -8,7 +8,7 @@
##################
# DON'T EDIT #
-version: "1.9.1" #
+version: "1.9.2" #
##################
############################################################
diff --git a/multichat/src/main/resources/messages_fr.yml b/multichat/src/main/resources/messages_fr.yml
index 319b12d9..754c947a 100644
--- a/multichat/src/main/resources/messages_fr.yml
+++ b/multichat/src/main/resources/messages_fr.yml
@@ -8,7 +8,7 @@
##################
# DON'T EDIT #
-version: "1.9.1" #
+version: "1.9.2" #
##################
# French Translation by Nogapra - Thank you!
diff --git a/multichat/src/main/resources/plugin.yml b/multichat/src/main/resources/plugin.yml
index 4d2f068c..80914ae5 100644
--- a/multichat/src/main/resources/plugin.yml
+++ b/multichat/src/main/resources/plugin.yml
@@ -1,5 +1,5 @@
name: MultiChat
-version: 1.9.1
+version: 1.9.2
author: Revilo410
main: xyz.olivermartin.multichat.local.spigot.MultiChatLocalSpigotPlugin
softdepend: [Vault,PlaceholderAPI]