特殊物品
基本信息
| 属性 | 值 |
|---|---|
| 所属枚举 | com.dreammaster.item.NHItemList(见 NHItemList) |
| 带自定义构造参数的物品 | 90 / 567 |
| 实现类数 | 7(CoinItem、NHMusicRecord、CustomPattern、OvenGlove、WitherProtectionRing、WoodenBrickForm、QuantumBread) |
| 数量分布 | 80 + 4 + 2 + 1 + 1 + 1 + 1 = 90 |
NHItemList 中不带构造参数的那条重载直接 new Item()(NHItemList.java:616-618),因此下面 7 个类就是本 mod 全部的自定义物品实现。
OvenGlove 烤箱手套
com.dreammaster.item.baubles.OvenGlove —— 全 mod 逻辑最复杂的物品。
| 属性 | 值 |
|---|---|
| 继承 | Item,实现 Baubles 的 IBauble |
| 饰品槽位 | BaubleType.RING(OvenGlove.java:91-92) |
| 护甲值 | setMaxDamage(0)(不消耗耐久,OvenGlove.java:37) |
| 是否有子类型 | setHasSubtypes(true)(OvenGlove.java:38) |
| NBT 耐久键 | Durability(OvenGlove.java:34) |
| NBT 耐久上限 | 1000(OvenGlove.java:35) |
| 事件处理器 | 内嵌 OvenGlove.EventHandler(OvenGlove.java:141) |
| 事件注册 | MinecraftForge.EVENT_BUS.register(new OvenGlove.EventHandler())(MainRegistry.java:256) |
| 副手支持 | 依赖 modid Backhand(OvenGlove.java:166-170) |
随机显示名
getItemStackDisplayName 在客户端每秒重掷一次 nextInt(4),按 <name>_<damage>_<rand>.name 查语言文件(OvenGlove.java:47-58),因此手套名在 4 个变体间轮换。zh_CN.lang 中确有 8 个对应键(OvenGlove_0_0 – OvenGlove_1_3)。
耐久机制
createOrInitNBTTag在 NBT 缺失时写入MAX_DURABILITY(OvenGlove.java:134-139)onCreated触发初始化(OvenGlove.java:106-108)damageItem逐次递减,降到 0 即停止(OvenGlove.java:117-122)- Tooltip 在
Durability <= 1时追加item.OvenGlove.desc.broken(OvenGlove.java:130-132) - 图标按 NBT 耐久取 2 张之一(
OvenGlove.java:70)
免伤逻辑
EventHandler.onDamage(OvenGlove.java:144)监听 LivingAttackEvent:只对玩家、只对 DamageSourceHotItem 生效;难度为和平时直接 setCanceled(true)(OvenGlove.java:155-159,注释引用 issue #16879);伤害来源物品必须是主手,或在 Backhand 加载时是副手(OvenGlove.java:164-172)。
WitherProtectionRing 凋零防护指环
com.dreammaster.item.baubles.WitherProtectionRing
| 属性 | 值 |
|---|---|
| 继承 | Item,实现 IBauble |
| 饰品槽位 | BaubleType.RING(WitherProtectionRing.java:29-30) |
| 限制 | 无 —— canEquip / canUnequip 恒为 true(WitherProtectionRing.java:19-26) |
| 效果 | 每 tick 1/20 概率移除 Potion.wither 效果(:55-60) |
onWornTick 先 instanceof EntityPlayer 早退(:51-53),再 user.worldObj.rand.nextInt(20) == 0 判定(:55)。Tooltip 有 2 行绿色斜体说明(:41-46)。
QuantumBread 量子面包
com.dreammaster.item.food.QuantumBread —— 本 mod 唯一的 ItemFood。
| 属性 | 值 |
|---|---|
| 饱和度 / 饥饿恢复 | super(1, 0.0F, true) → 堆叠 1、饱和 0.0、alwaysEdible(:22-23) |
| 附魔光泽 | hasEffect 恒返回 true(:45-47) |
| 随机显示名 | 每 250ms 重掷 nextInt(2),按 <name>_<rand>.name 查表(:31-38) |
食用效果(onFoodEaten,:50-56):
| 效果 | 数值 |
|---|---|
| 饥饿值 | addStats(10, 1.0F) |
| 生命恢复 | Potion.regeneration,20×60 tick,等级 2 |
| 跳跃提升 | Potion.jump,20×60 tick,等级 2 |
| 移动速度 | Potion.moveSpeed,20×60 tick,等级 2 |
CoinItem 币
com.dreammaster.item.CoinItem —— 80 个币共用同一个类,靠两个构造参数 (String coinType, int coinTier) 区分(CoinItem.java:20-23)。
渲染走双层贴图:
| 渲染元素 | 贴图路径 | 来源 |
|---|---|---|
| 背景 | dreamcraft:coins/background/big<coinTier> |
CoinItem.java:40 |
| 前景类型 | dreamcraft:coins/icons/<coinType><coinTier> |
CoinItem.java:42 |
| 是否双层 | requiresMultipleRenderPasses() 返回 coinType != null |
CoinItem.java:33-35 |
CoinBlank – CoinBlankIV 共 5 个传入 coinType = null,因此不渲染前景层(NHItemList.java:114-118),是未铸币坯。
币共有 16 个 coinType 取值,每个各 5 个等级(coinTier 0–4),合计 80:
| coinType | 数量 |
|---|---|
adventure、bee、bm、builder、chemist、chunkloader、cook、farmer、gardener、ranger、space、survivor、technician、witch、wizard |
各 5,共 75 |
null(CoinBlank – CoinBlankIV) |
5 |
CoinChunkloaderTierI – TierV 的堆叠上限被静态块设为 4(NHItemList.java:600-604)。
NHMusicRecord 音乐唱片
com.dreammaster.item.record.NHMusicRecord,两个构造器(NHMusicRecord.java:14-27):
| 唱片 | 声音来源 | 归属 |
|---|---|---|
AbsoluteZeroDisc |
record.absolute_zero |
本 mod sounds.json |
FloraDisc |
record.flora |
本 mod sounds.json |
LunchBreakDisc |
track.lunch_break |
vendingmachine mod |
SweetDreamsDisc |
record.sweet_dreams |
本 mod sounds.json |
LunchBreakDisc 是唯一跨模组取音乐的唱片,走三参构造器指定外部 modid(NHItemList.java:36)。getRecordResource 按 modid 构造 ResourceLocation(NHMusicRecord.java:30-32)。
CustomPattern 铸型
com.dreammaster.item.CustomPattern 实现 TConstruct 的 IPattern(CustomPattern.java:13),类上与两个方法上均标 @Optional.Interface / @Optional.Method(modid = TINKER_CONSTRUCT)(:12、:16、:22)。
| 方法 | 返回 |
|---|---|
getPatternCost |
0(免费,CustomPattern.java:17-19) |
getPatternOutput |
null(CustomPattern.java:23-25) |
仅 2 个实例:BowFletchingCast、BowStringCast,均属 MOLDS 标签(NHItemList.java:30-31)。语言键为 Cast.BowFletchingCast / Cast.BowStringCast。
WoodenBrickForm 木制砖模板
com.dreammaster.item.WoodenBrickForm —— 唯一的容器物品(hasContainerItem,WoodenBrickForm.java:22):
| 方法 | 作用 |
|---|---|
hasContainerItem() |
返回 true(:22) |
getContainerItem(ItemStack) |
返回容器物品(:32) |
doesContainerItemLeaveCraftingGrid |
控制容器物品是否留在合成格(:16) |
isRepairable() |
可修复(:27) |
数值
| 数值名 | 值 |
|---|---|
| 自定义物品实现类 | 7 |
| 带构造参数物品 | 90 |
OvenGlove NBT 耐久上限 |
1000 |
OvenGlove 显示名变体 |
4 |
QuantumBread 显示名变体 |
2 |
| 生效药水时长 | 1200 tick(60 秒),等级 2 |
| 币类型数 | 16 个 coinType × 5 级 = 80,其中 5 个 CoinBlank* 的 coinType 为 null,不渲染前景层 |
交互
| 物品 | 主要交互 |
|---|---|
OvenGlove |
装备在 Baubles 指环槽;徒手或副手持物被烧伤时消耗 NBT 耐久免伤 |
WitherProtectionRing |
装备后每 tick 1/20 概率清除凋零效果 |
QuantumBread |
食用,恢复 10 点饥饿并给 3 个 60 秒二级增益 |
Coin* |
通过 Forestry 印章 / 区块加载器配方获取,见 配方脚本 |
CustomPattern |
TConstruct 铸型,消耗为 0 |
WoodenBrickForm |
合成砖块的容器物品 |
相关条目
- NHItemList - 567 个物品的完整总表
- 配方脚本 - 这些物品的获取途径由脚本注册