mirror of
https://github.com/CarmJos/MoeTeleport.git
synced 2024-09-19 21:35:56 +00:00
feat(command): 为各个指令的功能添加单独权限,修复接受指令错误的问题
This commit is contained in:
parent
8c1a4530c0
commit
4393cc9ce2
@ -9,10 +9,10 @@ README LANGUAGES [ [中文](README.md) | [**English**](README-EN.md) ]
|
|||||||
|
|
||||||
# MoeTeleport
|
# MoeTeleport
|
||||||
|
|
||||||
[![CodeFactor](https://www.codefactor.io/repository/github/carm-outsource/MoeTeleport/badge?s=b76fec1f64726b5f19989aace6adb5f85fdab840)](https://www.codefactor.io/repository/github/carm-outsource/MoeTeleport)
|
[![CodeFactor](https://www.codefactor.io/repository/github/CarmJos/MoeTeleport/badge?s=b76fec1f64726b5f19989aace6adb5f85fdab840)](https://www.codefactor.io/repository/github/CarmJos/MoeTeleport)
|
||||||
![CodeSize](https://img.shields.io/github/languages/code-size/carm-outsource/MoeTeleport)
|
![CodeSize](https://img.shields.io/github/languages/code-size/CarmJos/MoeTeleport)
|
||||||
[![Download](https://img.shields.io/github/downloads/carm-outsource/MoeTeleport/total)](https://github.com/carm-outsource/MoeTeleport/releases)
|
[![Download](https://img.shields.io/github/downloads/CarmJos/MoeTeleport/total)](https://github.com/CarmJos/MoeTeleport/releases)
|
||||||
[![Java CI with Maven](https://github.com/carm-outsource/MoeTeleport/actions/workflows/maven.yml/badge.svg?branch=master)](https://github.com/carm-outsource/MoeTeleport/actions/workflows/maven.yml)
|
[![Java CI with Maven](https://github.com/CarmJos/MoeTeleport/actions/workflows/maven.yml/badge.svg?branch=master)](https://github.com/CarmJos/MoeTeleport/actions/workflows/maven.yml)
|
||||||
![Support](https://img.shields.io/badge/Minecraft-Java%201.13--Latest-blue)
|
![Support](https://img.shields.io/badge/Minecraft-Java%201.13--Latest-blue)
|
||||||
![](https://visitor-badge.glitch.me/badge?page_id=moeteleport.readme)
|
![](https://visitor-badge.glitch.me/badge?page_id=moeteleport.readme)
|
||||||
|
|
||||||
|
@ -9,10 +9,10 @@ README LANGUAGES [ [**中文**](README.md) | [English](README-EN.md) ]
|
|||||||
|
|
||||||
# MoeTeleport 喵喵传送
|
# MoeTeleport 喵喵传送
|
||||||
|
|
||||||
[![CodeFactor](https://www.codefactor.io/repository/github/carm-outsource/MoeTeleport/badge?s=b76fec1f64726b5f19989aace6adb5f85fdab840)](https://www.codefactor.io/repository/github/carm-outsource/MoeTeleport)
|
[![CodeFactor](https://www.codefactor.io/repository/github/CarmJos/MoeTeleport/badge?s=b76fec1f64726b5f19989aace6adb5f85fdab840)](https://www.codefactor.io/repository/github/CarmJos/MoeTeleport)
|
||||||
![CodeSize](https://img.shields.io/github/languages/code-size/carm-outsource/MoeTeleport)
|
![CodeSize](https://img.shields.io/github/languages/code-size/CarmJos/MoeTeleport)
|
||||||
[![Download](https://img.shields.io/github/downloads/carm-outsource/MoeTeleport/total)](https://github.com/carm-outsource/MoeTeleport/releases)
|
[![Download](https://img.shields.io/github/downloads/CarmJos/MoeTeleport/total)](https://github.com/CarmJos/MoeTeleport/releases)
|
||||||
[![Java CI with Maven](https://github.com/carm-outsource/MoeTeleport/actions/workflows/maven.yml/badge.svg?branch=master)](https://github.com/carm-outsource/MoeTeleport/actions/workflows/maven.yml)
|
[![Java CI with Maven](https://github.com/CarmJos/MoeTeleport/actions/workflows/maven.yml/badge.svg?branch=master)](https://github.com/CarmJos/MoeTeleport/actions/workflows/maven.yml)
|
||||||
![Support](https://img.shields.io/badge/Minecraft-Java%201.13--Latest-blue)
|
![Support](https://img.shields.io/badge/Minecraft-Java%201.13--Latest-blue)
|
||||||
![](https://visitor-badge.glitch.me/badge?page_id=moeteleport.readme)
|
![](https://visitor-badge.glitch.me/badge?page_id=moeteleport.readme)
|
||||||
|
|
||||||
|
30
pom.xml
30
pom.xml
@ -11,14 +11,14 @@
|
|||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
||||||
|
|
||||||
<deps.easyplugin.version>1.5.4</deps.easyplugin.version>
|
<deps.easyplugin.version>1.5.5</deps.easyplugin.version>
|
||||||
<deps.easysql.version>0.4.6</deps.easysql.version>
|
<deps.easysql.version>0.4.6</deps.easysql.version>
|
||||||
<deps.mineconfig.version>2.5.0</deps.mineconfig.version>
|
<deps.mineconfig.version>2.5.0</deps.mineconfig.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<groupId>cc.carm.plugin</groupId>
|
<groupId>cc.carm.plugin</groupId>
|
||||||
<artifactId>moeteleport</artifactId>
|
<artifactId>moeteleport</artifactId>
|
||||||
<version>4.0.1</version>
|
<version>4.0.2</version>
|
||||||
|
|
||||||
<name>MoeTeleport</name>
|
<name>MoeTeleport</name>
|
||||||
<description>喵喵传送,简单的传送、设置家的插件。</description>
|
<description>喵喵传送,简单的传送、设置家的插件。</description>
|
||||||
@ -44,13 +44,6 @@
|
|||||||
</developers>
|
</developers>
|
||||||
|
|
||||||
<repositories>
|
<repositories>
|
||||||
|
|
||||||
<repository>
|
|
||||||
<id>carm-repo</id>
|
|
||||||
<name>Carm's Repo</name>
|
|
||||||
<url>https://repo.carm.cc/repository/maven-public/</url>
|
|
||||||
</repository>
|
|
||||||
|
|
||||||
<repository>
|
<repository>
|
||||||
<id>spigot-repo</id>
|
<id>spigot-repo</id>
|
||||||
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
|
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
|
||||||
@ -87,10 +80,11 @@
|
|||||||
</repository>
|
</repository>
|
||||||
|
|
||||||
<repository>
|
<repository>
|
||||||
<id>github</id>
|
<id>carm-repo</id>
|
||||||
<name>GitHub Packages</name>
|
<name>Carm's Repo</name>
|
||||||
<url>https://maven.pkg.github.com/CarmJos/${project.name}</url>
|
<url>https://repo.carm.cc/repository/maven-public/</url>
|
||||||
</repository>
|
</repository>
|
||||||
|
|
||||||
</repositories>
|
</repositories>
|
||||||
|
|
||||||
<distributionManagement>
|
<distributionManagement>
|
||||||
@ -98,7 +92,7 @@
|
|||||||
<repository>
|
<repository>
|
||||||
<id>github</id>
|
<id>github</id>
|
||||||
<name>GitHub Packages</name>
|
<name>GitHub Packages</name>
|
||||||
<url>https://maven.pkg.github.com/CarmJos/${project.name}</url>
|
<url>https://maven.pkg.github.com/CarmJos/MoeTeleport</url>
|
||||||
</repository>
|
</repository>
|
||||||
</distributionManagement>
|
</distributionManagement>
|
||||||
|
|
||||||
@ -128,6 +122,14 @@
|
|||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>cc.carm.lib</groupId>
|
||||||
|
<artifactId>easyplugin-command-alias</artifactId>
|
||||||
|
<version>${deps.easyplugin.version}</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<artifactId>easyplugin-githubchecker</artifactId>
|
<artifactId>easyplugin-githubchecker</artifactId>
|
||||||
@ -295,7 +297,7 @@
|
|||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
<configuration>
|
<configuration>
|
||||||
<finalName>${project.name}-${project.version}</finalName>
|
<finalName>MoeTeleport-${project.version}</finalName>
|
||||||
<outputDirectory>${project.basedir}/asset/</outputDirectory>
|
<outputDirectory>${project.basedir}/asset/</outputDirectory>
|
||||||
<createDependencyReducedPom>false</createDependencyReducedPom>
|
<createDependencyReducedPom>false</createDependencyReducedPom>
|
||||||
<filters>
|
<filters>
|
||||||
|
@ -2,6 +2,7 @@ package cc.carm.plugin.moeteleport;
|
|||||||
|
|
||||||
import cc.carm.lib.configuration.core.source.ConfigurationProvider;
|
import cc.carm.lib.configuration.core.source.ConfigurationProvider;
|
||||||
import cc.carm.lib.easyplugin.EasyPlugin;
|
import cc.carm.lib.easyplugin.EasyPlugin;
|
||||||
|
import cc.carm.lib.easyplugin.command.alias.AliasCommandManager;
|
||||||
import cc.carm.lib.easyplugin.updatechecker.GHUpdateChecker;
|
import cc.carm.lib.easyplugin.updatechecker.GHUpdateChecker;
|
||||||
import cc.carm.lib.mineconfiguration.bukkit.MineConfiguration;
|
import cc.carm.lib.mineconfiguration.bukkit.MineConfiguration;
|
||||||
import cc.carm.plugin.moeteleport.command.MainCommands;
|
import cc.carm.plugin.moeteleport.command.MainCommands;
|
||||||
@ -15,6 +16,7 @@ import cc.carm.plugin.moeteleport.storage.StorageMethod;
|
|||||||
import org.bstats.bukkit.Metrics;
|
import org.bstats.bukkit.Metrics;
|
||||||
import org.bstats.charts.SimplePie;
|
import org.bstats.charts.SimplePie;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import xyz.xenondevs.particle.utils.ReflectionUtils;
|
import xyz.xenondevs.particle.utils.ReflectionUtils;
|
||||||
|
|
||||||
public class Main extends EasyPlugin {
|
public class Main extends EasyPlugin {
|
||||||
@ -28,7 +30,7 @@ public class Main extends EasyPlugin {
|
|||||||
protected UserManager userManager;
|
protected UserManager userManager;
|
||||||
protected RequestManager requestManager;
|
protected RequestManager requestManager;
|
||||||
protected TeleportManager teleportManager;
|
protected TeleportManager teleportManager;
|
||||||
protected CommandManager commandManager;
|
protected AliasCommandManager commandManager;
|
||||||
|
|
||||||
public Main() {
|
public Main() {
|
||||||
instance = this;
|
instance = this;
|
||||||
@ -85,15 +87,16 @@ public class Main extends EasyPlugin {
|
|||||||
log("注册指令...");
|
log("注册指令...");
|
||||||
registerCommand("MoeTeleport", new MainCommands(this));
|
registerCommand("MoeTeleport", new MainCommands(this));
|
||||||
|
|
||||||
try {
|
|
||||||
this.commandManager = new CommandManager(this);
|
|
||||||
if (PluginConfig.COMMAND.ENABLE.getNotNull()) {
|
if (PluginConfig.COMMAND.ENABLE.getNotNull()) {
|
||||||
|
log("注册简化指令映射...");
|
||||||
|
try {
|
||||||
|
this.commandManager = new AliasCommandManager(this);
|
||||||
PluginConfig.COMMAND.ALIAS.getNotNull().forEach(commandManager::register);
|
PluginConfig.COMMAND.ALIAS.getNotNull().forEach(commandManager::register);
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log("注册简化指令失败: " + e.getMessage());
|
log("注册简化指令失败: " + e.getMessage());
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (PluginConfig.METRICS.getNotNull()) {
|
if (PluginConfig.METRICS.getNotNull()) {
|
||||||
log("启用统计数据...");
|
log("启用统计数据...");
|
||||||
@ -116,8 +119,8 @@ public class Main extends EasyPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void shutdown() {
|
protected void shutdown() {
|
||||||
|
if (PluginConfig.COMMAND.ENABLE.getNotNull() && this.commandManager != null) {
|
||||||
log("清空简化指令...");
|
log("清空简化指令...");
|
||||||
if (this.commandManager != null) {
|
|
||||||
this.commandManager.unregisterAll();
|
this.commandManager.unregisterAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,4 +39,9 @@ public class BackCommand extends SubCommand<MainCommands> {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(CommandSender sender) {
|
||||||
|
return sender.hasPermission("MoeTeleport.back");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -48,4 +48,9 @@ public class HomeCommands extends CommandHandler {
|
|||||||
return main.noPermission(sender);
|
return main.noPermission(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(CommandSender sender) {
|
||||||
|
return sender.hasPermission("MoeTeleport.home");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ public class ReloadCommand extends SubCommand<MainCommands> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasPermission(CommandSender sender) {
|
public boolean hasPermission(CommandSender sender) {
|
||||||
return sender.hasPermission("moeteleport.reload");
|
return sender.hasPermission("MoeTeleport.admin");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ public class TeleportCommands extends CommandHandler {
|
|||||||
|
|
||||||
registerSubCommand(new TeleportRequestCommand(this, TeleportRequest.Type.TPA_TO, "to"));
|
registerSubCommand(new TeleportRequestCommand(this, TeleportRequest.Type.TPA_TO, "to"));
|
||||||
registerSubCommand(new TeleportRequestCommand(this, TeleportRequest.Type.TPA_HERE, "here"));
|
registerSubCommand(new TeleportRequestCommand(this, TeleportRequest.Type.TPA_HERE, "here"));
|
||||||
registerSubCommand(new TeleportHandleCommand(this, true, "cancel"));
|
registerSubCommand(new TeleportHandleCommand(this, true, "accept", "agree"));
|
||||||
registerSubCommand(new TeleportHandleCommand(this, false, "deny", "refuse"));
|
registerSubCommand(new TeleportHandleCommand(this, false, "deny", "refuse"));
|
||||||
registerSubCommand(new TeleportCancelCommand(this, "cancel"));
|
registerSubCommand(new TeleportCancelCommand(this, "cancel"));
|
||||||
}
|
}
|
||||||
@ -38,4 +38,9 @@ public class TeleportCommands extends CommandHandler {
|
|||||||
return main.noPermission(sender);
|
return main.noPermission(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(CommandSender sender) {
|
||||||
|
return sender.hasPermission("MoeTeleport.teleport");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -49,4 +49,10 @@ public class WarpCommands extends CommandHandler {
|
|||||||
return main.noPermission(sender);
|
return main.noPermission(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(CommandSender sender) {
|
||||||
|
return sender.hasPermission("MoeTeleport.warp");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,122 +0,0 @@
|
|||||||
package cc.carm.plugin.moeteleport.manager;
|
|
||||||
|
|
||||||
import cc.carm.plugin.moeteleport.Main;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.command.SimpleCommandMap;
|
|
||||||
import org.bukkit.plugin.SimplePluginManager;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
public class CommandManager {
|
|
||||||
|
|
||||||
protected final JavaPlugin plugin;
|
|
||||||
|
|
||||||
protected final SimpleCommandMap commandMap;
|
|
||||||
protected final Field knownCommandsFiled;
|
|
||||||
|
|
||||||
protected final Map<String, AliasCommand> registeredCommands = new HashMap<>();
|
|
||||||
|
|
||||||
public CommandManager(JavaPlugin plugin) throws Exception {
|
|
||||||
this.plugin = plugin;
|
|
||||||
|
|
||||||
SimplePluginManager manager = (SimplePluginManager) Bukkit.getPluginManager();
|
|
||||||
Field commandMapField = SimplePluginManager.class.getDeclaredField("commandMap");
|
|
||||||
commandMapField.setAccessible(true);
|
|
||||||
this.commandMap = (SimpleCommandMap) commandMapField.get(manager);
|
|
||||||
|
|
||||||
this.knownCommandsFiled = SimpleCommandMap.class.getDeclaredField("knownCommands");
|
|
||||||
this.knownCommandsFiled.setAccessible(true);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
protected Map<String, Command> getKnownCommands() {
|
|
||||||
try {
|
|
||||||
return (Map<String, Command>) knownCommandsFiled.get(commandMap);
|
|
||||||
} catch (IllegalAccessException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return new HashMap<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPrefix() {
|
|
||||||
return this.plugin.getName().toLowerCase() + " ";
|
|
||||||
}
|
|
||||||
|
|
||||||
protected SimpleCommandMap getCommandMap() {
|
|
||||||
return commandMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void register(String alias, String target) {
|
|
||||||
AliasCommand current = this.registeredCommands.get(alias);
|
|
||||||
if (current != null) current.unregister(getCommandMap());
|
|
||||||
|
|
||||||
AliasCommand cmd = new AliasCommand(alias, this, getPrefix() + target);
|
|
||||||
this.registeredCommands.put(alias, cmd);
|
|
||||||
getCommandMap().register(Main.getInstance().getName(), cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void unregister(String alias) {
|
|
||||||
AliasCommand current = this.registeredCommands.remove(alias);
|
|
||||||
if (current != null) {
|
|
||||||
getKnownCommands().remove(alias);
|
|
||||||
current.unregister(getCommandMap());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void unregisterAll() {
|
|
||||||
registeredCommands.forEach((k, v) -> {
|
|
||||||
getKnownCommands().remove(k);
|
|
||||||
v.unregister(getCommandMap());
|
|
||||||
});
|
|
||||||
registeredCommands.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class AliasCommand extends Command {
|
|
||||||
|
|
||||||
protected final CommandManager commandManager;
|
|
||||||
protected final String targetCommand;
|
|
||||||
|
|
||||||
public AliasCommand(String name, CommandManager commandManager, String targetCommand) {
|
|
||||||
super(name);
|
|
||||||
this.commandManager = commandManager;
|
|
||||||
this.targetCommand = targetCommand;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected SimpleCommandMap getCommandMap() {
|
|
||||||
return this.commandManager.getCommandMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected String buildCommand(String[] args) {
|
|
||||||
return this.targetCommand + " " + String.join(" ", args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean execute(@NotNull CommandSender sender, @NotNull String commandLabel, @NotNull String[] args) {
|
|
||||||
return getCommandMap().dispatch(sender, buildCommand(args));
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public List<String> tabComplete(@NotNull CommandSender sender, @NotNull String alias,
|
|
||||||
@NotNull String[] args, @Nullable Location location) throws IllegalArgumentException {
|
|
||||||
return Optional.ofNullable(getCommandMap().tabComplete(sender, buildCommand(args))).orElse(Collections.emptyList());
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public List<String> tabComplete(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args) throws IllegalArgumentException {
|
|
||||||
return tabComplete(sender, alias, args, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -13,18 +13,30 @@ softdepend:
|
|||||||
- CMI
|
- CMI
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
"MoeTeleport":
|
|
||||||
description: "插件的主权限节点"
|
|
||||||
default: false
|
|
||||||
|
|
||||||
"MoeTeleport.admin":
|
"MoeTeleport.admin":
|
||||||
description: "插件的管理员权限节点"
|
description: "插件的管理员权限节点"
|
||||||
default: op
|
default: op
|
||||||
|
|
||||||
|
"MoeTeleport.teleport":
|
||||||
|
description: "使用传送请求相关指令的权限。"
|
||||||
|
default: true
|
||||||
|
|
||||||
|
"MoeTeleport.home":
|
||||||
|
description: "使用家相关指令的权限。"
|
||||||
|
default: true
|
||||||
|
|
||||||
|
"MoeTeleport.warp":
|
||||||
|
description: "使用传送请求相关指令的权限。"
|
||||||
|
default: true
|
||||||
|
|
||||||
|
"MoeTeleport.back":
|
||||||
|
description: "使用返回相关指令的权限。"
|
||||||
|
default: true
|
||||||
|
|
||||||
commands:
|
commands:
|
||||||
"MoeTeleport":
|
"MoeTeleport":
|
||||||
description: "插件的主命令,用于重载插件或查看插件信息。"
|
description: "插件的主命令,用于重载插件或查看插件信息。"
|
||||||
permission: "MoeTeleport.admin"
|
usage: "您可以输入 /MoeTeleport help 查看插件的相关帮助。"
|
||||||
usage: "/MoeTeleport reload"
|
|
||||||
aliases:
|
aliases:
|
||||||
- mt
|
- mt
|
Loading…
Reference in New Issue
Block a user