跳到正文
烈焰甘蔗Wiki

SlimeSling

弹力索。⚠️ 原文的整套弹药/装填机制在源码中完全不存在;耐久与配方均错。

基本信息

属性 值
注册名 TConstruct:slimesling
类 tconstruct.gadgets.item.ItemSlimeSling
最大堆叠 1
最大耐久 100
创造标签 TConstructRegistry.gadgetsTab
使用动作 EnumAction.bow
最大使用时长 72000 ticks(4 小时)
弹药系统 无

已订正 1:最大耐久 原文写 150,正确值 100。证据:ItemSlimeSling.java:102-104 getMaxDamage() { 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):

触发条件(全部满足才发射)

  1. player.onGround —— 必须站在地面(否则直接 return)
  2. 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(线)× 2
  • S = Items.slime_ball(原版黏液球)× 3
  • B = TinkerWorld.slimeGel metadata 1(绿色弹力黏液方块)× 1

无 slime leather、无 Binding。

配方在 Loader.isModLoaded("dreamcraft") 或 PHConstruct.disableAllRecipes 时被跳过。

⚠️ mod 自身缺陷:TinkerGadgets.java:71 只执行了 TConstructRegistry.gadgetsTab.init(new ItemStack(slimeBoots)) —— 弹力索未被加入创造标签,只能通过合成获得。

相关条目

浏览全部模组