跳到正文
烈焰甘蔗Wiki

Lunch Bag

基本信息

属性 值
注册名 SpiceOfLife:lunchbag
最大堆叠 1(显式 setMaxStackSize(1))
槽位数 3
耐久度 无(全类未调用 setMaxDamage)
附魔适用 否(未重写 isEnchantable)
创造模式标签 CreativeTabs.tabMisc

[!WARNING] 已订正(本轮源码审计) 本条目与 Lunch Box 共用同一个类 ItemFoodContainer,只有槽位数、注册名、贴图不同,因此以下问题与 Lunch Box 相同:

  1. 注册名大小写错:原文 spiceoflife:lunchbag → 正确 SpiceOfLife:lunchbag(modid ModInfo.MODID = "SpiceOfLife",ModInfo.java:5;GameRegistry.registerItem,ModContent.java:25)。字符串实参 ModConfig.ITEM_LUNCH_BAG_NAME = "lunchbag"(ModConfig.java:30)。
  2. 右键语义漏写 Sneak 分支:实际是"潜行切换开/关 → 已开非空则进食 → 未开则开 GUI → 已开且空无动作"(ItemFoodContainer.java:313-323)。
  3. 左键语义错:不是"打开 GUI(客户端)",而是向服务端发包切换 Open 标志;且配置默认 false(ItemFoodContainer.java:326-334、PacketToggleFoodContainer.java:18-24、ModConfig.java:189)。
  4. 选食判据写错:不是"饱食度/饱和度比最高",而是三级排序(递减收益系数 → 恰好补满 → 饱和度×饥饿值),见下。
  5. 漏写右键方块的倒出/补入机制(ItemFoodContainer.java:292-304)。
  6. 「相关条目」里原来有一条指向自己的自引用链接,已替换为 Lunch Box。

功能

午餐袋是一个 3 槽食物容器(Lunch Box 的一半),可存放 3 种不同的食物。

实现 IEdible 接口,可以直接食用。食用时自动从容器中挑选一个食物吃掉(由 MealPrioritizationHelper 决定)。

使用方式

右键语义(ItemFoodContainer.java:313-323,三条互斥分支)

条件 行为
玩家潜行 切换开/关状态,不开 GUI
已开 && 非空 && player.canEat(false) 进入进食动作(32 tick)后吃掉一份
未开 打开容器 GUI 并置 Open=true
已开 && 空 什么都不做

其他交互

使用方式 触发条件 使用效果
右键方块 容器已开,且目标方块有可被该玩家使用的容器 先倒出容器内食物,再从目标容器补入
左键空气 left.click.opens.food.containers = true 且鼠标不在任何方块上 客户端发包,服务端切换开关状态
食用 容器已开且非空 按下方判据选出 1 份食物消耗

食用时的选食判据

MealPrioritizationHelper.FoodInfoComparator.compare(MealPrioritizationHelper.java:126-146)三级排序:未削弱者优先 → 恰好补满饥饿者优先 → saturationModifier × hunger 大者优先。

合成配方

第1行:  p p
第2行:   p

p = 纸 (minecraft:paper),共 3 张
(来源 ModContent.java:37)

数值

属性 值
槽位数 3(构造参数,ModContent.java:24)
物品本身最大堆叠 1
每槽最大堆叠 food.containers.max.stacksize,默认 2
进食动作时长 32 tick
可存入的物品 AppleCore 食物且可直接食用;蛋糕与食物容器被排除

状态与外观

  • NBT 键:Inventory / Open / UUID(ItemFoodContainer.java:50-52)
  • 开启时贴图切换为 lunchbag_open_empty / lunchbag_open_full(ItemFoodContainer.java:357-363)
  • GUI 标题 Lunch Bag(en_US.lang:49)

相关条目

浏览全部模组