529 lines
18 KiB
Groovy
529 lines
18 KiB
Groovy
import com.google.common.base.CaseFormat
|
|
import com.nomiceu.nomilabs.util.LabsModeHelper
|
|
import com.nomiceu.nomilabs.groovy.SimpleIIngredient
|
|
import net.minecraft.item.ItemStack
|
|
import net.minecraftforge.fluids.Fluid
|
|
import net.minecraftforge.fluids.FluidStack
|
|
import net.minecraftforge.fluids.FluidUtil
|
|
import net.minecraftforge.fluids.capability.CapabilityFluidHandler
|
|
import net.minecraftforge.fluids.capability.IFluidHandlerItem
|
|
|
|
import static com.nomiceu.nomilabs.util.LabsTranslate.Translatable
|
|
import static com.nomiceu.nomilabs.groovy.GroovyHelpers.TranslationHelpers.translate
|
|
import static com.nomiceu.nomilabs.groovy.GroovyHelpers.TranslationHelpers.translatable
|
|
|
|
/*
|
|
* Allows recipes with buckets to accept all fluid containers.
|
|
* Also adds other misc. fluid crafting recipes.
|
|
*/
|
|
|
|
/* Starter OreDicts */
|
|
ore('dough').add(item('actuallyadditions:item_misc', 4))
|
|
ore('dough').add(item('actuallyadditions:item_misc', 9))
|
|
|
|
/* Existing Replacements (Recipe itself not changed) */
|
|
|
|
/* Water Bucket */
|
|
|
|
// AE2 Cable Cleaning
|
|
var caseConverter = CaseFormat.LOWER_UNDERSCORE.converterTo(CaseFormat.UPPER_CAMEL)
|
|
for (var entry : [0: 'glass', 20: 'covered', 40: 'smart', 60: 'dense_smart', 500: 'dense_covered']) {
|
|
var cables = ore("ae2Colored${caseConverter.convert(entry.value)}Cable")
|
|
var output = item('appliedenergistics2:part', entry.key + 16)
|
|
|
|
for (var meta : entry.key..entry.key + 15) {
|
|
cables.add(item('appliedenergistics2:part', meta))
|
|
}
|
|
|
|
crafting.remove("appliedenergistics2:network/cables/${entry.value}_fluix_clean")
|
|
crafting.shapelessBuilder()
|
|
.output(output)
|
|
.input(cables, fluidIng(fluid('water')))
|
|
.setInputTooltip(1, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.register()
|
|
}
|
|
|
|
// Paper
|
|
crafting.remove('thermalfoundation:paper')
|
|
crafting.shapelessBuilder()
|
|
.output(item('minecraft:paper') * 2)
|
|
.input(ore('dustWood'), ore('dustWood'), ore('dustWood'), ore('dustWood'), fluidIng(fluid('water')))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.register()
|
|
|
|
// Podzol
|
|
crafting.remove('thermalfoundation:block_podzol')
|
|
crafting.shapelessBuilder()
|
|
.output(item('minecraft:dirt', 2))
|
|
.input(ore('treeLeaves'), ore('treeLeaves'), item('minecraft:dirt', 1),
|
|
item('thermalfoundation:fertilizer', 1), fluidIng(fluid('water')))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.register()
|
|
|
|
// Mycelium
|
|
crafting.remove('thermalfoundation:block_mycelium')
|
|
crafting.shapelessBuilder()
|
|
.output(item('minecraft:mycelium'))
|
|
.input(item('minecraft:brown_mushroom'), item('minecraft:red_mushroom'), item('minecraft:dirt', 1),
|
|
item('thermalfoundation:fertilizer', 1), fluidIng(fluid('water')))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.register()
|
|
|
|
// Little Tiles Water
|
|
crafting.shapelessBuilder()
|
|
.output(item('littletiles:lttransparentcoloredblock', 5) * 2)
|
|
.input(fluidIng(fluid('water')), fluidIng(fluid('water')))
|
|
.setInputTooltip(0, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.setInputTooltip(1, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.replace().register()
|
|
|
|
// Waterstone
|
|
crafting.shapedBuilder()
|
|
.output(item('chisel:waterstone') * 8)
|
|
.matrix('AAA', 'ABA', 'AAA')
|
|
.key('A', item('minecraft:stone'))
|
|
.key('B', fluidIng(fluid('water')))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.replace().register()
|
|
|
|
// Water Mob Filter
|
|
crafting.remove('darkutils:filter_water')
|
|
crafting.shapedBuilder()
|
|
.output(item('darkutils:filter', 5) * 4)
|
|
.matrix('ABA', 'BCB', 'ABA')
|
|
.key('A', ore('fenceGateWood'))
|
|
.key('B', ore('stone'))
|
|
.key('C', fluidIng(fluid('water')))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.register()
|
|
|
|
// Rice Slimeball
|
|
crafting.remove('actuallyadditions:recipes24')
|
|
crafting.shapedBuilder()
|
|
.output(item('actuallyadditions:item_misc', 12) * 4)
|
|
.matrix(' A ', 'ABA', ' A ')
|
|
.key('A', item('actuallyadditions:item_misc', 9))
|
|
.key('B', fluidIng(fluid('water')))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.register()
|
|
|
|
// Ring of Liquid Banning
|
|
crafting.shapedBuilder()
|
|
.output(item('actuallyadditions:item_water_removal_ring'))
|
|
.matrix('ABA', 'BCB', 'ABA')
|
|
.key('A', fluidIng(fluid('water')))
|
|
.key('B', item('actuallyadditions:item_crystal_empowered', 2))
|
|
.key('C', item('actuallyadditions:item_misc', 6))
|
|
.setInputTooltip(0, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.setInputTooltip(2, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.setInputTooltip(6, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.setInputTooltip(8, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.replace().register()
|
|
|
|
// Red Machine -> Blank Machine
|
|
crafting.remove('enderio:deco_block_1_1_f')
|
|
crafting.shapelessBuilder()
|
|
.output(item('enderio:block_decoration1', 1))
|
|
.input(item('enderio:block_decoration1', 13), fluidIng(fluid('water')))
|
|
.setInputTooltip(1, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.register()
|
|
|
|
// Hard Mode Recipes
|
|
if (LabsModeHelper.expert) {
|
|
// Paper
|
|
crafting.remove('gregtech:paper')
|
|
crafting.shapedBuilder()
|
|
.output(item('minecraft:paper') * 2)
|
|
.matrix(' M ', 'DDD', ' W ')
|
|
.key('M', ore('toolMallet'))
|
|
.key('D', ore('dustPaper'))
|
|
.key('W', fluidIng(fluid('water')))
|
|
.setInputTooltip(7, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.register()
|
|
|
|
// Bricks
|
|
crafting.remove('gregtech:brick_from_water')
|
|
crafting.shapedBuilder()
|
|
.output(item('minecraft:brick_block') * 2)
|
|
.matrix('BBB', 'BWB', 'BBB')
|
|
.key('B', item('minecraft:brick'))
|
|
.key('W', fluidIng(fluid('water')))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.register()
|
|
|
|
// Concrete Bucket recipe is changed, see below
|
|
}
|
|
|
|
/* Lava Bucket */
|
|
|
|
// Little Tiles Lava
|
|
crafting.shapelessBuilder()
|
|
.output(item('littletiles:ltcoloredblock', 12))
|
|
.input(fluidIng(fluid('lava')))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('lava')))
|
|
.replace().register()
|
|
|
|
// Lavastone
|
|
crafting.shapedBuilder()
|
|
.output(item('chisel:lavastone') * 8)
|
|
.matrix('AAA', 'ABA', 'AAA')
|
|
.key('A', item('minecraft:stone'))
|
|
.key('B', fluidIng(fluid('lava')))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('lava')))
|
|
.replace().register()
|
|
|
|
// Nullifier
|
|
crafting.removeByOutput(item('thermalexpansion:device', 1))
|
|
crafting.shapedBuilder()
|
|
.output(item('thermalexpansion:device', 1)
|
|
.withNbt(['Facing': (byte) 3, 'SideCache': [(byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1],
|
|
'RSControl': (byte) 0, 'Energy': 0]))
|
|
.matrix(' A ', 'BCB', 'DED')
|
|
.key('A', fluidIng(fluid('lava')))
|
|
.key('B', item('minecraft:brick_block'))
|
|
.key('C', item('thermalexpansion:frame', 64))
|
|
.key('D', ore('gearIron'))
|
|
.key('E', item('thermalfoundation:material', 512))
|
|
.setInputTooltip(1, IngredientFluidBucket.getInputTooltip(fluid('lava')))
|
|
.register()
|
|
|
|
// Void Satchel
|
|
crafting.shapedBuilder()
|
|
.output(item('thermalexpansion:satchel', 100))
|
|
.matrix(' A ', 'BCB', 'A A')
|
|
.key('A', item('minecraft:leather'))
|
|
.key('B', ore('stone'))
|
|
.key('C', fluidIng(fluid('lava')))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('lava')))
|
|
.replace().register()
|
|
|
|
/* Milk Bucket */
|
|
|
|
// White Water
|
|
crafting.shapelessBuilder()
|
|
.output(item('littletiles:lttransparentcoloredblock', 6))
|
|
.input(fluidIng(fluid('milk')), item('littletiles:lttransparentcoloredblock', 5))
|
|
.setInputTooltip(0, IngredientFluidBucket.getInputTooltip(fluid('milk')))
|
|
.replace().register()
|
|
|
|
// White Lava
|
|
crafting.shapelessBuilder()
|
|
.output(item('littletiles:ltcoloredblock', 14))
|
|
.input(fluidIng(fluid('milk')), item('littletiles:ltcoloredblock', 12))
|
|
.setInputTooltip(0, IngredientFluidBucket.getInputTooltip(fluid('milk')))
|
|
.replace().register()
|
|
|
|
// Pet Mob Filter
|
|
crafting.remove('darkutils:filter_pet')
|
|
crafting.shapedBuilder()
|
|
.output(item('darkutils:filter', 7) * 4)
|
|
.matrix('ABA', 'BCB', 'ABA')
|
|
.key('A', ore('fenceGateWood'))
|
|
.key('B', ore('stone'))
|
|
.key('C', fluidIng(fluid('milk')))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('milk')))
|
|
.register()
|
|
|
|
// Chocolate Coin
|
|
crafting.shapelessBuilder()
|
|
.output(metaitem('coin.chocolate'))
|
|
.input(ore('dustCocoa'), ore('foilGold'), fluidIng(fluid('milk')), ore('dustSugar'))
|
|
.setInputTooltip(3, IngredientFluidBucket.getInputTooltip(fluid('milk')))
|
|
.replace().register()
|
|
|
|
// Cheese
|
|
crafting.shapelessBuilder()
|
|
.output(item('actuallyadditions:item_food'))
|
|
.input(fluidIng(fluid('milk')), ore('egg'))
|
|
.setInputTooltip(0, IngredientFluidBucket.getInputTooltip(fluid('milk')))
|
|
.replace().register()
|
|
|
|
// Chocolate
|
|
crafting.shapedBuilder()
|
|
.output(item('actuallyadditions:item_food', 9) * 3)
|
|
.matrix('C C', 'CMC', 'C C')
|
|
.key('C', item('minecraft:dye', 3))
|
|
.key('M', fluidIng(fluid('milk')))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('milk')))
|
|
.replace().register()
|
|
|
|
// Chocolate Cake
|
|
crafting.shapedBuilder()
|
|
.output(item('actuallyadditions:item_food', 8))
|
|
.matrix('MMM', 'CCC', 'EDS')
|
|
.key('M', fluidIng(fluid('milk')))
|
|
.key('C', item('minecraft:dye', 3))
|
|
.key('E', ore('egg'))
|
|
.key('D', ore('dough'))
|
|
.key('S', ore('dustSugar'))
|
|
.setInputTooltip(0, IngredientFluidBucket.getInputTooltip(fluid('milk')))
|
|
.setInputTooltip(1, IngredientFluidBucket.getInputTooltip(fluid('milk')))
|
|
.setInputTooltip(2, IngredientFluidBucket.getInputTooltip(fluid('milk')))
|
|
.replace().register()
|
|
|
|
/* Misc */
|
|
|
|
// Treated Wood
|
|
crafting.shapedBuilder()
|
|
.output(item('gregtech:planks', 1) * 8)
|
|
.matrix('AAA', 'ABA', 'AAA')
|
|
.key('A', ore('plankWood'))
|
|
.key('B', fluidIng(fluid('creosote')))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('creosote')))
|
|
.replace().register()
|
|
|
|
// Torch
|
|
crafting.shapedBuilder()
|
|
.output(item('minecraft:torch') * 16)
|
|
.matrix('AB', 'C ')
|
|
.key('A', ore('wool'))
|
|
.key('B', fluidIng(fluid('creosote')))
|
|
.key('C', ore('stick'))
|
|
.setInputTooltip(1, IngredientFluidBucket.getInputTooltip(fluid('creosote')))
|
|
.replace().register()
|
|
|
|
// Concrete Cell + Firebricks
|
|
if (LabsModeHelper.expert) {
|
|
crafting.shapedBuilder()
|
|
.output(IngredientFluidBucket.fillStack(metaitem('fluid_cell'), fluid('concrete') * 1000))
|
|
.matrix('ABC', 'ADE', ' F ')
|
|
.key('A', ore('dustCalcite'))
|
|
.key('B', metaitem('fluid_cell'))
|
|
.key('C', ore('dustStone'))
|
|
.key('D', fluidIng(fluid('water')))
|
|
.key('E', ore('dustQuartzSand'))
|
|
.key('F', ore('dustClay'))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.replace().register()
|
|
|
|
crafting.shapedBuilder()
|
|
.output(item('gregtech:metal_casing', 1))
|
|
.matrix('BGB', 'BCB', 'BGB')
|
|
.key('B', metaitem('brick.fireclay'))
|
|
.key('G', ore('dustGypsum'))
|
|
.key('C', fluidIng(fluid('concrete')))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('concrete')))
|
|
.replace().register()
|
|
}
|
|
|
|
/* New Recipes */
|
|
|
|
if (LabsModeHelper.normal) {
|
|
// Dust -> Clay
|
|
crafting.shapelessBuilder()
|
|
.output(item('minecraft:clay'))
|
|
.input(item('nomilabs:block_dust'), fluidIng(fluid('water')))
|
|
.setInputTooltip(1, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.register()
|
|
}
|
|
|
|
// NC Water Source
|
|
crafting.shapedBuilder()
|
|
.output(item('nuclearcraft:water_source'))
|
|
.matrix('AAA', 'B B', 'AAA')
|
|
.key('A', LabsModeHelper.expert ? ore('plateDoubleSteel') : ore('plateWroughtIron'))
|
|
.key('B', fluidIng(fluid('water')))
|
|
.setInputTooltip(3, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.setInputTooltip(5, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.replace().register()
|
|
|
|
// NC Cobblestone Generator
|
|
crafting.shapedBuilder()
|
|
.output(item('nuclearcraft:cobblestone_generator'))
|
|
.matrix('AAA', 'B C', 'AAA')
|
|
.key('A', LabsModeHelper.expert ? ore('plateBlackSteel') : ore('plateWroughtIron'))
|
|
.key('B', fluidIng(fluid('water')))
|
|
.key('C', fluidIng(fluid('lava')))
|
|
.setInputTooltip(3, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.setInputTooltip(5, IngredientFluidBucket.getInputTooltip(fluid('lava')))
|
|
.setOutputTooltip(translatable('nomiceu.tooltip.mixed.mirrorable'))
|
|
.replace().mirrored().register()
|
|
|
|
// Lava Factory
|
|
crafting.shapedBuilder()
|
|
.output(item('actuallyadditions:block_lava_factory_controller'))
|
|
.matrix('ABA', 'CDC')
|
|
.key('A', item('actuallyadditions:item_misc', 8)) // Advanced Coil
|
|
.key('B', item('actuallyadditions:block_misc', 7)) // Lava Factory Casing
|
|
.key('C', fluidIng(fluid('lava')))
|
|
.key('D', item('morefurnaces:furnaceblock', 3)) // Obsidian Furnace
|
|
.setInputTooltip(6, IngredientFluidBucket.getInputTooltip(fluid('lava')))
|
|
.setInputTooltip(8, IngredientFluidBucket.getInputTooltip(fluid('lava')))
|
|
.replace().register()
|
|
|
|
// Pyroclastic Injection
|
|
crafting.shapedBuilder()
|
|
.output(item('thermalexpansion:augment', 496))
|
|
.matrix('ABA', 'BCB', 'ABA')
|
|
.key('A', ore('ingotMithril'))
|
|
.key('B', ore('plateMithril'))
|
|
.key('C', fluidIng(fluid('water')))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.replace().register()
|
|
|
|
// Obsidian Quick Craft
|
|
crafting.shapelessBuilder()
|
|
.output(item('minecraft:obsidian'))
|
|
.input(fluidIng(fluid('water')), fluidIng(fluid('lava')))
|
|
.setInputTooltip(0, IngredientFluidBucket.getInputTooltip(fluid('water')))
|
|
.setInputTooltip(1, IngredientFluidBucket.getInputTooltip(fluid('lava')))
|
|
.register()
|
|
|
|
// Cake Base
|
|
crafting.shapedBuilder()
|
|
.output(item('enderio:item_material', 70))
|
|
.matrix('SMS', 'DDD')
|
|
.key('S', ore('dustSugar'))
|
|
.key('M', fluidIng(fluid('milk')))
|
|
.key('D', ore('dough'))
|
|
.setInputTooltip(4, IngredientFluidBucket.getInputTooltip(fluid('milk')))
|
|
.replace().register()
|
|
|
|
// Cake
|
|
crafting.shapedBuilder()
|
|
.output(item('minecraft:cake'))
|
|
.matrix('BBB', 'SES', 'DDD')
|
|
.key('B', fluidIng(fluid('milk')))
|
|
.key('S', ore('dustSugar'))
|
|
.key('E', ore('egg'))
|
|
.key('D', ore('dough'))
|
|
.setInputTooltip(0, IngredientFluidBucket.getInputTooltip(fluid('milk')))
|
|
.setInputTooltip(1, IngredientFluidBucket.getInputTooltip(fluid('milk')))
|
|
.setInputTooltip(2, IngredientFluidBucket.getInputTooltip(fluid('milk')))
|
|
.replace().register()
|
|
|
|
/* Classes and Helpers */
|
|
|
|
// IIngredient Class that Matches Based on FluidStack in Containers
|
|
class IngredientFluidBucket extends SimpleIIngredient {
|
|
public static final AMOUNT = 1000
|
|
// Example Fills (excludes bucket)
|
|
private static final List<ItemStack> fillables = [
|
|
metaitem('fluid_cell'),
|
|
metaitem('fluid_cell.universal'),
|
|
metaitem('nomilabs:bronze_cell'),
|
|
metaitem('large_fluid_cell.steel'),
|
|
metaitem('large_fluid_cell.aluminium'),
|
|
metaitem('large_fluid_cell.stainless_steel'),
|
|
metaitem('large_fluid_cell.titanium'),
|
|
metaitem('large_fluid_cell.tungstensteel'),
|
|
metaitem('fluid_cell.glass_vial'),
|
|
metaitem('drum.bronze'),
|
|
metaitem('drum.gold'),
|
|
metaitem('drum.steel'),
|
|
metaitem('drum.aluminium'),
|
|
metaitem('drum.stainless_steel'),
|
|
metaitem('drum.titanium'),
|
|
metaitem('drum.tungstensteel'),
|
|
item('enderio:block_tank'),
|
|
item('enderio:block_tank', 1),
|
|
item('thermalexpansion:tank').withNbt(['RSControl': (byte) 0, 'Creative': (byte) 0, 'Level': (byte) 0]),
|
|
item('thermalexpansion:tank').withNbt(['RSControl': (byte) 0, 'Creative': (byte) 0, 'Level': (byte) 1]),
|
|
item('thermalexpansion:tank').withNbt(['RSControl': (byte) 0, 'Creative': (byte) 0, 'Level': (byte) 2]),
|
|
item('thermalexpansion:tank').withNbt(['RSControl': (byte) 0, 'Creative': (byte) 0, 'Level': (byte) 3]),
|
|
item('thermalexpansion:tank').withNbt(['RSControl': (byte) 0, 'Creative': (byte) 0, 'Level': (byte) 4]),
|
|
]
|
|
|
|
private final FluidStack stack
|
|
private final ItemStack[] matchingStacks
|
|
|
|
IngredientFluidBucket(FluidStack stack) {
|
|
this.stack = stack * AMOUNT
|
|
|
|
List<ItemStack> matchingStacks = [FluidUtil.getFilledBucket(this.stack)]
|
|
|
|
for (ItemStack fill : fillables) {
|
|
var toFill = fill.copy()
|
|
|
|
var handler = getHandler(toFill)
|
|
if (handler == null) continue
|
|
|
|
int capacity = handler.tankProperties[0].capacity
|
|
if (capacity <= 0) capacity = AMOUNT
|
|
|
|
int filled = handler.fill(stack * capacity, true)
|
|
|
|
if (filled == capacity)
|
|
matchingStacks.add(toFill)
|
|
}
|
|
|
|
this.matchingStacks = matchingStacks.toArray()
|
|
}
|
|
|
|
@Override
|
|
ItemStack[] getMatchingStacks() { return matchingStacks }
|
|
|
|
@Override
|
|
boolean test(ItemStack itemStack) {
|
|
var handler = getHandler(itemStack)
|
|
|
|
if (handler == null) return false
|
|
|
|
FluidStack drained = handler.drain(stack, false)
|
|
return drained != null && drained.amount >= AMOUNT && drained.isFluidEqual(stack)
|
|
}
|
|
|
|
@Override
|
|
ItemStack applyTransform(ItemStack matchedInput) {
|
|
matchedInput = matchedInput.copy()
|
|
|
|
if (matchedInput.getItem().hasContainerItem(matchedInput))
|
|
return super.applyTransform(matchedInput)
|
|
|
|
var handler = getHandler(matchedInput)
|
|
if (handler == null) return super.applyTransform(matchedInput)
|
|
handler.drain(stack, true)
|
|
|
|
return handler.getContainer() * 1
|
|
}
|
|
|
|
static ItemStack fillStack(ItemStack itemStack, FluidStack fluidStack) {
|
|
var toFill = itemStack.copy()
|
|
getHandler(toFill)?.fill(fluidStack, true)
|
|
return toFill
|
|
}
|
|
|
|
static IFluidHandlerItem getHandler(ItemStack itemStack) {
|
|
if (itemStack.isEmpty()) return null
|
|
|
|
IFluidHandlerItem handler = null
|
|
if (itemStack.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null)) {
|
|
if (itemStack.getCount() > 1) {
|
|
itemStack = itemStack.copy()
|
|
itemStack.setCount(1)
|
|
}
|
|
handler = itemStack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null)
|
|
}
|
|
return handler
|
|
}
|
|
|
|
static Translatable[] getInputTooltip(FluidStack fluidStack) {
|
|
return new Translatable[] {
|
|
new TranslatableFluidTooltip(fluidStack.fluid),
|
|
translatable('nomiceu.tooltip.mixed.accepts_fluid_container')
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Simple wrapper class so we can use translated name of fluid in tooltip
|
|
*/
|
|
class TranslatableFluidTooltip extends Translatable {
|
|
Fluid fluid
|
|
|
|
TranslatableFluidTooltip(Fluid fluid) {
|
|
super('nomiceu.tooltip.mixed.accepts_fluid')
|
|
this.fluid = fluid
|
|
}
|
|
|
|
@Override
|
|
protected String translateThis() {
|
|
String fluidName = translate(fluid.unlocalizedName)
|
|
return translate(key, fluidName)
|
|
}
|
|
}
|
|
|
|
static IngredientFluidBucket fluidIng(FluidStack stack) {
|
|
return new IngredientFluidBucket(stack)
|
|
}
|