From fbbe0d6ef3c444387356d3b0e48ed092ae22dce5 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Tue, 15 Feb 2022 16:37:47 +0100 Subject: [PATCH] Maybe added proxydiscordlink and added report command --- velocity/build.gradle.kts | 1 + .../alttd/velocitychat/commands/Report.java | 75 +++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 velocity/src/main/java/com/alttd/velocitychat/commands/Report.java diff --git a/velocity/build.gradle.kts b/velocity/build.gradle.kts index d9ff64e..fc3be96 100644 --- a/velocity/build.gradle.kts +++ b/velocity/build.gradle.kts @@ -14,6 +14,7 @@ dependencies { exclude("net.kyori.examination") } compileOnly("com.gitlab.ruany:LiteBansAPI:0.3.5") + compileOnly("com.alttd.proxydiscordlink:ProxyDiscordLink:1.0.0-BETA-SNAPSHOT") } tasks { diff --git a/velocity/src/main/java/com/alttd/velocitychat/commands/Report.java b/velocity/src/main/java/com/alttd/velocitychat/commands/Report.java new file mode 100644 index 0000000..408bdde --- /dev/null +++ b/velocity/src/main/java/com/alttd/velocitychat/commands/Report.java @@ -0,0 +1,75 @@ +package com.alttd.velocitychat.commands; + +import com.alttd.chat.config.Config; +import com.alttd.velocitychat.VelocityChat; +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; +import com.velocitypowered.api.command.CommandSource; +import com.velocitypowered.api.proxy.Player; +import com.velocitypowered.api.proxy.ProxyServer; +import com.velocitypowered.api.proxy.ServerConnection; +import net.kyori.adventure.text.minimessage.MiniMessage; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Optional; + +public class Report { + + private static final MiniMessage miniMessage = MiniMessage.miniMessage(); + + public Report(ProxyServer proxyServer) { + LiteralCommandNode command = LiteralArgumentBuilder + .literal("report") + .requires(ctx -> ctx.hasPermission("command.chat.report")) + .then(RequiredArgumentBuilder.argument("username", 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(StringArgumentType.escapeIfRequired(str)); + } + } + return builder.buildFuture(); + }) + .then(RequiredArgumentBuilder + .argument("report", StringArgumentType.greedyString()) + .executes(context -> { + if (!(context.getSource() instanceof Player player)) { + context.getSource().sendMessage(miniMessage.deserialize(Config.NO_CONSOLE)); + return 1; + } + Optional optionalServerConnection = player.getCurrentServer(); + if (optionalServerConnection.isEmpty()) { + return 1; + } + ServerConnection serverConnection = optionalServerConnection.get(); + String serverName = serverConnection.getServer().getServerInfo().getName(); + //TODO send message to channel with that server name + return 1; + }) + ) + ) + .executes(context -> 0) + .build(); + + BrigadierCommand brigadierCommand = new BrigadierCommand(command); + + CommandMeta.Builder metaBuilder = proxyServer.getCommandManager().metaBuilder(brigadierCommand); + + CommandMeta meta = metaBuilder.build(); + + proxyServer.getCommandManager().register(meta, brigadierCommand); + } + +}