/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 通配 |
相关条目