From 325c89203950fc5e160007d10c863015dda21443 Mon Sep 17 00:00:00 2001 From: MiniDay <372403923@qq.com> Date: Mon, 6 Feb 2023 22:13:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(hamster-ball-bridge):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E7=8E=A9=E5=AE=B6=E4=BF=A1=E6=81=AF=E5=92=8C?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=E4=BF=A1=E6=81=AF=E7=9A=84=E6=8C=87?= =?UTF-8?q?=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 5 +- hamster-ball-bridge/build.gradle | 11 ++- .../service/bukkit/BallBridgePlugin.java | 2 + .../bukkit/command/ServiceCommand.java | 29 ++++++++ .../bukkit/command/sub/PlayerInfoCommand.java | 71 +++++++++++++++++++ .../bukkit/command/sub/ServerInfoCommand.java | 69 ++++++++++++++++++ .../src/main/resources/plugin.yml | 8 +++ 7 files changed, 191 insertions(+), 4 deletions(-) create mode 100644 hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/ServiceCommand.java create mode 100644 hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/sub/PlayerInfoCommand.java create mode 100644 hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/sub/ServerInfoCommand.java diff --git a/build.gradle b/build.gradle index 8b9bfb1..4cc91db 100644 --- a/build.gradle +++ b/build.gradle @@ -31,11 +31,11 @@ subprojects { compileOnly 'org.jetbrains:annotations:23.0.0' } - tasks.withType(JavaCompile) { + tasks.withType(JavaCompile).configureEach { options.setEncoding("UTF-8") } - tasks.withType(Jar) { + tasks.withType(Jar).configureEach { from([rootProject.file("LICENSE")]) duplicatesStrategy(DuplicatesStrategy.EXCLUDE) } @@ -46,6 +46,7 @@ subprojects { // withJavadocJar() withSourcesJar() } + jar { destinationDir(rootProject.buildDir) } diff --git a/hamster-ball-bridge/build.gradle b/hamster-ball-bridge/build.gradle index 87c0402..eb7df6b 100644 --- a/hamster-ball-bridge/build.gradle +++ b/hamster-ball-bridge/build.gradle @@ -1,4 +1,4 @@ -version = '1.0.1' +version = '1.1.0' setArchivesBaseName("HamsterBall-Bridge") dependencies { @@ -6,7 +6,7 @@ dependencies { compileOnly 'net.md-5:bungeecord-api:1.19-R0.1-SNAPSHOT' compileOnly "cn.hamster3.mc.plugin.ball:common:${hamster_ball_version}" - compileOnly "cn.hamster3.mc.plugin.core:common:${hamster_core_version}" + compileOnly "cn.hamster3.mc.plugin.core:bukkit:${hamster_core_version}" compileOnly "me.clip:placeholderapi:${placeholder_api_version}" } @@ -18,3 +18,10 @@ processResources { } duplicatesStrategy(DuplicatesStrategy.EXCLUDE) } + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +// withJavadocJar() + withSourcesJar() +} diff --git a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/BallBridgePlugin.java b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/BallBridgePlugin.java index 33ba8d7..252f0d7 100644 --- a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/BallBridgePlugin.java +++ b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/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.bukkit.api.ServiceInfoAPI; +import cn.hamster3.service.bukkit.command.ServiceCommand; import cn.hamster3.service.bukkit.event.MessageReceivedEvent; import cn.hamster3.service.bukkit.event.MessageSentEvent; import cn.hamster3.service.bukkit.event.ServiceConnectEvent; @@ -58,6 +59,7 @@ public class BallBridgePlugin extends JavaPlugin { ))); } }); + ServiceCommand.INSTANCE.hook(); Bukkit.getPluginManager().registerEvents(ServiceMainListener.INSTANCE, this); Bukkit.getScheduler().runTask(this, () -> { if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { 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 new file mode 100644 index 0000000..c1f3d86 --- /dev/null +++ b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/ServiceCommand.java @@ -0,0 +1,29 @@ +package cn.hamster3.service.bukkit.command; + +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 org.bukkit.command.CommandSender; +import org.bukkit.plugin.java.JavaPlugin; +import org.jetbrains.annotations.NotNull; + +public class ServiceCommand extends ParentCommand { + public static final ServiceCommand INSTANCE = new ServiceCommand(); + + private ServiceCommand() { + super("hamster-service"); + addChildCommand(PlayerInfoCommand.INSTANCE); + addChildCommand(ServerInfoCommand.INSTANCE); + } + + @Override + public @NotNull JavaPlugin getPlugin() { + return BallBridgePlugin.getInstance(); + } + + @Override + public boolean hasPermission(@NotNull CommandSender sender) { + return sender.hasPermission("hamster.service.admin"); + } +} diff --git a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/sub/PlayerInfoCommand.java b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/sub/PlayerInfoCommand.java new file mode 100644 index 0000000..e7b0bf0 --- /dev/null +++ b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/sub/PlayerInfoCommand.java @@ -0,0 +1,71 @@ +package cn.hamster3.service.bukkit.command.sub; + +import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand; +import cn.hamster3.service.bukkit.api.ServiceInfoAPI; +import cn.hamster3.service.common.data.ServicePlayerInfo; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +public class PlayerInfoCommand extends ChildCommand { + public static final PlayerInfoCommand INSTANCE = new PlayerInfoCommand(); + + private PlayerInfoCommand() { + } + + @Override + public @NotNull String getName() { + return "player-info"; + } + + @Override + public @NotNull String getUsage() { + return "player-info <玩家名>"; + } + + @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 < 1) { + sender.sendMessage("§a/service player-info <玩家名>"); + return true; + } + ServicePlayerInfo playerInfo = ServiceInfoAPI.getPlayerInfo(args[0]); + if (playerInfo == null) { + sender.sendMessage("§c未找到玩家 " + args[0] + " 的信息!"); + return true; + } + sender.sendMessage("§a玩家UUID: " + playerInfo.getUuid()); + sender.sendMessage("§a玩家名称: " + playerInfo.getPlayerName()); + sender.sendMessage("§a在线状态: " + playerInfo.isOnline()); + sender.sendMessage("§a所在子服: " + playerInfo.getBukkitServer()); + sender.sendMessage("§a代理接入: " + playerInfo.getProxyServer()); + return true; + } + + @Nullable + @Override + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { + if (args.length == 1) { + return ServiceInfoAPI.getAllPlayerInfo().stream() + .map(ServicePlayerInfo::getPlayerName) + .filter(o -> o.toLowerCase().startsWith(args[0].toLowerCase())) + .collect(Collectors.toList()); + } + return Collections.emptyList(); + } +} diff --git a/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/sub/ServerInfoCommand.java b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/sub/ServerInfoCommand.java new file mode 100644 index 0000000..212ffb8 --- /dev/null +++ b/hamster-ball-bridge/src/main/java/cn/hamster3/service/bukkit/command/sub/ServerInfoCommand.java @@ -0,0 +1,69 @@ +package cn.hamster3.service.bukkit.command.sub; + +import cn.hamster3.mc.plugin.core.bukkit.command.ChildCommand; +import cn.hamster3.service.bukkit.api.ServiceInfoAPI; +import cn.hamster3.service.common.entity.ServiceSenderInfo; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +public class ServerInfoCommand extends ChildCommand { + public static final ServerInfoCommand INSTANCE = new ServerInfoCommand(); + + private ServerInfoCommand() { + } + + @Override + public @NotNull String getName() { + return "server-info"; + } + + @Override + public @NotNull String getUsage() { + return "server-info <服务器ID>"; + } + + @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 < 1) { + sender.sendMessage("§a/service server-info <服务器ID>"); + return true; + } + ServiceSenderInfo senderInfo = ServiceInfoAPI.getSenderInfo(args[0]); + if (senderInfo == null) { + sender.sendMessage("§c未找到服务器 " + args[0] + " 的信息!"); + return true; + } + sender.sendMessage("§a服务器ID: " + senderInfo.getName()); + sender.sendMessage("§a服务器别名: " + senderInfo.getNickName()); + sender.sendMessage("§a服务器类型: " + senderInfo.getType().name()); + return true; + } + + @Nullable + @Override + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { + if (args.length == 1) { + return ServiceInfoAPI.getAllSenderInfo().stream() + .map(ServiceSenderInfo::getName) + .filter(o -> o.toLowerCase().startsWith(args[0].toLowerCase())) + .collect(Collectors.toList()); + } + return Collections.emptyList(); + } +} diff --git a/hamster-ball-bridge/src/main/resources/plugin.yml b/hamster-ball-bridge/src/main/resources/plugin.yml index cac86ae..5defb9a 100644 --- a/hamster-ball-bridge/src/main/resources/plugin.yml +++ b/hamster-ball-bridge/src/main/resources/plugin.yml @@ -13,3 +13,11 @@ depend: softdepend: - PlaceholderAPI + +commands: + hamster-service: + aliases: [ hservice, service ] + +permissions: + hamster.service.admin: + default: op