feat(hamster-ball-bridge): 添加 SudoConsole 指令

This commit is contained in:
2023-06-13 19:50:24 +08:00
parent 7dd89a9537
commit 96c36c6187
6 changed files with 162 additions and 1 deletions

View File

@@ -1,4 +1,4 @@
version = '1.1.1' version = '1.1.2'
setArchivesBaseName("HamsterBall-Bridge") setArchivesBaseName("HamsterBall-Bridge")
dependencies { dependencies {

View File

@@ -4,6 +4,7 @@ import cn.hamster3.mc.plugin.core.bukkit.command.ParentCommand;
import cn.hamster3.service.bukkit.BallBridgePlugin; import cn.hamster3.service.bukkit.BallBridgePlugin;
import cn.hamster3.service.bukkit.command.sub.PlayerInfoCommand; import cn.hamster3.service.bukkit.command.sub.PlayerInfoCommand;
import cn.hamster3.service.bukkit.command.sub.ServerInfoCommand; import cn.hamster3.service.bukkit.command.sub.ServerInfoCommand;
import cn.hamster3.service.bukkit.command.sub.SudoConsoleCommand;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -15,6 +16,7 @@ public class ServiceCommand extends ParentCommand {
super("hamster-service"); super("hamster-service");
addChildCommand(PlayerInfoCommand.INSTANCE); addChildCommand(PlayerInfoCommand.INSTANCE);
addChildCommand(ServerInfoCommand.INSTANCE); addChildCommand(ServerInfoCommand.INSTANCE);
addChildCommand(SudoConsoleCommand.INSTANCE);
} }
@Override @Override

View File

@@ -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<String> 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();
}
}

View File

@@ -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.data.BallMessageInfo;
import cn.hamster3.mc.plugin.ball.common.listener.BallListener; import cn.hamster3.mc.plugin.ball.common.listener.BallListener;
import cn.hamster3.service.bungee.api.ServiceInfoAPI; 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.MessageReceivedEvent;
import cn.hamster3.service.bungee.event.MessageSentEvent; import cn.hamster3.service.bungee.event.MessageSentEvent;
import cn.hamster3.service.bungee.event.ServiceConnectEvent; 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().registerListener(this, ServiceMainListener.INSTANCE);
ProxyServer.getInstance().getPluginManager().registerCommand(this, ServiceCommand.INSTANCE);
} }
} }

View File

@@ -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;
}
}
}
}

View File

@@ -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已广播命令执行信息."));
}
}