From 96c36c6187da9926c791786003206ad2acadef01 Mon Sep 17 00:00:00 2001 From: MiniDay <372403923@qq.com> Date: Tue, 13 Jun 2023 19:50:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(hamster-ball-bridge):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20SudoConsole=20=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hamster-ball-bridge/build.gradle | 2 +- .../bukkit/command/ServiceCommand.java | 2 + .../command/sub/SudoConsoleCommand.java | 79 +++++++++++++++++++ .../service/bungee/BallBridgePlugin.java | 2 + .../bungee/command/ServiceCommand.java | 36 +++++++++ .../bungee/command/SudoConsoleCommand.java | 42 ++++++++++ 6 files changed, 162 insertions(+), 1 deletion(-) create mode 100644 hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/sub/SudoConsoleCommand.java create mode 100644 hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/command/ServiceCommand.java create mode 100644 hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/command/SudoConsoleCommand.java diff --git a/hamster-ball-bridge/build.gradle b/hamster-ball-bridge/build.gradle index 5799e20..098eaa6 100644 --- a/hamster-ball-bridge/build.gradle +++ b/hamster-ball-bridge/build.gradle @@ -1,4 +1,4 @@ -version = '1.1.1' +version = '1.1.2' setArchivesBaseName("HamsterBall-Bridge") dependencies { diff --git a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/ServiceCommand.java b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/ServiceCommand.java index c1f3d86..630c11e 100644 --- a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/ServiceCommand.java +++ b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/ServiceCommand.java @@ -4,6 +4,7 @@ import cn.hamster3.mc.plugin.core.bukkit.command.ParentCommand; import cn.hamster3.service.bukkit.BallBridgePlugin; import cn.hamster3.service.bukkit.command.sub.PlayerInfoCommand; import cn.hamster3.service.bukkit.command.sub.ServerInfoCommand; +import cn.hamster3.service.bukkit.command.sub.SudoConsoleCommand; import org.bukkit.command.CommandSender; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; @@ -15,6 +16,7 @@ public class ServiceCommand extends ParentCommand { super("hamster-service"); addChildCommand(PlayerInfoCommand.INSTANCE); addChildCommand(ServerInfoCommand.INSTANCE); + addChildCommand(SudoConsoleCommand.INSTANCE); } @Override diff --git a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/sub/SudoConsoleCommand.java b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/sub/SudoConsoleCommand.java new file mode 100644 index 0000000..0ea1b97 --- /dev/null +++ b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/sub/SudoConsoleCommand.java @@ -0,0 +1,79 @@ +package cn.hamster3.service.bukkit.command.sub; + +import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand; +import cn.hamster3.service.bukkit.api.ServiceMessageAPI; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +public class SudoConsoleCommand extends ChildCommand { + public static final SudoConsoleCommand INSTANCE = new SudoConsoleCommand(); + + private SudoConsoleCommand() { + } + + @Override + public @NotNull String getName() { + return "command"; + } + + @Override + public @NotNull String getUsage() { + return "command [bukkit/proxy] [命令内容]"; + } + + @Override + public boolean hasPermission(@NotNull CommandSender sender) { + return sender.hasPermission("hamster.service.admin"); + } + + @Override + public @NotNull String getDescription() { + return "广播控制台执行命令"; + } + + @Override + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { + if (args.length < 2) { + sender.sendMessage("§c/service command [bukkit/proxy] [命令内容]"); + return true; + } + + String action; + switch (args[0].toLowerCase()) { + case "bukkit": { + action = "bukkitConsoleCommand"; + break; + } + case "proxy": { + action = "proxyConsoleCommand"; + break; + } + default: { + sender.sendMessage("§c/service command [bukkit/proxy] [命令内容]"); + return true; + } + } + StringBuilder builder = new StringBuilder(); + for (int i = 1; i < args.length; i++) { + builder.append(args[i]).append(" "); + } + ServiceMessageAPI.sendServiceMessage("HamsterService", action, builder.toString()); + sender.sendMessage("§c已广播命令执行信息."); + return true; + } + + @Nullable + @Override + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { + if (args.length == 1) { + return Arrays.asList("bukkit", "proxy"); + } + return Collections.emptyList(); + } +} diff --git a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/BallBridgePlugin.java b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/BallBridgePlugin.java index 91e0be5..476d10f 100644 --- a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/BallBridgePlugin.java +++ b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/BallBridgePlugin.java @@ -4,6 +4,7 @@ import cn.hamster3.mc.plugin.ball.common.api.BallAPI; import cn.hamster3.mc.plugin.ball.common.data.BallMessageInfo; import cn.hamster3.mc.plugin.ball.common.listener.BallListener; import cn.hamster3.service.bungee.api.ServiceInfoAPI; +import cn.hamster3.service.bungee.command.ServiceCommand; import cn.hamster3.service.bungee.event.MessageReceivedEvent; import cn.hamster3.service.bungee.event.MessageSentEvent; import cn.hamster3.service.bungee.event.ServiceConnectEvent; @@ -54,5 +55,6 @@ public class BallBridgePlugin extends Plugin { } }); ProxyServer.getInstance().getPluginManager().registerListener(this, ServiceMainListener.INSTANCE); + ProxyServer.getInstance().getPluginManager().registerCommand(this, ServiceCommand.INSTANCE); } } diff --git a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/command/ServiceCommand.java b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/command/ServiceCommand.java new file mode 100644 index 0000000..5b3fe44 --- /dev/null +++ b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/command/ServiceCommand.java @@ -0,0 +1,36 @@ +package cn.hamster3.service.bungee.command; + +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.plugin.Command; + +public class ServiceCommand extends Command { + public static final ServiceCommand INSTANCE = new ServiceCommand(); + + private ServiceCommand() { + super("service", "service.admin"); + } + + @Override + @SuppressWarnings("SpellCheckingInspection") + public void execute(CommandSender sender, String[] args) { + if (!sender.hasPermission("service.admin")) { + sender.sendMessage(new TextComponent("§c你没有权限执行这个命令!")); + return; + } + if (args.length < 1) { + sender.sendMessage(new TextComponent("§c/service command [bukkit/proxy] [命令内容]")); + return; + } + switch (args[0]) { + case "safemode": { + break; + } + case "command": { + SudoConsoleCommand.INSTANCE.onCommand(sender, args); + break; + } + } + + } +} diff --git a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/command/SudoConsoleCommand.java b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/command/SudoConsoleCommand.java new file mode 100644 index 0000000..c02887e --- /dev/null +++ b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bungee/command/SudoConsoleCommand.java @@ -0,0 +1,42 @@ +package cn.hamster3.service.bungee.command; + +import cn.hamster3.service.bungee.api.ServiceMessageAPI; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.chat.TextComponent; +import org.jetbrains.annotations.NotNull; + +public class SudoConsoleCommand { + public static final SudoConsoleCommand INSTANCE = new SudoConsoleCommand(); + + private SudoConsoleCommand() { + } + + public void onCommand(@NotNull CommandSender sender, @NotNull String[] args) { + if (args.length < 3) { + sender.sendMessage(new TextComponent("§c/service command [bukkit/proxy] [命令内容]")); + return; + } + + String action; + switch (args[1].toLowerCase()) { + case "bukkit": { + action = "bukkitConsoleCommand"; + break; + } + case "proxy": { + action = "proxyConsoleCommand"; + break; + } + default: { + sender.sendMessage(new TextComponent("§c/service command [bukkit/proxy] [命令内容]")); + return; + } + } + StringBuilder builder = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + builder.append(args[i]).append(" "); + } + ServiceMessageAPI.sendServiceMessage("HamsterService", action, builder.toString()); + sender.sendMessage(new TextComponent("§c已广播命令执行信息.")); + } +} \ No newline at end of file