Present

基本信息

属性 值
注册名 betterstorage:present
物品类 ItemPresent(TilePresent.getItemClass(),src/main/java/net/mcft/betterstorage/tile/TilePresent.java:41-43)
类 net.mcft.betterstorage.tile.TilePresent
TileEntity net.mcft.betterstorage.tile.entity.TileEntityPresent(id container.betterstorage.present)
材质 Material.cloth
硬度 0.75
脚步声 soundTypeCloth
碰撞箱 (0.0625, 0, 0.0625) → (0.9375, 0.875, 0.9375)
创造标签 无(setCreativeTab(null),TilePresent.java:23)
渲染 自定义渲染类型(getRenderType(),TilePresent.java:57),renderAsNormalBlock() 返回 false

来源:src/main/java/net/mcft/betterstorage/tile/TilePresent.java:22-27, 41-43, 46, 51, 57。

功能

礼物方块由装满物品的纸板箱合成而来,颜色与图案由箱子中羊毛的颜色分布决定。

  • PresentRecipe 读取输入纸板箱的 NBT Items,按 3×3 位置统计四种角的颜色(src/main/java/net/mcft/betterstorage/item/recipe/PresentRecipe.java:21-42):
    • 4 个角必须同色,且至少 16 个位置是该颜色
    • 「左右边同色」或「上下边同色」两种合法布局之一必须成立
  • 圣诞事件期间,ChristmasEventHandler 会自动把玩家的纸板箱转换成礼物(src/main/java/net/mcft/betterstorage/misc/ChristmasEventHandler.java:53-85)
  • 礼物同样由 general.enableChristmasEvent 控制(默认 true,GlobalConfig.java:228-229)
  • 与 [Present Book](Present Book) 配合:礼物里可以放书页,书会记录礼物故事
  • 附有 PresentRemoveNametagRecipe,用于合成台中移除礼物名牌(src/main/java/net/mcft/betterstorage/misc/Recipes.java:168)
  • 不出现在创造模式物品栏

数值

数值名 值 来源
硬度 0.75 TilePresent.java:25
材质 Material.cloth TilePresent.java:22
合成所需角色数量 ≥ 16 PresentRecipe.java:34 if (corners >= 16) return false
位置总数 9(3×3 布局中取 8 个外围位 + 中心箱) PresentRecipe.java:24 返回 9 元素数组

交互

触发 行为
右键 打开礼物 GUI(container.betterstorage.present)
合成 装满物品的纸板箱(羊毛装饰)→ 礼物
圣诞期间开箱 ChristmasEventHandler 触发开箱动画与奖励(受 enableChristmasEvent 控制)
创造模式物品栏 不显示

合成配方

PresentRecipe(src/main/java/net/mcft/betterstorage/misc/Recipes.java:166-169 注册)。输入为 3×3:

P P P
P B P
P P P
字符 物品
B 中心:装有物品的纸板箱(必须带 NBT Items,PresentRecipe.java:30-32)
P 8 个外围位:羊毛,颜色须符合「四角同色 + 边同色」规则

另有 PresentRemoveNametagRecipe 注册为合成台配方(Recipes.java:168),可移除礼物上的名牌。

相关条目