命令与权限

警告

These docs have not been fully updated to SpongeAPI 8 and may be out of date. If you feel like you can help update them, please submit a PR!

服务器管理员可以使用命令来控制自己的服务器,玩家们也可以通过命令来与服务器交互。

在 Sponge 中,命令的执行受权限的控制。权限系统可以让服务器管理员控制每一名玩家可以使用的命令。默认,有 OP 权限的玩家可使用所有的命令。没有 OP 权限的玩家无法使用服务器维护相关的命令及那些需要特殊权限节点的命令。服务器管理员可以利用某种权限插件来精确控制玩家可使用的每一个命令。

备注

Sponge 自身不是权限管理插件。若需添加或取消特定玩家或组的权限,你需要使用某种权限管理插件。

管理员命令

这些额外于普通玩家命令的命令对服务器管理员可用

Sponge

有管理员权限,或有该命令权限节点的玩家可以使用这些命令来控制 Sponge 的运行。

命令

说明

Permission 字符串

/sponge audit

强制装载未装载的类,以便于启用 Mixin 调试。

sponge.command.audit

/sponge blockinfo

显示你当前正在看着的方块的类型及附加信息。

sponge.command.blockinfo

/sponge chunks

输出某个世界、某个维度或全局的区块信息。

sponge.command.chunks

/sponge config

修改全局、某个世界或某个维度的配置。

sponge.command.config

/sponge entityinfo

显示你当前正在看的实体的类型及附加信息。

sponge.command.entityinfo

/sponge heap

导出 JVM 堆内存信息。

sponge.command.heap

/sponge metrics

获取或设定是否为指定插件启用 metric(又称服务器统计)数据收集。

sponge.command.metrics

/sponge mods

列出当前已安装的 Forge mod(仅限 SpongeForge)。

sponge.command.mods

/sponge plugins list

列出当前已安装的 Sponge 插件。

sponge.command.plugins

/sponge plugins refresh

请求插件执行它们自己的重载操作。

sponge.command.plugins.refresh

/sponge reload

重新加载全局、 世界或维度的配置。

sponge.command.reload

/sponge save

保存全局、世界、或维度的配置

sponge.command.save

/sponge tps

显示每个世界的每秒游戏刻数量(TPS)。

sponge.command.tps

/sponge version

在控制台中输出 Sponge/SpongeAPI 的版本。

sponge.command.version

/sponge which

输出目标指令的所属插件、别名及替代品。

sponge.command.which

/sponge:callback

Internally used for callback actions on Components (such as pagination). Not intended to be invoked by hand.

/sponge:help

查看服务器上可使用命令的信息。

sponge.command.help


Sponge 命令参数

  • /sponge chunks [-g] [-d dim] [-w world]

  • /sponge config [-g] [-d dim] [-w world] key value

  • /sponge save [-g] [-d dim|*] [-w world|*]

  • /sponge reload [-g] [-d dim|*] [-w world|*]

命令冲突

In cases of command conflict, Sponge provides a primary alias mechanism to specify which command is to be used. For example, Minecraft provides the reload command and Sponge provides the reload command. To specify which command to use, prefix it with minecraft or sponge and a :. So, to use Sponge’s reload command above, type in /sponge:reload. This approach can also be used to handle conflicts between mods and/or plugins. Do the same thing, just use the mod-id or the plugin-id and a :. An example is /examplemodid:tp.

另外,主要别名机制还可以用来避免兼容问题。假设有一个插件注册了一个和你的 Mod 不兼容的命令。你只需要将你的 Mod 修改为调用 Minecraft 的原生命令或者兼容的其他插件的命令,就可以避开未定义行为了。

备注

/sponge audit 指令强制装载所有未被装载的类,并允许采集完整的 Mixin 调试环境的变量的输出。这同时需要 mixins.checks 变量,请参见 Mixin wiki 以获得更多信息。

小技巧

这里有若干简单的 Sponge 配置命令例子,注意你需要指定至少一个目标。参阅“配置 Sponge”获取详细说明。

  1. /sponge config -d minecraft:nether logging.chunk-load true

由于指定了世界类型,这将改变下界世界配置 (和所有的下界类型世界)。

  1. /sponge config -w DIM1 logging.chunk-load true

这将改变名为 DIM1 的世界的配置。

Sponge 提供两个调试相关的权限:

  • 允许使用 Sponge 的方块与实体追踪信道:sponge.debug.block-tracking。这个信道(在装有 SpongeForge 的情况下)用于在客户端侧的调试模式下显示方块和实体的所有者及 notifier 信息。

  • 允许鼠标悬浮在命令执行错误提示上时显示栈帧:sponge.debug.hover-stacktrace

Forge

下面的命令只在使用了 SpongeForge 的 Forge 服务器上可用。其他 SpongeAPI 的实现(例如 SpongeVanilla)上不能使用这些命令。

命令

说明

Permission 字符串

/forge tps

显示每个世界的每秒游戏刻数量(TPS)。

forge.command.forge

/forge track

开启Tile Entity跟踪。

forge.command.forge


对于基于 Forge 的 Mod 来说,它们在原版命令系统中追加的新命令均有如下格式的权限节点:<modid>.command.<commandname>

原版指令

下面几个命令基于原版的 Minecraft ,不过在 Sponge 服务器上也能够使用。列表没有列出所有命令,但它包含了最常用的命令。有管理员权限(或对应权限节点)的玩家可以使用这些命令。一般情况下,Sponge 服务器上使用原版命令的权限名称为诸如 minecraft.command.<command> 的形式,如下所述。

命令

说明

Permission 字符串

/ban

封禁指定玩家。

minecraft.command.ban

/ban-ip

封禁指定玩家的 IP 地址。

minecraft.command.ban-ip

/banlist

显示封禁玩家清单。

minecraft.command.banlist

/clear

清空物品栏。

minecraft.command.clear

/deop

取消指定玩家的管理员权限。

minecraft.command.deop

/difficulty

设定游戏难度。

minecraft.command.difficulty

/gamemode

设置指定玩家的游戏模式(生存/创造/冒险等)。

minecraft.command.gamemode

/gamerule

设置游戏规则。

minecraft.command.gamerule

/give

给予玩家物品。

minecraft.command.give

/kill

杀死指定玩家或实体。

minecraft.command.kill

/op

给予指定玩家管理员权限。

minecraft.command.op

/pardon

解封指定玩家。

minecraft.command.pardon

/save-all

保存服务器地图。

minecraft.command.save-all

/save-off

关闭服务器自动保存。

minecraft.command.save-off

/save-on

启动服务器自动保存。

minecraft.command.save-on

/setidletimeout

设定玩家挂机踢出延迟。

minecraft.command.setidletimeout

/setworldspawn

设置指定世界的出生点。

minecraft.command.setworldspawn

/stop

关闭服务器。

minecraft.command.stop

/toggledownfall

切换天气(晴天、雨天等)。

minecraft.command.toggledownfall

/tp

传送玩家或实体。

minecraft.command.tp

/weather

设定天气。

minecraft.command.weather

/whitelist

管理服务器白名单。

minecraft.command.whitelist

/worldborder

管理世界边界。

minecraft.command.worldborder


Sponge 还为这些 Minecraft 特性创建了权限:

  • 允许玩家在命令中使用实体选择器:minecraft.selector

  • 允许玩家在所有世界中不受出生点保护的限制:minecraft.spawn-protection.override

  • 允许玩家在所有世界中不受强制指定游戏模式的限制:minecraft.force-gamemode.override

  • 允许玩家编辑特定名称的命令方块: minecraft.commandblock.edit.block.<name>

  • 允许玩家编辑特定名称的命令方块矿车: minecraft.commandblock.edit.minecart.<name>

备注

这些权限使用命令方块的实际名称,默认为 @

还有若干其他管理服务器访问权限的权限:

  • 将用户视作已加入白名单:minecraft.login.bypass-whitelist

  • 允许用户不受服务器玩家数上限限制:minecraft.login.bypass-player-limit

备注

Sponge 为多世界提供了更好支持,比如允许每个世界拥有各自的世界边界等。默认,Sponge 只会更改当前玩家所在的世界的相关配置。原版的行为(即世界设定将影响所有维度)可通过将全局配置文件中的 sponge.commands.multi-world-patches.worldborder``(或对应条目)的值设定为 ``false 来恢复。参阅 global.conf 文件 获得更多信息。Sponge 默认多世界插件也会提供类似的针对多世界优化的配置命令,所以不会在 Sponge 中内置相关命令。

玩家命令

下面的命令均为原版 Minecraft 自带,且玩家无需管理员权限即可使用。

命令

说明

Permission 字符串

/help

查看服务器可用命令的信息。注意:默认使用 Sponge 的命令!

minecraft.command.help

/me

告诉所有人你在做什么。

minecraft.command.me

/say

给所有人(或者指定玩家)发送一条消息。

minecraft.command.say

/tell

私信另一名玩家。

minecraft.command.tell


A full list of vanilla commands can be found at: https://minecraft.wiki/w/Commands#List_and_summary_of_commands. Permissions for vanilla Minecraft commands on a Sponge server are of the structure minecraft.command.<command>.

命令特性

Sponge 和大部分 Sponge 插件都支持诸如自动补全和悬浮提示文本这样的附加特性。下图展示了使用 /sponge plugins 命令后的输出(黄框部分)。将鼠标悬浮在列表中的某一项上后可以获得相关的详细信息,例如当前版本号(红框部分);某些项点击后还会有特殊行为,比如点击某个插件的 ID 后可以查看关于该插件的详细信息(紫框部分),这个行为等价于使用 sponge plugins <pluginid> 命令。自动补全可用 Tab 触发,比如输入 /sponge plugins  (结尾带一空格)后再按 Tab 可以显示一系列当前可能补全的值(青绿色框部分),此时再次按 Tab 可在各个值之间循环。理论上,你完全可以只用 Tab 和空格来输入任何命令(有时可能需要输入每一节的第一个字母)。

command features

小技巧

如果你是插件开发者,且想使用带悬浮框或额外动作的文本,请参阅:Text 文档