(ItemStack aFuel)
| 1579 | } |
| 1580 | |
| 1581 | @Override |
| 1582 | public int getBurnTime(ItemStack aFuel) { |
| 1583 | if (ST.invalid(aFuel) || FL.getFluid(aFuel, T) != null) return 0; |
| 1584 | Block aBlock = ST.block(aFuel); |
| 1585 | if (aBlock instanceof BlockRailBase ) return 0; // Needed so Railcrafts Tunnel Bore works properly and doesn't try to burn its Rails while laying them. |
| 1586 | if (aBlock instanceof BlockHugeMushroom ) return (3 * TICKS_PER_SMELT) / 2; |
| 1587 | if (aBlock == BlocksGT.BalesGrass ) return (9 * TICKS_PER_SMELT) / ((ST.meta_(aFuel) & 3) == 1 ? 2 : 4); |
| 1588 | if (aBlock instanceof BlockBaseBale ) return (9 * TICKS_PER_SMELT) / 4; |
| 1589 | if (aBlock instanceof BlockBasePlanks ) return (3 * TICKS_PER_SMELT) / 2; |
| 1590 | if (aBlock instanceof BlockBaseSapling ) return TICKS_PER_SMELT / 2; |
| 1591 | if (aBlock instanceof BlockBaseBeam || aBlock instanceof BlockBaseLog) return 6 * TICKS_PER_SMELT ; |
| 1592 | long rFuelValue = UT.NBT.getNBT(aFuel).getLong(NBT_FUEL_VALUE); |
| 1593 | if (aFuel.getItem() instanceof MultiItemRandom) { |
| 1594 | Short tFuelValue = ((MultiItemRandom)aFuel.getItem()).mBurnValues.get(ST.meta_(aFuel)); |
| 1595 | if (tFuelValue != null) rFuelValue = Math.max(rFuelValue, tFuelValue); |
| 1596 | } else { |
| 1597 | if (OD.plankAnyWood.is_(aFuel )) return 3 * TICKS_PER_SMELT / 2; |
| 1598 | if (OD.logWood .is_(aFuel )) return 6 * TICKS_PER_SMELT ; |
| 1599 | if (OD.itemResin .is_(aFuel )) return TICKS_PER_SMELT / 2; |
| 1600 | if (IL.TF_Sapling.equal(aFuel, T, T)) return TICKS_PER_SMELT / 2; |
| 1601 | } |
| 1602 | |
| 1603 | OreDictItemData tData = OM.anydata_(aFuel); |
| 1604 | if (tData != null && (tData.mFurnaceFuel || rFuelValue != 0)) { |
| 1605 | long tBurnTime = 0; |
| 1606 | if (tData.mPrefix == null) { |
| 1607 | for (OreDictMaterialStack tMaterial : tData.getAllMaterialStacks()) tBurnTime += UT.Code.units(tMaterial.mMaterial.mFurnaceBurnTime, U, tMaterial.mAmount, F); |
| 1608 | } else if (tData.mPrefix == OP.oreRaw) { |
| 1609 | tBurnTime = tData.mMaterial.mMaterial.mFurnaceBurnTime; |
| 1610 | } else if (tData.mPrefix == OP.blockRaw) { |
| 1611 | tBurnTime = tData.mMaterial.mMaterial.mFurnaceBurnTime * 10; |
| 1612 | } else if (tData.mPrefix.contains(TD.Prefix.BURNABLE)) { |
| 1613 | for (OreDictMaterialStack tMaterial : tData.getAllMaterialStacks()) tBurnTime += UT.Code.units(tMaterial.mMaterial.mFurnaceBurnTime, U, tMaterial.mAmount, F); |
| 1614 | if (tData.mPrefix == OP.stick && ANY.Wood.mToThis.contains(tData.mMaterial.mMaterial)) return (int)UT.Code.bind(0, 32000, Math.max( TICKS_PER_SMELT /2, tBurnTime)); |
| 1615 | if (tData.mPrefix == OP.stickLong && ANY.Wood.mToThis.contains(tData.mMaterial.mMaterial)) return (int)UT.Code.bind(0, 32000, Math.max( TICKS_PER_SMELT , tBurnTime)); |
| 1616 | if (tData.mPrefix == OP.blockPlate && ANY.Wood.mToThis.contains(tData.mMaterial.mMaterial)) return (int)UT.Code.bind(0, 32000, Math.max((TICKS_PER_SMELT* 27L)/2, tBurnTime)); |
| 1617 | if (tData.mPrefix == OP.crateGtPlate && ANY.Wood.mToThis.contains(tData.mMaterial.mMaterial)) return (int)UT.Code.bind(0, 32000, Math.max((TICKS_PER_SMELT* 51L)/2, tBurnTime)); |
| 1618 | if (tData.mPrefix == OP.crateGt64Plate && ANY.Wood.mToThis.contains(tData.mMaterial.mMaterial)) return (int)UT.Code.bind(0, 32000, Math.max((TICKS_PER_SMELT*195L)/2, tBurnTime)); |
| 1619 | } |
| 1620 | rFuelValue = Math.max(rFuelValue, tBurnTime); |
| 1621 | } |
| 1622 | // return at most 160 Smelts, without any fraction smelts. |
| 1623 | return (int)UT.Code.bind(0, 32000, rFuelValue); |
| 1624 | } |
| 1625 | } |
nothing calls this directly
no test coverage detected