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读取输入纸板箱的 NBTItems,按 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),可移除礼物上的名牌。