SlimeSling
弹力索。⚠️ 原文的整套弹药/装填机制在源码中完全不存在;耐久与配方均错。
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | TConstruct:slimesling |
| 类 | tconstruct.gadgets.item.ItemSlimeSling |
| 最大堆叠 | 1 |
| 最大耐久 | 100 |
| 创造标签 | TConstructRegistry.gadgetsTab |
| 使用动作 | EnumAction.bow |
| 最大使用时长 | 72000 ticks(4 小时) |
| 弹药系统 | 无 |
已订正 1:
最大耐久原文写 150,正确值 100。证据:ItemSlimeSling.java:102-104getMaxDamage() { return 100; }。 已订正 2:Creative Tab原文写TConstructRegistry.gemTab,实际为gadgetsTab(ItemSlimeSling.java:30)。 已订正 3:原文注册名缺失,补TConstruct:slimesling(TinkerGadgets.java:40)。
⚠️ 已订正 4:弹药系统完全不存在
原文以下断言在源码中均无对应代码:
| 原文断言 | 核对结论 |
|---|---|
Ammo: Slime Ball (any color) |
错误 — 类中无任何弹药字段/方法 |
Fuel Capacity: 8 slime balls per reload |
错误 — 源码无此常量 |
Launch: Right-click to consume 1 slime ball |
错误 — 发射不消耗任何黏液球 |
Elastic Propulsion: velocity scales with number of slime balls consumed |
错误 — 力度只由蓄力时长决定,与黏液球数量无关 |
Reload: Automatic (when ammo available) |
错误 — 无装填逻辑 |
Load Ammo: Right-click while holding slime balls |
错误 — 无此代码 |
Different slime ball colors all work as ammo |
错误 — 发射时完全不检查库存物品 |
Max Durability 150 |
错误 — 实为 100 |
ItemSlimeSling 全文 114 行,唯一消耗耐久的地方是 stack.damageItem(1, player)(每次成功发射扣 1)。
实际机制
onPlayerStoppedUsing()(ItemSlimeSling.java:66-94):
触发条件(全部满足才发射)
player.onGround—— 必须站在地面(否则直接 return)mop != null && mop.typeOfHit == MovingObjectType.BLOCK—— 准星必须指着方块
原文「Directional Control: Player can aim by positioning themselves」不准确:需指向方块才触发。
力度计算
double itemUseDuration = (this.getMaxItemUseDuration(stack) - timeLeft);
double power = Math.min(itemUseDuration / 20D, 1.8D);
double height = Math.max(vec.yCoord * power * 2, -2D);
player.addVelocity(vec.xCoord * -power, -height, vec.zCoord * -power);
power= 蓄力 tick 数 ÷ 20,上限 1.8- 方向取
player.getLookVec().normalize()并取反(-power)——即朝视线反方向弹射 - 垂直分量
height = max(vec.y * power * 2, -2),不小于 −2(故必然向上至少有一点) - 发射后
SlimeBounceHandler.addBounceHandler(player)→ 获得弹跳,不受坠落伤害 - 播放
tinker:slimesling音效,扣 1 耐久 - 服务端额外发
MovementUpdatePacket与S12PacketEntityVelocity
原文「No Fall Damage: Launching with Slime Sling does not trigger fall damage」方向正确,但机制是
addBounceHandler而非发射本身。
合成配方
已订正:原文配方「3× Slime Leather + 2× Slime Ball + 1× Binding」——完全错误。 实际(
TinkerGadgets.java:59-68,ShapedOreRecipe):F B F S S S
F=Items.string(线)× 2S=Items.slime_ball(原版黏液球)× 3B=TinkerWorld.slimeGelmetadata 1(绿色弹力黏液方块)× 1无 slime leather、无 Binding。
配方在 Loader.isModLoaded("dreamcraft") 或 PHConstruct.disableAllRecipes 时被跳过。
⚠️ mod 自身缺陷:
TinkerGadgets.java:71只执行了TConstructRegistry.gadgetsTab.init(new ItemStack(slimeBoots))—— 弹力索未被加入创造标签,只能通过合成获得。
相关条目
- SlimeBoots — 弹力靴(弹跳落地)
- SlimeGel — 配方所需绿色黏液方块(meta 1)
- SlimeIsland — 黏液岛