feat(hamster-ball-bridge): 添加查看玩家信息和服务器信息的指令
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
|
@@ -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()
|
||||||
|
}
|
||||||
|
@@ -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")) {
|
||||||
|
@@ -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");
|
||||||
|
}
|
||||||
|
}
|
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
@@ -13,3 +13,11 @@ depend:
|
|||||||
|
|
||||||
softdepend:
|
softdepend:
|
||||||
- PlaceholderAPI
|
- PlaceholderAPI
|
||||||
|
|
||||||
|
commands:
|
||||||
|
hamster-service:
|
||||||
|
aliases: [ hservice, service ]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
hamster.service.admin:
|
||||||
|
default: op
|
||||||
|
Reference in New Issue
Block a user