/vending 指令
基本信息
| 属性 | 值 |
|---|---|
| 类型 | 指令 |
| 指令名 | vending |
| 完整用法 | /vending <add|set|reset|reload> [...] |
| 权限等级 | 默认 4(OP 2 级) |
| 权限节点 | vendingmachine.command(getCommandName() 派生) |
| 注册时机 | FMLServerStartingEvent → CommonProxy.serverStarting() |
| 类 | command/CommandVending.java + command/vending/ 下 4 个子命令 |
权限等级溯源
CommandVending 没有覆写 getRequiredPermissionLevel(),因此继承 CommandBase 的默认值 4。
canCommandSenderUseCommand 把这个 4 原样传给 sender.canCommandSenderUseCommand(4, "vending"),
即需要 OP 2 级(普通 GM)。4 个子命令均未做额外的权限检查。
子命令
| 子命令 | 用法 | 作用 | 写入钱包 |
|---|---|---|---|
add |
/vending add [player] <coin type|all> <amount> |
在现有余额上加减 | wallet.addCount(type, amount) |
set |
/vending set [player] <coin type|all> <amount> |
直接设定为某数值 | wallet.setCount(type, amount) |
reset |
/vending reset [player] <coin type|all> |
归零(resetCount / resetAllCount) |
是 |
reload |
/vending reload database |
重载 tradeDatabase.json 并广播 |
否 |
参数行为
[player]可省略;省略时用CommandBase.getCommandSenderAsPlayer(sender),即命令执行者自己(控制台则报PlayerNotFoundException)- 玩家名找不到时提示
vendingmachine.command.error.player_not_found - 数字解析失败时提示
vendingmachine.command.error.integer_format - 币种非法时提示
vendingmachine.command.error.invalid_currency_with_list并列出全部合法币种 - 关键字
all忽略大小写,对CurrencyType的 全部 14 种币种生效 - 负数金额在
add下即为扣除(聊天栏会显示「移除」变体消息与绝对值) - 所有子命令操作的都是
WalletMode.PERSONAL(个人钱包),没有团队钱包的指令入口 - 执行末尾统一调用
TradeManager.INSTANCE.saveTeamData(playerId)落盘
Tab 补全
| 参数位置 | 补全内容 |
|---|---|
| 0 / 1 | 在线玩家名 + 全部币种 ID + all |
| 2 | 若第 0 项是已知玩家名,则补全币种 ID + all |
| 其余 | null |
reload 的补全单独处理:第 1 个参数只补全 database。
数值
| 数值 | 值 |
|---|---|
| 权限等级 | 4 |
| 子命令数 | 4 |
| 支持币种数 | 14(CurrencyType)+ all 通配 |