diff --git a/api/pom.xml b/api/pom.xml
index 2eb8b2a..ce30257 100755
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -20,7 +20,7 @@
jar
-
+
org.spongepowered
configurate-yaml
3.7.1
diff --git a/api/src/main/java/com/alttd/chat/ChatImplementation.java b/api/src/main/java/com/alttd/chat/ChatImplementation.java
index 28a4c49..853c868 100755
--- a/api/src/main/java/com/alttd/chat/ChatImplementation.java
+++ b/api/src/main/java/com/alttd/chat/ChatImplementation.java
@@ -13,15 +13,15 @@ public class ChatImplementation implements ChatAPI{
private static ChatAPI instance;
private LuckPerms luckPerms;
- private DatabaseConnection databaseConnection; // todo this isn't needed can be removed
+ private DatabaseConnection databaseConnection;
public ChatImplementation() {
instance = this;
Config.init();
luckPerms = getLuckPerms();
- databaseConnection = getDataBase(); // todo fix sql
- Queries.createTables(); // todo fix sql
+ databaseConnection = getDataBase();
+ Queries.createTables();
ChatUserManager.initialize(); // loads all the users from the db and adds them.
RegexManager.initialize(); // load the filters and regexes from config
diff --git a/api/src/main/java/com/alttd/chat/config/Config.java b/api/src/main/java/com/alttd/chat/config/Config.java
index 2602258..017f5ea 100755
--- a/api/src/main/java/com/alttd/chat/config/Config.java
+++ b/api/src/main/java/com/alttd/chat/config/Config.java
@@ -202,7 +202,7 @@ public final class Config {
}
// TODO prefixes need hovers, this hasn't been setup yet!
- public static String CHATFORMAT = " : "; // @teri help with the default formatting?
+ public static String CHATFORMAT = " : ";
private static void Chat() {
CHATFORMAT = getString("chat.format", CHATFORMAT);
}
diff --git a/api/src/main/java/com/alttd/chat/database/DatabaseConnection.java b/api/src/main/java/com/alttd/chat/database/DatabaseConnection.java
index 7a4afcd..0a78079 100755
--- a/api/src/main/java/com/alttd/chat/database/DatabaseConnection.java
+++ b/api/src/main/java/com/alttd/chat/database/DatabaseConnection.java
@@ -45,8 +45,6 @@ public class DatabaseConnection {
e.printStackTrace();
}
- ALogger.info("jdbc:mysql://" + Config.IP + ":" + Config.PORT + "/" + Config.DATABASE + "?autoReconnect=true"+
- "&useSSL=false");
connection = DriverManager.getConnection(
"jdbc:mysql://" + Config.IP + ":" + Config.PORT + "/" + Config.DATABASE + "?autoReconnect=true"+
"&useSSL=false",
diff --git a/api/src/main/java/com/alttd/chat/objects/ChatUser.java b/api/src/main/java/com/alttd/chat/objects/ChatUser.java
index e4137a2..eda3b1a 100755
--- a/api/src/main/java/com/alttd/chat/objects/ChatUser.java
+++ b/api/src/main/java/com/alttd/chat/objects/ChatUser.java
@@ -2,6 +2,7 @@ package com.alttd.chat.objects;
import com.alttd.chat.database.Queries;
import com.alttd.chat.util.Utility;
+import net.kyori.adventure.text.Component;
import java.util.LinkedList;
import java.util.UUID;
@@ -10,10 +11,11 @@ public class ChatUser {
private final UUID uuid; // player uuid
private final int partyId; // the party they are in
private boolean toggledPartyChat; // should chat messages instantly go to party chat when added, idk if this should be saved
- private String displayName; // the nickname, doesn't need to be saved with the chatuser object, could be saved but we can get it from the nicknamesview
- private String prefix; // doesn't need saving, we get this from luckperms
- private String staffPrefix; // doesn't need saving, we get this from luckperms
- private String prefixAll; // doesn't need saving, we get this from luckperms
+ private String name; // the nickname, doesn't need to be saved with the chatuser object, could be saved but we can get it from the nicknamesview
+ private Component displayName; // the nickname, doesn't need to be saved with the chatuser object, could be saved but we can get it from the nicknamesview
+ private Component prefix; // doesn't need saving, we get this from luckperms
+ private Component staffPrefix; // doesn't need saving, we get this from luckperms
+ private Component prefixAll; // doesn't need saving, we get this from luckperms
private boolean toggleGc; // should be saved, this toggles if the player can see and use global chat
private String replyTarget; // reply target for use in /msg i don't mind setting this to null on login, feedback?
private long gcCooldown; // the time when they last used gc, is used for the cooldown, i wouldn't save this, but setting this to the login time means they can't use gc for 30 seconds after logging in
@@ -27,10 +29,11 @@ public class ChatUser {
this.partyId = partyId;
this.toggledPartyChat = toggledChat;
- displayName = Queries.getNickname(uuid); // todo fix sql
- if (displayName == null) {
- displayName = Utility.getDisplayName(uuid);
+ name = Queries.getNickname(uuid);
+ if (name == null) {
+ name = Utility.getDisplayName(uuid);
}
+ setDisplayName(name);
prefix = Utility.getPrefix(uuid, true);
staffPrefix = Utility.getStaffPrefix(uuid);
@@ -62,38 +65,26 @@ public class ChatUser {
Queries.setPartyChatState(toggledPartyChat, uuid); //TODO: Async pls - no CompleteableFuture<>!
}
- public String getDisplayName() {
+ public Component getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
- this.displayName = displayName;
+ this.displayName = Utility.applyColor(displayName);
}
- public String getPrefix() {
+ public Component getPrefix() {
return prefix;
}
- public void setPrefix(String prefix) {
- this.prefix = prefix;
- }
-
- public String getStaffPrefix() {
+ public Component getStaffPrefix() {
return staffPrefix;
}
- public void setStaffPrefix(String staffPrefix) {
- this.staffPrefix = staffPrefix;
- }
-
- public String getPrefixAll() {
+ public Component getPrefixAll() {
return prefixAll;
}
- public void setPrefixAll(String prefixAll) {
- this.prefixAll = prefixAll;
- }
-
public void toggleGc() {
toggleGc = !toggleGc;
}
diff --git a/api/src/main/java/com/alttd/chat/util/Utility.java b/api/src/main/java/com/alttd/chat/util/Utility.java
index 0696f7c..f955f39 100755
--- a/api/src/main/java/com/alttd/chat/util/Utility.java
+++ b/api/src/main/java/com/alttd/chat/util/Utility.java
@@ -2,21 +2,25 @@ package com.alttd.chat.util;
import com.alttd.chat.ChatAPI;
import com.alttd.chat.config.Config;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.format.TextColor;
+import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import net.luckperms.api.LuckPerms;
import net.luckperms.api.model.group.Group;
import net.luckperms.api.model.user.User;
-import java.util.Collection;
-import java.util.Comparator;
+import java.awt.*;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.UUID;
public class Utility {
+ public static String stringRegen = "\\{#[A-Fa-f0-9]{6}(<)?(>)?}";
public static HashMap colors;
static { // this might be in minimessage already?
- colors = new HashMap<>(); // todo map all colors to minimessage
+ colors = new HashMap<>();
colors.put("&0", ""); // and confirm these are correct
colors.put("&1", ""); // could also add some default hex colors here?
colors.put("&2", "");
@@ -33,7 +37,6 @@ public class Utility {
colors.put("&d", "");
colors.put("&e", "");
colors.put("&f", "");
- colors.put("&g", ""); // is this a thing?
}
public static String parseColors(String message) {
@@ -47,45 +50,123 @@ public class Utility {
return message;
}
- public static String getPrefix(UUID uuid, boolean highest) {
+ public static Component getPrefix(UUID uuid, boolean single) {
StringBuilder prefix = new StringBuilder();
LuckPerms luckPerms = ChatAPI.get().getLuckPerms();
User user = luckPerms.getUserManager().getUser(uuid);
- if(user == null) return "";
- if(!highest) {
- Collection inheritedGroups = user.getInheritedGroups(user.getQueryOptions());
- inheritedGroups.stream()
- .sorted(Comparator.comparingInt(o -> o.getWeight().orElse(0)))
- .forEach(group -> {
- if (Config.PREFIXGROUPS.contains(group.getName())) {
- prefix.append("[").append(group.getCachedData().getMetaData().getPrefix()).append("]");
- }
- });
+ if(user == null) return Component.empty();
+ if(single) {
+ Group group = luckPerms.getGroupManager().getGroup(user.getPrimaryGroup());
+ if(group != null)
+ prefix.append(group.getCachedData().getMetaData().getPrefix());
+// Collection inheritedGroups = user.getInheritedGroups(user.getQueryOptions());
+// inheritedGroups.stream()
+// .sorted(Comparator.comparingInt(o -> o.getWeight().orElse(0)))
+// .distinct()
+// .forEach(group -> {
+// if (Config.PREFIXGROUPS.contains(group.getName())) {
+// prefix.append("[").append(group.getCachedData().getMetaData().getPrefix()).append("]");
+// }
+// });
+ } else {
+ prefix.append(user.getCachedData().getMetaData().getPrefix());
}
- LegacyComponentSerializer.builder().character('&').hexColors();
- prefix.append("[").append(user.getCachedData().getMetaData().getPrefix()).append("]");
- return prefix.toString();
+ return LegacyComponentSerializer.builder().character('&').hexColors().build().deserialize(prefix.toString());
}
- // @teri you don't reference the plugin instance from the API instance, this creates a circular reference and breaks on compile and will never run
- public static String getStaffPrefix(UUID uuid) {
+ public static Component getStaffPrefix(UUID uuid) {
StringBuilder prefix = new StringBuilder();
LuckPerms luckPerms = ChatAPI.get().getLuckPerms();
User user = luckPerms.getUserManager().getUser(uuid);
- if(user == null) return prefix.toString();
+ if(user == null) return Component.empty();
if(user.getCachedData().getPermissionData().checkPermission("group." + Config.MINIMIUMSTAFFRANK).asBoolean()) {
- prefix.append("[").append(user.getCachedData().getMetaData().getPrefix()).append("]");
+ Group group = luckPerms.getGroupManager().getGroup(user.getPrimaryGroup());
+ if(group != null)
+ prefix.append(group.getCachedData().getMetaData().getPrefix());
}
- return prefix.toString();
+ return LegacyComponentSerializer.builder().character('&').hexColors().build().deserialize(prefix.toString());
}
public static String getDisplayName(UUID uuid) {
- StringBuilder prefix = new StringBuilder();
LuckPerms luckPerms = ChatAPI.get().getLuckPerms();
User user = luckPerms.getUserManager().getUser(uuid);
if(user == null) return "";
return user.getUsername();
}
+ public static Component applyColor(String message) {
+ String hexColor1 = "";
+ String hexColor2 = "";
+ StringBuilder stringBuilder = new StringBuilder();
+ message = parseColors(message);
+ boolean startsWithColor = false;
+ boolean lastColorMatters = false;
+
+ if (message.matches(".*" + stringRegen + ".*")) {
+ String[] split = message.split(stringRegen);
+
+ ArrayList list = new ArrayList<>();
+ int nextIndex = 0;
+ if (message.indexOf("}") <= 11) {
+ startsWithColor = true;
+ list.add(message.substring(0, message.indexOf("}") + 1));
+ }
+ for (String s : split) {
+ nextIndex += s.length();
+ int tmp = message.indexOf("}", nextIndex);
+ if (tmp < message.length() && tmp>=0) {
+ list.add(message.substring(nextIndex, tmp + 1));
+ nextIndex = tmp + 1;
+ }
+ }
+
+ int i;
+ boolean firstLoop = true;
+ if (startsWithColor) {
+ i = -1;
+ } else {
+ i = 0;
+ stringBuilder.append(split[i]);
+ }
+
+ for (String s : list) {
+ boolean lesser = s.contains("<");
+ boolean bigger = s.contains(">");
+
+ if (bigger && lesser) {
+ hexColor2 = s.substring(1, s.length() - 3);
+ } else if (bigger || lesser) {
+ hexColor2 = s.substring(1, s.length() - 2);
+ } else {
+ hexColor2 = s.substring(1, s.length() -1);
+ }
+
+ if (firstLoop) {
+ lastColorMatters = bigger;
+ hexColor1 = hexColor2;
+ firstLoop = false;
+ i++;
+ continue;
+ }
+
+ if (lesser && lastColorMatters) {
+ stringBuilder.append("").append(split[i]).append("");
+ } else {
+ stringBuilder.append("<").append(hexColor1).append(">").append(split[i]);
+ }
+
+ hexColor1 = hexColor2;
+ lastColorMatters = bigger;
+ i++;
+ }
+ if (split.length > i){
+ stringBuilder.append("<").append(hexColor1).append(">").append(split[i]);
+ }
+ }
+ MiniMessage miniMessage = MiniMessage.get();
+ return stringBuilder.length()==0 ? miniMessage.parse(message)
+ : miniMessage.parse(stringBuilder.toString());
+ }
+
}
diff --git a/galaxy/dependency-reduced-pom.xml b/galaxy/dependency-reduced-pom.xml
index 53935c4..a1b6e49 100644
--- a/galaxy/dependency-reduced-pom.xml
+++ b/galaxy/dependency-reduced-pom.xml
@@ -51,6 +51,12 @@
+
+
+ placeholderapi
+ https://repo.extendedclip.com/content/repositories/placeholderapi/
+
+
com.alttd
@@ -58,6 +64,18 @@
1.17-R0.1-SNAPSHOT
compile
+
+ org.slf4j
+ slf4j-api
+ 1.7.30
+ compile
+
+
+ me.clip
+ placeholderapi
+ 2.10.10
+ provided
+
11
diff --git a/galaxy/pom.xml b/galaxy/pom.xml
index f2974f3..98eaba2 100755
--- a/galaxy/pom.xml
+++ b/galaxy/pom.xml
@@ -67,7 +67,10 @@
-
+
+ placeholderapi
+ https://repo.extendedclip.com/content/repositories/placeholderapi/
+
@@ -77,7 +80,7 @@
${project.version}
compile
-
+
org.spongepowered
configurate-yaml
3.7.1
@@ -87,5 +90,16 @@
galaxy-api
1.17-R0.1-SNAPSHOT
+
+ org.slf4j
+ slf4j-api
+ 1.7.30
+
+
+ me.clip
+ placeholderapi
+ 2.10.10
+ provided
+
\ No newline at end of file
diff --git a/galaxy/src/main/java/com/alttd/chat/commands/Message.java b/galaxy/src/main/java/com/alttd/chat/commands/Message.java
index 36659ca..821cd56 100644
--- a/galaxy/src/main/java/com/alttd/chat/commands/Message.java
+++ b/galaxy/src/main/java/com/alttd/chat/commands/Message.java
@@ -22,5 +22,4 @@ public class Message implements CommandExecutor {
return false;
}
- // Teri, is Tabcompleter needed here? we already have spigot setup to complete playernames on tab, doesn't work for crossserver stuff and offline players
}
diff --git a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java
index b4cfb8b..5ade214 100755
--- a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java
+++ b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java
@@ -42,8 +42,6 @@ public class ChatHandler {
if(!player.hasPermission("chat.format")) {
message = miniMessage.stripTokens(message);
- } else {
- message = Utility.parseColors(message);
}
if(message.contains("[i]"))
@@ -71,16 +69,14 @@ public class ChatHandler {
return;
}
- Component senderName = player.displayName();
- String prefix = user.getPrefix();
+ Component senderName = user.getDisplayName();
+ Component prefix = user.getPrefix();
message = RegexManager.replaceText(message); // todo a better way for this
if(message == null) return; // the message was blocked
if(!player.hasPermission("chat.format")) {
message = miniMessage.stripTokens(message);
- } else {
- message = Utility.parseColors(message);
}
if(message.contains("[i]"))
diff --git a/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java b/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java
index 3afc65a..1db10b3 100755
--- a/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java
+++ b/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java
@@ -5,9 +5,9 @@ import com.alttd.chat.handler.ChatHandler;
import com.alttd.chat.managers.ChatUserManager;
import com.alttd.chat.managers.RegexManager;
import com.alttd.chat.objects.ChatUser;
-import com.alttd.chat.util.Utility;
import io.papermc.paper.chat.ChatRenderer;
import io.papermc.paper.event.player.AsyncChatEvent;
+import me.clip.placeholderapi.PlaceholderAPI;
import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
@@ -24,25 +24,12 @@ import java.util.List;
public class ChatListener implements Listener, ChatRenderer {
@EventHandler(ignoreCancelled = true)
- public void onPlayerChat(AsyncChatEvent event) { // this should also include a way to prevent a player from seeing chat
- // @teri what about mutes?
+ public void onPlayerChat(AsyncChatEvent event) {
Player player = event.getPlayer();
ChatUser user = ChatUserManager.getChatUser(player.getUniqueId());
- // tweak this to make this slightly better:/
event.viewers().removeIf(audience -> audience instanceof Player
&& user.getIgnoredPlayers().contains(((Player) audience).getUniqueId()));
-/* Set viewers = event.viewers();
- Set ignores = new HashSet<>();
- for(Audience audience : viewers) { // I don't like this setup, might alter this API to expose players...
- if(audience instanceof Player) { // the player option is removed in 1.17=/ bad paper devs
- UUID uuid = ((Player) audience).getUniqueId();
- if(user.getIgnoredPlayers().contains(uuid)) {
- ignores.add(audience);
- }
- }
- }
- event.viewers().removeAll(ignores);*/
Component input = event.message();
String message = PlainComponentSerializer.plain().serialize(input);
@@ -53,8 +40,6 @@ public class ChatListener implements Listener, ChatRenderer {
MiniMessage miniMessage = MiniMessage.get();
if(!player.hasPermission("chat.format")) {
message = miniMessage.stripTokens(message);
- } else {
- message = Utility.parseColors(message);
}
if(message.contains("[i]"))
diff --git a/galaxy/src/main/resources/plugin.yml b/galaxy/src/main/resources/plugin.yml
index b19ad49..94dacfa 100755
--- a/galaxy/src/main/resources/plugin.yml
+++ b/galaxy/src/main/resources/plugin.yml
@@ -3,7 +3,7 @@ version: ${project.version}
main: com.alttd.chat.ChatPlugin
api-version: 1.16
authors: [Destro, Teriuihi]
-depend: [LuckPerms]
+depend: [LuckPerms, PlaceholderAPI]
commands:
globalchat:
permission: command.globalchat
diff --git a/pom.xml b/pom.xml
index 45a1261..58cd1d8 100755
--- a/pom.xml
+++ b/pom.xml
@@ -71,12 +71,7 @@
Alttd-Nexus
- http://leo:8081/snapshots/
-
-
- dv8tion
- m2-dv8tion
- https://m2.dv8tion.net/releases
+ http://leo:8081/
diff --git a/velocity/src/main/java/com/alttd/chat/commands/GlobalAdminChat.java b/velocity/src/main/java/com/alttd/chat/commands/GlobalAdminChat.java
index 544cbbe..30b17bd 100755
--- a/velocity/src/main/java/com/alttd/chat/commands/GlobalAdminChat.java
+++ b/velocity/src/main/java/com/alttd/chat/commands/GlobalAdminChat.java
@@ -16,7 +16,7 @@ public class GlobalAdminChat {
public GlobalAdminChat(ProxyServer proxyServer) {
LiteralCommandNode command = LiteralArgumentBuilder
.literal("globaladminchat")
- .requires(ctx -> ctx.hasPermission("command.proxy.globaladminchat"))// TODO permission system? load permissions from config?
+ .requires(ctx -> ctx.hasPermission("command.proxy.globaladminchat"))
.then(RequiredArgumentBuilder
.argument("message", StringArgumentType.greedyString())
.executes(context -> {
diff --git a/velocity/src/main/java/com/alttd/chat/commands/Message.java b/velocity/src/main/java/com/alttd/chat/commands/Message.java
index 2f85c81..3c98c5b 100755
--- a/velocity/src/main/java/com/alttd/chat/commands/Message.java
+++ b/velocity/src/main/java/com/alttd/chat/commands/Message.java
@@ -24,7 +24,7 @@ public class Message {
/*public Message(ProxyServer proxyServer) {
LiteralCommandNode command = LiteralArgumentBuilder
.literal("message")
- .requires(ctx -> ctx.hasPermission("command.proxy.message"))// TODO permission system? load permissions from config?
+ .requires(ctx -> ctx.hasPermission("command.proxy.message"))
.then(RequiredArgumentBuilder
.argument("player", StringArgumentType.word())
.suggests((context, builder) -> {
diff --git a/velocity/src/main/java/com/alttd/chat/commands/SendMail.java b/velocity/src/main/java/com/alttd/chat/commands/SendMail.java
index 06e1e41..ba3ab4f 100755
--- a/velocity/src/main/java/com/alttd/chat/commands/SendMail.java
+++ b/velocity/src/main/java/com/alttd/chat/commands/SendMail.java
@@ -42,7 +42,7 @@ public class SendMail {
LiteralCommandNode command = LiteralArgumentBuilder
.literal("mail")
- .requires(ctx -> ctx.hasPermission("command.proxy.mail"))// TODO permission
+ .requires(ctx -> ctx.hasPermission("command.proxy.mail"))
.then(LiteralArgumentBuilder.literal("send")
.then(playerNode
.then(RequiredArgumentBuilder
diff --git a/velocity/src/main/java/com/alttd/chat/handlers/ChatHandler.java b/velocity/src/main/java/com/alttd/chat/handlers/ChatHandler.java
index 183b8a5..614b5f6 100755
--- a/velocity/src/main/java/com/alttd/chat/handlers/ChatHandler.java
+++ b/velocity/src/main/java/com/alttd/chat/handlers/ChatHandler.java
@@ -53,26 +53,24 @@ public class ChatHandler {
}
public void globalAdminChat(CommandSource commandSource, String message) {
- String senderName = Config.CONSOLENAME;
+ Component senderName = Component.text(Config.CONSOLENAME);
String serverName = "Altitude";
if (commandSource instanceof Player) {
Player sender = (Player) commandSource;
- senderName = sender.getUsername();
+ ChatUser user = ChatUserManager.getChatUser(sender.getUniqueId());
+ if(user == null) return;
+ senderName = user.getDisplayName();
serverName = sender.getCurrentServer().isPresent() ? sender.getCurrentServer().get().getServerInfo().getName() : "Altitude";
}
MiniMessage miniMessage = MiniMessage.get();
- message = Utility.parseColors(message);
+ List templates = new ArrayList<>(List.of(
+ Template.of("message", message),
+ Template.of("sender", senderName),
+ Template.of("server", serverName)));
- Map map = new HashMap<>();
-
- map.put("sender", senderName);
- //map.put("message", event.getMessage());
- map.put("message", Utility.parseColors(message));
- map.put("server", serverName);
-
- Component component = miniMessage.parse(Config.GACFORMAT, map);
+ Component component = miniMessage.parse(Config.GACFORMAT, templates);
VelocityChat.getPlugin().getProxy().getAllPlayers().stream().filter(target -> target.hasPermission("command.proxy.globaladminchat")/*TODO permission*/).forEach(target -> {
target.sendMessage(component);
diff --git a/velocity/src/main/java/com/alttd/chat/listeners/ChatListener.java b/velocity/src/main/java/com/alttd/chat/listeners/ChatListener.java
index d00e391..7dbf216 100755
--- a/velocity/src/main/java/com/alttd/chat/listeners/ChatListener.java
+++ b/velocity/src/main/java/com/alttd/chat/listeners/ChatListener.java
@@ -46,7 +46,7 @@ public class ChatListener {
map.put("sender", senderName);
//map.put("message", event.getMessage());
- map.put("message", Utility.parseColors(event.getMessage()));
+ map.put("message", event.getMessage());
map.put("server", serverName);
Component message = miniMessage.parse(Config.GACFORMAT, map);
@@ -56,10 +56,4 @@ public class ChatListener {
});
}
- @Subscribe(order = PostOrder.FIRST)
- public void onPlayerChat(PlayerChatEvent event) {
- // do stuff
- }
-
-
}