CommandHunger
基本信息
| 属性 | 值 |
|---|---|
| 类名 | squeek.applecore.commands.CommandHunger |
| 类型 | class extends CommandBase |
| 命令名 | /hunger |
| 权限等级 | 4 |
| 启用版本 | Minecraft 1.7.10 |
功能
直接设置玩家的饱食度值,并按需把饱和度一并压低。
用法
/hunger <0-20> 设置自己的饱食度
/hunger <0-20> <玩家> 设置指定玩家的饱食度
实现要点
- 目标玩家解析分两支:
args.length >= 2时用getPlayer(sender, args[0]),args.length == 1时用getCommandSenderAsPlayer(sender)。 - 数值分支:
args.length >= 2时读args[1],否则读args[0]; 统一走parseIntBounded(commandSender, ..., 0, 20),范围锁定 0–20。 - 写入用
AppleCoreAPI.mutator.setHunger(...);随后仅当 当前饱和度> newHunger时才setSaturation(playerToActOn, newHunger), 把饱和度压到与饱食度相同(避免饱食度低于饱和度的非法态)。 - 无参数时抛
WrongUsageException,用法取自本地化键applecore.commands.hunger.usage。 - 补全仅在
args.length == 1时提供在线玩家名列表 (MinecraftServer.getServer().getAllUsernames())。 - 覆写
compareTo/equals/hashCode三个方法 (1.7.10 的IComparable时代写法),hashCode取命令名的字符串哈希。 - 本命令不触发任何 AppleCore 事件——它直接写字段,
因此监听
FoodEvent.FoodEaten的 mod 不会看到这次变化。
相关条目
- Commands - 注册入口
- IAppleCoreMutator -
setHunger/setSaturation声明处 - AppleCore -
onServerStarting阶段触发注册 - SyncHandler - 改值后的同步