This PR allows the usage of any fluid container, such as GT cells and drums, or EIO portable tanks, or Thermal portable tanks, in crafting recipes involving buckets. This is done through mass recipe replacing, replacing ingredients with a custom 'fluid bucket ingredient'. This ingredient also displays some options for containers in JEI, allowing for crafting auto-fill. Some recipes have been changed: - Cake + Cake Base + Chocolate Cake now supports dough or rice dough - Cake + Cake Base no longer allow using unfilled buckets - Concrete Bucket (for Firebricks Recipe) change: - Now makes Concrete Cell (Iron) - Takes a cell as input, and any fluid container (for water) as input - New Recipe: Water + Lava = Obsidian Reviewers: - Anything else we should add to the display list? Should we remove something? - Any recipes that are not replaced? - Check for bugs involving crafting, e.g. crash, dupe, unexpected behaviours. [EXPAND] [[messages]] messageBody = ''' [FEATURE] [DETAILS] details = [ "Allows using ANY Fluid Container (GT Drums/Cells, EIO Tanks, Thermal Tanks, etc.) in Crafting Recipes, Substituting Filled Buckets", "Also adds Crafting Recipe for Obsidian (Water + Lava)" ] [DETAILS] ''' [[messages]] messageTitle = "Revamp Concrete Bucket Crafting Recipe" messageBody = ''' [BALANCING] [HM] [DETAILS] detail = "Now takes an Empty Cell as Input, and outputs a Filled Cell" [DETAILS] ''' [EXPAND]
364 lines
10 KiB
Groovy
364 lines
10 KiB
Groovy
import com.cleanroommc.groovyscript.helper.ingredient.OreDictIngredient
|
|
import net.minecraft.item.ItemStack
|
|
|
|
import static gregtech.api.GTValues.*
|
|
|
|
/* Usable Blocks */
|
|
// ME Drive
|
|
crafting.shapedBuilder()
|
|
.output(item('appliedenergistics2:drive'))
|
|
.matrix(
|
|
'PEP',
|
|
'LCL',
|
|
'PSP')
|
|
.key('P', metaitem('plateAluminium'))
|
|
.key('E', metaitem('emitter.mv'))
|
|
.key('L', ore('circuitLv'))
|
|
.key('C', item('appliedenergistics2:chest'))
|
|
.key('S', metaitem('sensor.mv'))
|
|
.replace().register()
|
|
|
|
// ME Inscriber
|
|
crafting.shapedBuilder()
|
|
.output(item('appliedenergistics2:inscriber'))
|
|
.matrix(
|
|
'DPD',
|
|
'FHD',
|
|
'DPD')
|
|
.key('D', metaitem('nomilabs:plateDarkSteel'))
|
|
.key('P', metaitem('electric.piston.mv'))
|
|
.key('F', item('appliedenergistics2:material', 7))
|
|
.key('H', metaitem('hull.mv'))
|
|
.replace().register()
|
|
|
|
// Crafting CPU
|
|
crafting.shapedBuilder()
|
|
.output(item('appliedenergistics2:crafting_unit'))
|
|
.matrix(
|
|
'PCP',
|
|
'FLF',
|
|
'PCP')
|
|
.key('P', metaitem('plateAluminium'))
|
|
.key('C', item('appliedenergistics2:material', 23))
|
|
.key('F', item('appliedenergistics2:part', 16))
|
|
.key('L', item('appliedenergistics2:material', 22))
|
|
.replace().register()
|
|
|
|
// Molecular Assembler
|
|
crafting.shapedBuilder()
|
|
.output(item('appliedenergistics2:molecular_assembler'))
|
|
.matrix(
|
|
'PGP',
|
|
'ACF',
|
|
'PGP')
|
|
.key('P', metaitem('plateAluminium'))
|
|
.key('G', item('appliedenergistics2:quartz_glass'))
|
|
.key('A', item('appliedenergistics2:material', 44))
|
|
.key('C', metaitem('workbench'))
|
|
.key('F', item('appliedenergistics2:material', 43))
|
|
.replace().register()
|
|
|
|
// Matter Condensor
|
|
crafting.shapedBuilder()
|
|
.output(item('appliedenergistics2:condenser'))
|
|
.matrix(
|
|
'PPP',
|
|
'PSP',
|
|
'PPP')
|
|
.key('P', metaitem('plateTitanium'))
|
|
.key('S', metaitem('quantumstar'))
|
|
.replace().register()
|
|
|
|
// Energy Acceptor
|
|
crafting.shapedBuilder()
|
|
.output(item('appliedenergistics2:energy_acceptor'))
|
|
.matrix(
|
|
'PFP',
|
|
'FHF',
|
|
'PFP')
|
|
.key('P', metaitem('nomilabs:plateElectricalSteel'))
|
|
.key('F', item('moreplates:fluix_plate'))
|
|
.key('H', metaitem('hull.lv'))
|
|
.replace().register()
|
|
|
|
// Charger
|
|
crafting.shapedBuilder()
|
|
.output(item('appliedenergistics2:charger'))
|
|
.matrix(
|
|
'DCD',
|
|
'D ',
|
|
'DCD')
|
|
.key('D', metaitem('nomilabs:plateDarkSteel'))
|
|
.key('C', metaitem('plateCertusQuartz'))
|
|
.replace().register()
|
|
|
|
// ME Chest
|
|
crafting.shapedBuilder()
|
|
.output(item('appliedenergistics2:chest'))
|
|
.matrix(
|
|
'GPG',
|
|
'CSF',
|
|
'DQD')
|
|
.key('G', item('appliedenergistics2:quartz_glass'))
|
|
.key('P', item('appliedenergistics2:part', 180))
|
|
.key('C', item('appliedenergistics2:material', 10))
|
|
.key('S', item('actuallyadditions:block_giant_chest'))
|
|
.key('F', item('appliedenergistics2:material', 12))
|
|
.key('D', ore('blockDarkSteel'))
|
|
.key('Q', item('appliedenergistics2:material', 11))
|
|
.replace().register()
|
|
|
|
// Quantum Ring
|
|
crafting.shapedBuilder()
|
|
.output(item('appliedenergistics2:quantum_ring'))
|
|
.matrix(
|
|
'PCP',
|
|
'EQE',
|
|
'PCP')
|
|
.key('P', metaitem('plateStainlessSteel'))
|
|
.key('C', item('appliedenergistics2:material', 23))
|
|
.key('E', item('appliedenergistics2:material', 24))
|
|
.key('Q', metaitem('quantumstar'))
|
|
.replace().register()
|
|
|
|
// Interfaces
|
|
var makeInterface = { String recipeName, OreDictIngredient plate, ItemStack moving, ItemStack interfaceStack ->
|
|
crafting.remove(recipeName)
|
|
crafting.shapedBuilder()
|
|
.output(interfaceStack)
|
|
.matrix(
|
|
'PRP',
|
|
'AMF',
|
|
'PPP')
|
|
.key('P', plate)
|
|
.key('R', moving)
|
|
.key('A', item('appliedenergistics2:material', 44))
|
|
.key('M', metaitem('hull.mv'))
|
|
.key('F', item('appliedenergistics2:material', 43))
|
|
.register()
|
|
}
|
|
|
|
// Interface
|
|
makeInterface('appliedenergistics2:network/blocks/interfaces_interface', ore('plateAluminium'), metaitem('robot.arm.mv'), item('appliedenergistics2:interface'))
|
|
|
|
// Fluid Interface
|
|
makeInterface('appliedenergistics2:network/blocks/fluid_interfaces_interface', ore('plateLapis'), metaitem('electric.pump.mv'), item('appliedenergistics2:fluid_interface'))
|
|
|
|
/* Cables */
|
|
// Quartz Fiber
|
|
crafting.removeByOutput(item('appliedenergistics2:part', 140))
|
|
mods.gregtech.wiremill.recipeBuilder()
|
|
.inputs(item('appliedenergistics2:material', 11))
|
|
.outputs(item('appliedenergistics2:part', 140) * 2)
|
|
.duration(100).EUt(VHA[LV])
|
|
.buildAndRegister()
|
|
|
|
// Glass Cable
|
|
crafting.remove('appliedenergistics2:network/cables/glass_fluix')
|
|
mods.gregtech.alloy_smelter.recipeBuilder()
|
|
.inputs(ore('dustFluix'), item('appliedenergistics2:part', 140))
|
|
.outputs(item('appliedenergistics2:part', 16) * 2)
|
|
.duration(50).EUt(VHA[LV])
|
|
.buildAndRegister()
|
|
|
|
// Covered Cable
|
|
crafting.remove('appliedenergistics2:network/cables/covered_fluix')
|
|
for (var rubber in [fluid('rubber') * 144, fluid('styrene_butadiene_rubber') * 36, fluid('silicone_rubber') * 76]) {
|
|
mods.gregtech.assembler.recipeBuilder()
|
|
.inputs(item('appliedenergistics2:part', 16))
|
|
.fluidInputs(rubber)
|
|
.outputs(item('appliedenergistics2:part', 36))
|
|
.duration(100).EUt(VA[ULV])
|
|
.buildAndRegister()
|
|
}
|
|
|
|
// ME Conduit
|
|
crafting.removeByOutput(item('enderio:item_me_conduit'))
|
|
mods.gregtech.assembler.recipeBuilder()
|
|
.inputs(item('appliedenergistics2:part', 36) * 3, item('enderio:item_material', 4) * 6)
|
|
.outputs(item('enderio:item_me_conduit') * 8)
|
|
.duration(100).EUt(VHA[LV])
|
|
.buildAndRegister()
|
|
|
|
|
|
/* Block Parts */
|
|
/* Planes */
|
|
var makePlane = { OreDictIngredient plate, ItemStack core, ItemStack plane ->
|
|
crafting.shapedBuilder()
|
|
.output(plane)
|
|
.matrix(
|
|
'FFF',
|
|
'PAP')
|
|
.key('F', item('moreplates:fluix_plate'))
|
|
.key('P', plate)
|
|
.key('A', core)
|
|
.replace().register()
|
|
}
|
|
|
|
// Formation Plane
|
|
makePlane(ore('plateAluminium'), item('appliedenergistics2:material', 43), item('appliedenergistics2:part', 320))
|
|
|
|
// Annihilation Plane
|
|
makePlane(ore('plateAluminium'), item('appliedenergistics2:material', 44), item('appliedenergistics2:part', 300))
|
|
|
|
// Fluid Formation Plane
|
|
makePlane(ore('plateLapis'), item('appliedenergistics2:material', 43), item('appliedenergistics2:part', 321))
|
|
|
|
// Fluid Annihilation Plane
|
|
makePlane(ore('plateLapis'), item('appliedenergistics2:material', 44), item('appliedenergistics2:part', 302))
|
|
|
|
/* Level Emitters */
|
|
var makeEmitter = { OreDictIngredient plate, ItemStack emitter ->
|
|
crafting.shapedBuilder()
|
|
.output(emitter)
|
|
.matrix(
|
|
'TP',
|
|
'CR')
|
|
.key('T', item('minecraft:redstone_torch'))
|
|
.key('P', plate)
|
|
.key('C', item('appliedenergistics2:material', 23))
|
|
.key('R', ore('stickStainlessSteel'))
|
|
.replace().register()
|
|
}
|
|
|
|
// Item Emitter
|
|
makeEmitter(ore('plateAluminium'), item('appliedenergistics2:part', 280))
|
|
|
|
// Fluid Emitter
|
|
makeEmitter(ore('plateLapis'), item('appliedenergistics2:part', 281))
|
|
|
|
/* Terminals */
|
|
// ME Terminal
|
|
crafting.shapelessBuilder()
|
|
.output(item('appliedenergistics2:part', 380))
|
|
.input(ore('itemIlluminatedPanel'))
|
|
.input(ore('circuitLv'))
|
|
.replace().register()
|
|
|
|
// Pattern Terminal
|
|
crafting.shapelessBuilder()
|
|
.output(item('appliedenergistics2:part', 340))
|
|
.input(item('appliedenergistics2:material', 24))
|
|
.input(item('appliedenergistics2:part', 380))
|
|
.input(item('appliedenergistics2:material', 52))
|
|
.replace().register()
|
|
|
|
// Fluid Terminal
|
|
crafting.shapelessBuilder()
|
|
.output(item('appliedenergistics2:part', 520))
|
|
.input(item('appliedenergistics2:part', 380))
|
|
.input(metaitem('plateLapis'))
|
|
.input(item('appliedenergistics2:material', 22))
|
|
.replace().register()
|
|
|
|
// Extended Processing Pattern Terminal
|
|
crafting.shapedBuilder()
|
|
.output(item('appliedenergistics2:part', 341))
|
|
.matrix(
|
|
'A',
|
|
'B',
|
|
'C')
|
|
.key('A', item('appliedenergistics2:part', 340))
|
|
.key('B', ore('circuitEv'))
|
|
.key('C', item('packagedauto:encoder'))
|
|
.replace().register()
|
|
|
|
// Configuration Fluid Interface Terminal
|
|
crafting.shapelessBuilder()
|
|
.output(item('appliedenergistics2:part', 522))
|
|
.input(item('appliedenergistics2:part', 520))
|
|
.input(item('appliedenergistics2:material', 24))
|
|
.input(item('appliedenergistics2:fluid_interface').or(item('appliedenergistics2:part', 441)))
|
|
.replace().register()
|
|
|
|
/* Buses */
|
|
var makeImportBus = { OreDictIngredient plate, ItemStack bus ->
|
|
crafting.shapedBuilder()
|
|
.output(bus)
|
|
.matrix(
|
|
' A ',
|
|
'PEP')
|
|
.key('A', item('appliedenergistics2:material', 44))
|
|
.key('P', plate)
|
|
.key('E', metaitem('electric.piston.mv'))
|
|
.replace().register()
|
|
}
|
|
|
|
var makeExportBus = { OreDictIngredient plate, ItemStack bus ->
|
|
crafting.shapedBuilder()
|
|
.output(bus)
|
|
.matrix(
|
|
'PEP',
|
|
' A ')
|
|
.key('P', plate)
|
|
.key('E', item('appliedenergistics2:material', 43))
|
|
.key('A', metaitem('electric.piston.mv'))
|
|
.replace().register()
|
|
}
|
|
|
|
// Import Bus
|
|
makeImportBus(ore('plateAluminium'), item('appliedenergistics2:part', 240))
|
|
|
|
// Fluid Import Bus
|
|
makeImportBus(ore('plateLapis'), item('appliedenergistics2:part', 241))
|
|
|
|
// Export Bus
|
|
makeExportBus(ore('plateAluminium'), item('appliedenergistics2:part', 260))
|
|
|
|
// Fluid Export Bus
|
|
makeExportBus(ore('plateLapis'), item('appliedenergistics2:part', 261))
|
|
|
|
// Storage Bus
|
|
crafting.shapelessBuilder()
|
|
.output(item('appliedenergistics2:part', 220))
|
|
.input(metaitem('electric.piston.mv'), item('appliedenergistics2:interface'))
|
|
.replace().register()
|
|
|
|
// Fluid Storage Bus
|
|
crafting.shapelessBuilder()
|
|
.output(item('appliedenergistics2:part', 221))
|
|
.input(metaitem('electric.pump.mv'), item('appliedenergistics2:fluid_interface'))
|
|
.replace().register()
|
|
|
|
// Oredict Storage Bus
|
|
crafting.shapelessBuilder()
|
|
.output(item('appliedenergistics2:part', 222))
|
|
.input(item('appliedenergistics2:part', 220), metaitem('ore_dictionary_filter'))
|
|
|
|
/* Misc Block Parts */
|
|
// P2P Tunnel
|
|
crafting.shapedBuilder()
|
|
.output(item('appliedenergistics2:part', 460))
|
|
.matrix(
|
|
' P ',
|
|
'PEP',
|
|
'FFF')
|
|
.key('P', metaitem('plateStainlessSteel'))
|
|
.key('E', item('appliedenergistics2:material', 24))
|
|
.key('F', ore('plateFluix'))
|
|
.replace().register()
|
|
|
|
// Illuminated Panel
|
|
crafting.remove('appliedenergistics2:network/parts/panels_semi_dark_monitor')
|
|
crafting.shapedBuilder()
|
|
.output(item('appliedenergistics2:part', 180))
|
|
.matrix(
|
|
'GGG',
|
|
'PPP')
|
|
.key('G', item('appliedenergistics2:quartz_glass'))
|
|
.key('P', item('moreplates:fluix_plate'))
|
|
.register()
|
|
|
|
// Cable Anchor
|
|
crafting.replaceShapeless(item('appliedenergistics2:part', 120), [ore('boltSteel')])
|
|
|
|
/* Misc Blocks */
|
|
// Vibrant Quartz Glass
|
|
crafting.removeByOutput(item('appliedenergistics2:quartz_vibrant_glass'))
|
|
mods.gregtech.alloy_smelter.recipeBuilder()
|
|
.inputs(item('appliedenergistics2:quartz_glass'), ore('ingotVibrantAlloy'))
|
|
.outputs(item('appliedenergistics2:quartz_vibrant_glass'))
|
|
.duration(80).EUt(VHA[LV])
|
|
.buildAndRegister()
|
|
|