feat(hamster-ball-bridge): 添加查看玩家信息和服务器信息的指令

This commit is contained in:
2023-02-06 22:13:54 +08:00
parent 78de3e576c
commit 325c892039
7 changed files with 191 additions and 4 deletions

View File

@@ -31,11 +31,11 @@ subprojects {
compileOnly 'org.jetbrains:annotations:23.0.0' compileOnly 'org.jetbrains:annotations:23.0.0'
} }
tasks.withType(JavaCompile) { tasks.withType(JavaCompile).configureEach {
options.setEncoding("UTF-8") options.setEncoding("UTF-8")
} }
tasks.withType(Jar) { tasks.withType(Jar).configureEach {
from([rootProject.file("LICENSE")]) from([rootProject.file("LICENSE")])
duplicatesStrategy(DuplicatesStrategy.EXCLUDE) duplicatesStrategy(DuplicatesStrategy.EXCLUDE)
} }
@@ -46,6 +46,7 @@ subprojects {
// withJavadocJar() // withJavadocJar()
withSourcesJar() withSourcesJar()
} }
jar { jar {
destinationDir(rootProject.buildDir) destinationDir(rootProject.buildDir)
} }

View File

@@ -1,4 +1,4 @@
version = '1.0.1' version = '1.1.0'
setArchivesBaseName("HamsterBall-Bridge") setArchivesBaseName("HamsterBall-Bridge")
dependencies { dependencies {
@@ -6,7 +6,7 @@ dependencies {
compileOnly 'net.md-5:bungeecord-api:1.19-R0.1-SNAPSHOT' 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.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}" compileOnly "me.clip:placeholderapi:${placeholder_api_version}"
} }
@@ -18,3 +18,10 @@ processResources {
} }
duplicatesStrategy(DuplicatesStrategy.EXCLUDE) duplicatesStrategy(DuplicatesStrategy.EXCLUDE)
} }
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
// withJavadocJar()
withSourcesJar()
}

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.bukkit.api.ServiceInfoAPI; 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.MessageReceivedEvent;
import cn.hamster3.service.bukkit.event.MessageSentEvent; import cn.hamster3.service.bukkit.event.MessageSentEvent;
import cn.hamster3.service.bukkit.event.ServiceConnectEvent; 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.getPluginManager().registerEvents(ServiceMainListener.INSTANCE, this);
Bukkit.getScheduler().runTask(this, () -> { Bukkit.getScheduler().runTask(this, () -> {
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {

View File

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

View File

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

View File

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

View File

@@ -13,3 +13,11 @@ depend:
softdepend: softdepend:
- PlaceholderAPI - PlaceholderAPI
commands:
hamster-service:
aliases: [ hservice, service ]
permissions:
hamster.service.admin:
default: op