四季靴(Boots of the Seasons)
基础靴之一,无条件注册(Config.java:80)。它的 vis 折扣与贴图会随服务器真实日历在 12 月与非 12 月之间切换,是本 mod 唯一按日期变动的靴子。
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | thaumicboots:ItemSeasonBoots(Config.java:80) |
| 内部类 | thaumicboots.item.boots.unique.ItemSeasonBoots |
| 本地化名 | item.ItemSeasonBoots.name = Boots of the Seasons |
| 构造参数 | (ThaumcraftApi.armorMatSpecial, 4, 3)(Config.java:79) |
| 基类 | ItemBoots extends ItemArmor,实现 ITBootJumpable、ITBootSpeed、IVisDiscountGear、IRunicArmor、IRepairable |
| 稀有度 | EnumRarity.rare(ItemBoots.getRarity 固定返回) |
| 图标 | 非 12 月 thaumicboots:bootsArcanium;12 月切换为 thaumicboots:bootsChristmas |
| 护甲贴图 | 非 12 月 thaumicboots:model/boots_arcanium.png;12 月切换为 thaumicboots:model/boots_christmas.png |
数值
| 数值 | 非 12 月 | 12 月(圣诞) |
|---|---|---|
visDiscount |
3 | 6 |
tier |
2 | 2 |
jumpBonus |
0.35D(3.5 格) | 0.35D |
speedBonus |
0.165F | 0.165F |
longrunningbonus |
0.003F × 1 = 0.003F | 0.003F × 12 = 0.036F |
modifier 字段 |
1 | 12 |
negateFall(免摔) |
true | true |
waterEffects(涉水减益) |
true | true |
steadyBonus(持续加速) |
true | true |
数据源:ItemSeasonBoots.java:14-37。
注意 longrunningbonus 的语义:它不是直接加成,而是乘在「已奔跑 tick 数」上的系数。ItemBoots.computeBonus(ItemBoots.java:127-130)算出 speedBonus + (runTicks * 0.2F) * longrunningbonus,所以圣诞月长跑收益是平月的 12 倍。
功能
- 真实日历驱动:
CalendarHelper.isChristmas()读Calendar.MONTH + 1 == 12,即服务器操作系统的时间。改系统日期即可切换,不看游戏内时间。 - 免摔:
onArmorTick每 tick 把player.fallDistance归零(ItemBoots.java:151-153)。 - 涉水减益:
waterEffects = true,在水中bonus *= 0.25F(ItemBoots.java:216-218)。 - 持续加速:
steadyBonus = true,NBT 键runTicks记录奔跑 tick,每 tick 累加。 - 台阶辅助:
stepAssist键开启后stepHeight = 1.0F。 - 皮革可修复:
getIsRepairable允许用皮革修复(ItemBoots.java:124-127)。
合成配方
| 配方类型 | 输入 | 输出 |
|---|---|---|
坩埚(ThaumcraftHelper.java:269) |
奥术透镜 + 泰铑 | 本物品 ×4 |
灌注(ThaumcraftHelper.java:275) |
本物品 + 烈焰火箭(任意元)、墨水、书、烈焰火箭、铁剑、南瓜灯、霜冻法杖、橡树树苗 | 本物品 ×1 |
TB_Core_Research(奥术制鞋术)的研究页 2 记录坩埚配方;TB_Seasonal_Boots(季节魔法)的研究页 2 记录灌注配方。
已知缺陷
isChristmas()依赖服务器操作系统日期。GTNH 多人服务器上所有玩家看到的 vis 折扣取决于服主的系统时间,与游戏内世界时间无关。- 配方
seasonalBoot的材料里烈焰火箭出现两次(ThaumcraftHelper.java:282与:284),是 7 槽灌注配方的重复填装。 modifier字段在非 12 月走默认 1,但ItemSeasonBoots的modifier是实例字段且在setBootsData()内被赋值,而longrunningbonus的计算放在方法末尾——顺序正确,无初始化时序问题。