diff --git a/velocity/src/main/java/com/alttd/chat/config/ServerConfig.java b/api/src/main/java/com/alttd/chat/config/ServerConfig.java similarity index 93% rename from velocity/src/main/java/com/alttd/chat/config/ServerConfig.java rename to api/src/main/java/com/alttd/chat/config/ServerConfig.java index 9935bd2..cdc627d 100755 --- a/velocity/src/main/java/com/alttd/chat/config/ServerConfig.java +++ b/api/src/main/java/com/alttd/chat/config/ServerConfig.java @@ -68,8 +68,8 @@ public final class ServerConfig { /** DO NOT EDIT ANYTHING ABOVE **/ - public boolean GLOBALCHAT = true; // TODO - @teri idk what servers need to have this enabled - public boolean JOINLEAVEMSSAGES = true; // TODO set to false on lobby + public boolean GLOBALCHAT = true; + public boolean JOINLEAVEMSSAGES = true; private void ServerSettings() { GLOBALCHAT = getBoolean("global-chat-enabled", GLOBALCHAT); JOINLEAVEMSSAGES = getBoolean("joinleave-messages-enabled", JOINLEAVEMSSAGES); diff --git a/api/src/main/java/com/alttd/chat/database/Queries.java b/api/src/main/java/com/alttd/chat/database/Queries.java index efe04eb..b34a00c 100755 --- a/api/src/main/java/com/alttd/chat/database/Queries.java +++ b/api/src/main/java/com/alttd/chat/database/Queries.java @@ -340,7 +340,8 @@ public class Queries { statement.setString(1, user.getUuid().toString()); statement.setInt(2, user.getPartyId()); statement.setInt(3, user.toggledPartyChat() ? 1 : 0); - statement.setInt(5, user.isGcOn() ? 1 : 0); + statement.setInt(4, 0); +// statement.setInt(5, user.isGcOn() ? 1 : 0); statement.execute(); } catch (SQLException e) { @@ -423,10 +424,10 @@ public class Queries { statement.setString(1, user.getUuid().toString()); statement.setInt(2, user.getPartyId()); statement.setInt(3, user.toggledPartyChat() ? 1 : 0); - statement.setInt(4, user.isGcOn() ? 1 : 0); + statement.setInt(4, 0); statement.setInt(5, user.getPartyId()); statement.setInt(6, user.toggledPartyChat() ? 1 : 0); - statement.setInt(7, user.isGcOn() ? 1 : 0); + statement.setInt(7, 0); statement.execute(); } catch (SQLException e) { diff --git a/api/src/main/java/com/alttd/chat/managers/ChatUserManager.java b/api/src/main/java/com/alttd/chat/managers/ChatUserManager.java index d61661a..fac23a3 100755 --- a/api/src/main/java/com/alttd/chat/managers/ChatUserManager.java +++ b/api/src/main/java/com/alttd/chat/managers/ChatUserManager.java @@ -27,7 +27,7 @@ public final class ChatUserManager { public static ChatUser getChatUser(UUID uuid) { for(ChatUser user : chatUsers) { - if(uuid.compareTo(user.getUuid()) == 0) { + if(uuid.equals(user.getUuid())) { return user; } } 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 e66b4e8..748cc89 100755 --- a/api/src/main/java/com/alttd/chat/objects/ChatUser.java +++ b/api/src/main/java/com/alttd/chat/objects/ChatUser.java @@ -17,7 +17,7 @@ public class ChatUser { // 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 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 @@ -41,7 +41,7 @@ public class ChatUser { // // prefixAll = Utility.getPrefix(uuid, false); - this.toggleGc = toggleGc; + //this.toggleGc = toggleGc; replyTarget = null; gcCooldown = System.currentTimeMillis(); // players can't use gc for 30 seconds after logging in if we use this? mails = Queries.getMails(uuid); @@ -89,14 +89,6 @@ public class ChatUser { return Utility.getPrefix(uuid, false); } - public void toggleGc() { - toggleGc = !toggleGc; - } - - public boolean isGcOn() { - return toggleGc; - } - public String getReplyTarget() { return replyTarget; } 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 329be80..e63f9e8 100755 --- a/api/src/main/java/com/alttd/chat/util/Utility.java +++ b/api/src/main/java/com/alttd/chat/util/Utility.java @@ -10,13 +10,10 @@ import net.kyori.adventure.text.serializer.plain.PlainComponentSerializer; import net.luckperms.api.LuckPerms; import net.luckperms.api.model.group.Group; import net.luckperms.api.model.user.User; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; +import net.luckperms.api.node.Node; import java.awt.*; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.UUID; +import java.util.*; public class Utility { @@ -58,22 +55,17 @@ public class Utility { LuckPerms luckPerms = ChatAPI.get().getLuckPerms(); User user = luckPerms.getUserManager().getUser(uuid); 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()); + if(!single) { + 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(group.getCachedData().getMetaData().getPrefix()); + } + }); } + prefix.append(user.getCachedData().getMetaData().getPrefix()); return applyColor(prefix.toString()); } @@ -98,6 +90,21 @@ public class Utility { return user.getUsername(); } + public static void flipPermission(UUID uuid, String permission) { + ChatAPI.get().getLuckPerms().getUserManager().modifyUser(uuid, user -> { + // Add the permission + user.data().add(Node.builder(permission) + .value(user.getCachedData().getPermissionData().checkPermission(permission).asBoolean()).build()); + }); + } + + public static boolean hasPermission(UUID uuid, String permission) { + LuckPerms luckPerms = ChatAPI.get().getLuckPerms(); + User user = luckPerms.getUserManager().getUser(uuid); + if(user == null) return false; + return user.getCachedData().getPermissionData().checkPermission(permission).asBoolean(); + } + public static Component applyColor(String message) { String hexColor1 = ""; String hexColor2 = ""; @@ -172,23 +179,4 @@ public class Utility { : miniMessage.parse(stringBuilder.toString()); } - - public static void sendBlockedNotification(String prefix, Player player, String input, String target) { - MiniMessage miniMessage = MiniMessage.get(); - Bukkit.getOnlinePlayers().forEach(a ->{ - Component blockedNotification = miniMessage.parse("[" + prefix + "] " - + getDisplayName(player.getUniqueId()) - + (target.isEmpty() ? " tried to say: " : " -> " + target + ": ") - + input + ""); - if (a.hasPermission("chat.alert-blocked")) { - a.sendMessage(blockedNotification);//TODO make configurable (along with all the messages) - } - }); - player.sendMessage(miniMessage.parse("The language you used in your message is not allowed, " + - "this constitutes as your only warning. Any further attempts at bypassing the filter will result in staff intervention.")); - } - - public static void sendBlockedNotification(String prefix, Player player, Component input, String target) { - sendBlockedNotification(prefix, player, PlainComponentSerializer.plain().serialize(input), target); - } } diff --git a/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java b/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java index 56325ec..af8edc7 100755 --- a/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java +++ b/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java @@ -2,12 +2,14 @@ package com.alttd.chat; import com.alttd.chat.commands.*; import com.alttd.chat.config.Config; +import com.alttd.chat.config.ServerConfig; import com.alttd.chat.database.DatabaseConnection; import com.alttd.chat.handler.ChatHandler; import com.alttd.chat.listeners.ChatListener; import com.alttd.chat.listeners.PlayerListener; import com.alttd.chat.listeners.PluginMessage; import com.alttd.chat.util.ALogger; +import org.bukkit.Bukkit; import org.bukkit.command.CommandExecutor; import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; @@ -20,6 +22,7 @@ public class ChatPlugin extends JavaPlugin { private ChatHandler chatHandler; private String messageChannel; + private ServerConfig serverConfig; @Override public void onEnable() { @@ -28,9 +31,12 @@ public class ChatPlugin extends JavaPlugin { chatAPI = new ChatImplementation(); chatHandler = new ChatHandler(); DatabaseConnection.initialize(); + serverConfig = new ServerConfig(Bukkit.getServerName()); registerListener(new PlayerListener(), new ChatListener()); - registerCommand("globalchat", new GlobalChat()); - registerCommand("toggleglobalchat", new ToggleGlobalChat()); + if(serverConfig.GLOBALCHAT) { + registerCommand("globalchat", new GlobalChat()); + registerCommand("toggleglobalchat", new ToggleGlobalChat()); + } registerCommand("message", new Message()); registerCommand("reply", new Reply()); registerCommand("ignore", new Ignore()); @@ -67,4 +73,8 @@ public class ChatPlugin extends JavaPlugin { public ChatHandler getChatHandler() { return chatHandler; } + + public boolean serverGlobalChatEnabled() { + return serverConfig.GLOBALCHAT; + } } diff --git a/galaxy/src/main/java/com/alttd/chat/commands/ToggleGlobalChat.java b/galaxy/src/main/java/com/alttd/chat/commands/ToggleGlobalChat.java index 1af75f7..6048fdf 100755 --- a/galaxy/src/main/java/com/alttd/chat/commands/ToggleGlobalChat.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/ToggleGlobalChat.java @@ -1,9 +1,12 @@ package com.alttd.chat.commands; import com.alttd.chat.ChatPlugin; +import com.alttd.chat.config.Config; import com.alttd.chat.database.Queries; import com.alttd.chat.managers.ChatUserManager; import com.alttd.chat.objects.ChatUser; +import com.alttd.chat.util.Utility; +import jdk.jshell.execution.Util; import net.kyori.adventure.text.minimessage.MiniMessage; import org.apache.commons.lang.StringUtils; import org.bukkit.command.Command; @@ -13,6 +16,7 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import java.util.Objects; +import java.util.UUID; public class ToggleGlobalChat implements CommandExecutor { @@ -24,10 +28,12 @@ public class ToggleGlobalChat implements CommandExecutor { new BukkitRunnable() { @Override public void run() { - ChatUser chatUser = ChatUserManager.getChatUser(((Player) sender).getUniqueId()); - chatUser.toggleGc(); - Queries.setGlobalChatState(chatUser.isGcOn(), chatUser.getUuid()); - sender.sendMessage(MiniMessage.get().parse("You have turned globalchat " + (chatUser.isGcOn() ? "on." : "off."))); // TODO load from config and minimessage + UUID uuid = ((Player) sender).getUniqueId(); + ChatUser chatUser = ChatUserManager.getChatUser(uuid); + //chatUser.toggleGc(); + Utility.flipPermission(uuid, Config.GCPERMISSION); + //Queries.setGlobalChatState(chatUser.isGcOn(), chatUser.getUuid()); + sender.sendMessage(MiniMessage.get().parse("You have turned globalchat " + (Utility.hasPermission(uuid, Config.GCPERMISSION) ? "on." : "off."))); // TODO load from config and minimessage } }.runTaskAsynchronously(ChatPlugin.getInstance()); return false; 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 fc4c3f5..12bdc45 100755 --- a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java +++ b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java @@ -6,6 +6,7 @@ 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 com.alttd.chat.util.Utils; import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; import net.kyori.adventure.text.Component; @@ -40,7 +41,7 @@ public class ChatHandler { user.setReplyTarget(target); String updatedMessage = RegexManager.replaceText(message); // todo a better way for this if(updatedMessage == null) { - Utility.sendBlockedNotification("DM Language", player, message, target); + Utils.sendBlockedNotification("DM Language", player, message, target); return; // the message was blocked } @@ -53,22 +54,29 @@ public class ChatHandler { List