命令与权限

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

在 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 列出当前已安装的 Sponge 插件。 sponge.command.plugins
/sponge plugins reload 请求插件执行它们自己的重载操作。 sponge.command.plugins.reload
/sponge reload 重新加载全局、 世界或维度的配置。 sponge.command.reload
/sponge save 保存全局、世界、或维度的配置 sponge.command.save
/sponge timings 计时模块的主命令。 sponge.command.timings
/sponge tps 显示每个世界的每秒游戏刻数量(TPS)。 sponge.command.tps
/sponge version 在控制台中输出 Sponge/SpongeAPI 的版本。 sponge.command.version
/sponge which 输出目标指令的所属插件、别名及替代品。 sponge.command.which
/sponge:callback 内部命令,用于分页等情况下 Text 对象的回调动作。不应手动调用。  
/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|*]

命令冲突

当遇到重名命令时,可使用 Sponge 的主要别名机制来指定具体要执行哪一个命令。例如,Minecraft 和 Sponge 都提供了名为 reload 的命令。若要指明具体执行哪一个版本的 reload 命令,可以使用前缀 minecraftsponge,并用 : 分隔。换言之,可以输入 /sponge:reload 来执行 Sponge 的 reload。对于其他 Mod 或插件的命令也可以采用类似的做法,只需要在 : 前加上对应的 mod id 或者插件 id 即可,比如 /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

Timings

Timings 是 Sponge 内置的允许服务器管理员监视服务器运行状况的工具。Timings 将收集有关服务器的信息以便生成一个报告。由 Timings 记录的信息包括服务器 motd、版本、运行时间、内存、安装的插件、tps 以及 tps 损失百分比,玩家数量、TileEntity 、实体和区块。下面是 /sponge timings 的子命令列表:

命令 说明
/sponge timings on 启用 Timings。请注意,这将会重置 Timings 数据。
/sponge timings off 禁用 Timings。请注意在禁用时,大部分 Timings 指令将会无法使用,并且 Timings 将不会进行记录工作。
/sponge timings reset 重设所有 Timings 数据,并在此命令结束后开始记录 Timings 数据。
/sponge timings report https://timings.aikar.co 生成服务器性能的 Timings 报告。
/sponge timings verbon 设置计时报告的监测记录为详细模式。
/sponge timings verboff 取消设置计时报告的监测记录为详细模式。注意这会使得高频计时不可用。
/sponge timings cost 获取使用计时监测的成本。

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

原版命令的完整列表可在这里。在 Sponge 服务器中,原版 Minecraft 命令有着形如 minecraft.command.<command> 的权限节点。

命令特性

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

command features

小技巧

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