/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 通配

相关条目