/spiceoflife reset 命令
基本信息
| 属性 | 值 |
|---|---|
| 命令名 | spiceoflife |
| 子命令 | reset |
| 完整用法 | /spiceoflife reset [player] |
| 权限等级 | 0(未重写 getRequiredPermissionLevel(),沿用 CommandBase 默认 0) |
| 注册方式 | FMLServerStartingEvent → event.registerServerCommand |
[!WARNING] 已订正(本轮源码审计)
- 权限描述错:原文写"带玩家参数时,重置指定玩家的数据(需要服务器权限)"。实际没有任何权限检查 —— 该类既未重写
getRequiredPermissionLevel()也未重写canCommandSenderUseCommand(),而getPlayer(sender, name)只做在线玩家名匹配、不校验权限。因此任何玩家都能重置他人数据(CommandResetHistory.java:16-55)。这与同分类的 /foodlist 命令 行为不一致(那边显式判了等级 4),疑似源码缺陷。- 补记
reset()实际清空的字段范围:最近历史、全量历史、累计食用次数、日志发放标记、活跃 tick 数(FoodHistory.java:166-173)。- 补记 Tab 补全与用法错误分支(
CommandResetHistory.java:20-27, 67)。
功能
重置指定玩家(或命令执行者)的所有食物历史数据,并在完成后立刻把历史重新同步给该玩家。
- 不带玩家参数时,重置命令执行者自身的数据
- 带玩家参数时,重置指定玩家的数据(无需服务器权限)
被重置的字段
| 字段 | 含义 | 是否清零 |
|---|---|---|
recentHistory |
最近 N 条食物历史(默认 12) | 是 |
fullHistory |
曾经吃过的唯一食物全集(里程碑数据源) | 是 |
totalFoodsEatenAllTime |
累计食用次数(受 new.player.food.eaten.threshold 影响) |
是 |
wasGivenFoodJournal |
是否已发放过食物日志 | 是 |
ticksActive |
玩家活跃 tick 计数 | 是 |
额外心形不会立即被扣除:fullHistory 清空后 ProgressInfo 缓存失效,额外生命值要等下一次 MaxHealthHandler.updateFoodHPModifier() 被调用时才重算并回落(FoodHistory.java:166-177、MaxHealthHandler.java:28-41)。
参数
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
reset |
字符串 | 是 | 子命令标识,其它值抛用法错误 |
player |
玩家名 | 否 | 目标玩家,默认命令执行者;不校验权限 |
使用示例
/spiceoflife reset -- 重置自己的食物历史
/spiceoflife reset Steve -- 重置玩家 Steve 的食物历史(任何玩家均可执行)
Tab 补全:第一个参数补 reset,第二个参数补在线玩家名(CommandResetHistory.java:20-27)。
相关条目
- /foodlist 命令 - 查看食物历史
- Extra Hearts - 里程碑额外心形
- Diminishing Returns - 递减收益机制