From 0d0c4a13e5d1b8c848e9c76d7ca721b24bc955fe Mon Sep 17 00:00:00 2001 From: len <40720638+destro174@users.noreply.github.com> Date: Mon, 24 May 2021 09:53:45 +0200 Subject: [PATCH] remove API module --- .../com/alttd/chat/ChatImplementation.java | 2 + .../java/com/alttd/chat/config/Config.java | 10 +- .../chat/database/DatabaseConnection.java | 12 +-- .../java/com/alttd/chat/database/Queries.java | 4 +- pom.xml | 2 +- .../java/com/alttd/chat/VelocityChat.java | 2 +- .../java/com/alttd/chat/commands/Message.java | 15 ++- .../com/alttd/chat/commands/SendMail.java | 98 ++++++++++++------- .../com/alttd/chat/handlers/ChatHandler.java | 20 +++- 9 files changed, 103 insertions(+), 62 deletions(-) diff --git a/api/src/main/java/com/alttd/chat/ChatImplementation.java b/api/src/main/java/com/alttd/chat/ChatImplementation.java index af4afe8..648c167 100644 --- a/api/src/main/java/com/alttd/chat/ChatImplementation.java +++ b/api/src/main/java/com/alttd/chat/ChatImplementation.java @@ -2,6 +2,7 @@ package com.alttd.chat; import com.alttd.chat.config.Config; import com.alttd.chat.database.DatabaseConnection; +import com.alttd.chat.database.Queries; import com.alttd.chat.managers.ChatUserManager; import com.alttd.chat.managers.RegexManager; import net.luckperms.api.LuckPerms; @@ -26,6 +27,7 @@ public class ChatImplementation implements ChatAPI{ luckPerms = getLuckPerms(); databaseConnection = getDataBase(); + Queries.createTables(); ChatUserManager.initialize(); // loads all the users from the db and adds them. RegexManager.initRegex(); // 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 873253d..a0030db 100644 --- a/api/src/main/java/com/alttd/chat/config/Config.java +++ b/api/src/main/java/com/alttd/chat/config/Config.java @@ -28,8 +28,10 @@ public final class Config { static int version; static boolean verbose; - public static void init() { // todo setup share for the config - CONFIG_FILE = new File(new File(System.getProperty("user.home")), "config.yml");; + public static void init(File path) { + CONFIG_FILE = new File(path, "config.yml");; +// public static void init() { // todo setup share for the config +// CONFIG_FILE = new File(new File(System.getProperty("user.home")+File.separator+"ChatPlugin"), "config.yml");; configLoader = YAMLConfigurationLoader.builder() .setFile(CONFIG_FILE) .setFlowStyle(DumperOptions.FlowStyle.BLOCK) @@ -181,7 +183,7 @@ public final class Config { MESSAGESENDER = getString("commands.message.sender-message", MESSAGESENDER); MESSAGERECIEVER = getString("commands.message.reciever-message", MESSAGERECIEVER); } - +///broadcast Momlly to Global: We Love Teri and Kappa public static String GCFORMAT = " >to Global: "; public static String GCPERMISSION = "proxy.globalchat"; public static List GCALIAS = new ArrayList<>(); @@ -195,7 +197,7 @@ public final class Config { } public static List GACECOMMANDALIASES = new ArrayList<>(); - public static String GACFORMAT = " >( on -> Team) "; + public static String GACFORMAT = "( on -> Team) "; private static void globalAdminChat() { GACECOMMANDALIASES = getList("commands.globaladminchat.aliases", Lists.newArrayList("acg")); GACFORMAT = getString("commands.globaladminchat.format", GACFORMAT); 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 9f7a2ea..5b274ee 100644 --- a/api/src/main/java/com/alttd/chat/database/DatabaseConnection.java +++ b/api/src/main/java/com/alttd/chat/database/DatabaseConnection.java @@ -11,19 +11,11 @@ public class DatabaseConnection { private static DatabaseConnection instance; private Connection connection; - private final String drivers, ip, port, database, username, password; /** * Sets information for the database and opens the connection. */ public DatabaseConnection() { - - this.drivers = Config.DRIVER; - this.ip = Config.IP; - this.port = Config.PORT; - this.database = Config.DATABASE; - this.username = Config.USERNAME; - this.password = Config.PASSWORD; instance = this; try { @@ -52,8 +44,8 @@ public class DatabaseConnection { e.printStackTrace(); } connection = DriverManager.getConnection( - "jdbc:" + drivers + "://" + ip + ":" + port + "/" + database + "?autoReconnect=true", username, - password); + "jdbc:" + Config.DRIVER + "://" + Config.IP + ":" + Config.PORT + "/" + Config.DATABASE + "?autoReconnect=true", + Config.USERNAME, Config.PASSWORD); } } 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 4bd5fc3..177bbe9 100644 --- a/api/src/main/java/com/alttd/chat/database/Queries.java +++ b/api/src/main/java/com/alttd/chat/database/Queries.java @@ -22,7 +22,7 @@ public class Queries { List tables = new ArrayList<>(); tables.add("CREATE TABLE IF NOT EXISTS ignored_users (`uuid` VARCHAR(36) NOT NULL, `ignored_uuid` VARCHAR(36) NOT NULL, PRIMARY KEY (`uuid`, `ignored_uuid`))"); tables.add("CREATE TABLE IF NOT EXISTS parties (`id` INT NOT NULL AUTO_INCREMENT, `owner_uuid` VARCHAR(36) NOT NULL, `party_name` VARCHAR(36) NOT NULL, `password` VARCHAR(36), PRIMARY KEY (`id`))"); - tables.add("CREATE TABLE IF NOT EXISTS chat_users (`uuid` VARCHAR(36) NOT NULL, `party_id` INT NOT NULL, `toggled_chat` BIT(1) DEFAULT b'0', `force_tp` BIT(1) DEFAULT b'1', `toggled_gc` BIT(1) DEFAULT b'0', PRIMARY KEY (`uuid`), FOREIGN KEY (party_id) REFERENCES parties(id) ON DELETE CASCADE)"); + tables.add("CREATE TABLE IF NOT EXISTS chat_users (`uuid` VARCHAR(36) NOT NULL, `party_id` INT NOT NULL, `toggled_chat` BIT(1) DEFAULT b'0', `force_tp` BIT(1) DEFAULT b'1', `toggled_gc` BIT(1) DEFAULT b'0', PRIMARY KEY (`uuid`))"); try { Connection connection = DatabaseConnection.getConnection(); @@ -249,8 +249,6 @@ public class Queries { //----------------------------------------- - //Chat Users - //@teri what's this? private static void getChatUsers(HashMap parties) { //TODO Get parties from cache somewhere String query = "SELECT * FROM chat_users"; diff --git a/pom.xml b/pom.xml index ec54292..e687da6 100644 --- a/pom.xml +++ b/pom.xml @@ -46,7 +46,7 @@ --> - api + velocity diff --git a/velocity/src/main/java/com/alttd/chat/VelocityChat.java b/velocity/src/main/java/com/alttd/chat/VelocityChat.java index 91cec92..44ecf03 100644 --- a/velocity/src/main/java/com/alttd/chat/VelocityChat.java +++ b/velocity/src/main/java/com/alttd/chat/VelocityChat.java @@ -52,7 +52,7 @@ public class VelocityChat { @Subscribe public void onProxyInitialization(ProxyInitializeEvent event) { new ALogger(logger); - chatAPI = new ChatImplementation(); + chatAPI = new ChatImplementation(getDataDirectory()); serverHandler = new ServerHandler(); chatHandler = new ChatHandler(); 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 3593ed2..4f9a637 100644 --- a/velocity/src/main/java/com/alttd/chat/commands/Message.java +++ b/velocity/src/main/java/com/alttd/chat/commands/Message.java @@ -6,6 +6,7 @@ import com.alttd.chat.config.Config; import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.builder.RequiredArgumentBuilder; +import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.tree.LiteralCommandNode; import com.velocitypowered.api.command.BrigadierCommand; import com.velocitypowered.api.command.CommandMeta; @@ -14,6 +15,8 @@ import com.velocitypowered.api.event.ResultedEvent; import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.ProxyServer; +import java.util.ArrayList; +import java.util.Collection; import java.util.Optional; public class Message { @@ -25,8 +28,16 @@ public class Message { .then(RequiredArgumentBuilder .argument("player", StringArgumentType.word()) .suggests((context, builder) -> { - for (Player player : proxyServer.getAllPlayers()) { - builder.suggest(player.getGameProfile().getName()); + Collection possibleValues = new ArrayList<>(); + for (Player player : proxyServer.getAllPlayers()) { // todo all chatplayers? this can be heavy + possibleValues.add(player.getGameProfile().getName()); + } + if(possibleValues.isEmpty()) return Suggestions.empty(); + String remaining = builder.getRemaining().toLowerCase(); + for (String str : possibleValues) { + if (str.toLowerCase().startsWith(remaining)) { + builder.suggest(str = StringArgumentType.escapeIfRequired(str)); + } } return builder.buildFuture(); }) 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 b3ca2d5..06e1e41 100644 --- a/velocity/src/main/java/com/alttd/chat/commands/SendMail.java +++ b/velocity/src/main/java/com/alttd/chat/commands/SendMail.java @@ -18,75 +18,93 @@ import java.util.Collection; public class SendMail { public SendMail(ProxyServer proxyServer) { + + RequiredArgumentBuilder playerNode = RequiredArgumentBuilder + .argument("player", StringArgumentType.string()) + .suggests((context, builder) -> { + Collection possibleValues = new ArrayList<>(); + for (Player player : proxyServer.getAllPlayers()) { + possibleValues.add(player.getGameProfile().getName()); + } + if(possibleValues.isEmpty()) return Suggestions.empty(); + String remaining = builder.getRemaining().toLowerCase(); + for (String str : possibleValues) { + if (str.toLowerCase().startsWith(remaining)) { + builder.suggest(str = StringArgumentType.escapeIfRequired(str)); + } + } + return builder.buildFuture(); + }) + .executes(context -> { + sendHelpMessage(context.getSource()); + return 1; + }); + LiteralCommandNode command = LiteralArgumentBuilder .literal("mail") - .requires(ctx -> ctx.hasPermission("command.proxy.mail"))// TODO permission system? load permissions from config? + .requires(ctx -> ctx.hasPermission("command.proxy.mail"))// TODO permission .then(LiteralArgumentBuilder.literal("send") - .then(RequiredArgumentBuilder - .argument("player", StringArgumentType.string()) - .suggests((context, builder) -> { - Collection possibleValues = new ArrayList<>(); - for (Player player : proxyServer.getAllPlayers()) { // todo all chatplayers? this can be heavy - possibleValues.add(player.getGameProfile().getName()); - } - if(possibleValues.isEmpty()) return Suggestions.empty(); - String remaining = builder.getRemaining().toLowerCase(); - for (String str : possibleValues) { - if (str.toLowerCase().startsWith(remaining)) { - builder.suggest(str = StringArgumentType.escapeIfRequired(str)); - } - } - return builder.buildFuture(); - }) + .then(playerNode .then(RequiredArgumentBuilder .argument("message", StringArgumentType.greedyString()) .executes(context -> { - // todo construct the mail and notify the player if online? - VelocityChat.getPlugin().getChatHandler().sendMail(); + VelocityChat.getPlugin().getChatHandler().sendMail(context.getSource(), context.getArgument("player", String.class), context.getArgument("message", String.class)); return 1; }) ) .executes(context -> { - + sendHelpMessage(context.getSource()); return 1; }) ) + .executes(context -> { + sendHelpMessage(context.getSource()); + return 1; + }) ) .then(LiteralArgumentBuilder.literal("list") - // TODO list read, unread, all? - .then(LiteralArgumentBuilder.literal("read") - .executes(context -> { - - return 1; - }) - ) + .requires(ctx -> ctx.hasPermission("command.proxy.list"))// TODO permission .then(LiteralArgumentBuilder.literal("unread") .executes(context -> { - + VelocityChat.getPlugin().getChatHandler().readMail(context.getSource(), true); return 1; }) ) .then(LiteralArgumentBuilder.literal("all") .executes(context -> { - + VelocityChat.getPlugin().getChatHandler().readMail(context.getSource(), false); + return 1; + }) + ) + .then(playerNode + .then(LiteralArgumentBuilder.literal("unread") + .executes(context -> { + VelocityChat.getPlugin().getChatHandler().readMail(context.getSource(), context.getArgument("player", String.class), true); + return 1; + }) + ) + .then(LiteralArgumentBuilder.literal("all") + .executes(context -> { + VelocityChat.getPlugin().getChatHandler().readMail(context.getSource(), context.getArgument("player", String.class), false); + return 1; + }) + ) + .executes(context -> { + sendHelpMessage(context.getSource()); return 1; }) ) - .executes(context -> { - - return 1; - }) ) .then(LiteralArgumentBuilder.literal("admin") - .requires(ctx -> ctx.hasPermission("command.proxy.mail.admin"))// TODO permission system? load permissions from config? + .requires(ctx -> ctx.hasPermission("command.proxy.mail.admin"))// TODO permission // TODO admin command, remove, edit? .executes(context -> { - + sendAdminHelpMessage(context.getSource()); return 1; }) ) .executes(context -> { - // todo mail help message + sendHelpMessage(context.getSource()); return 1; }) .build(); @@ -103,4 +121,12 @@ public class SendMail { proxyServer.getCommandManager().register(meta, brigadierCommand); } + + private void sendHelpMessage(CommandSource commandSource) { + + } + + private void sendAdminHelpMessage(CommandSource commandSource) { + + } } 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 7a3a698..bf74f9a 100644 --- a/velocity/src/main/java/com/alttd/chat/handlers/ChatHandler.java +++ b/velocity/src/main/java/com/alttd/chat/handlers/ChatHandler.java @@ -1,7 +1,6 @@ package com.alttd.chat.handlers; import com.alttd.chat.VelocityChat; -import com.alttd.chat.events.PrivateMessageEvent; import com.alttd.chat.config.Config; import com.alttd.chat.managers.ChatUserManager; import com.alttd.chat.managers.RegexManager; @@ -13,7 +12,10 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.Template; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; public class ChatHandler { @@ -93,8 +95,8 @@ public class ChatHandler { * constructs a mail object and notifies all involved players about it * / mail send playerA,playerB,playerC message */ - public void sendMail() { - + public void sendMail(CommandSource commandSource, String recipient, String message) { + // todo construct the mail and notify the player if online? } /** @@ -106,6 +108,14 @@ public class ChatHandler { return ""; } - public void sendMail(CommandSource source, String message, List targets) { + + public void readMail(CommandSource commandSource, String targetPlayer, boolean unread) { + } + + public void readMail(CommandSource commandSource, boolean unread) { + + } + + }