Integer Limit 86cb1fbf85
Allow Usage of Fluid Containers in Crafting (#1142)
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]
2024-12-11 09:11:28 +11:00

129 lines
4.7 KiB
Groovy

import net.minecraft.item.EnumDyeColor
import net.minecraft.item.ItemStack
import static com.nomiceu.nomilabs.groovy.GroovyHelpers.NBTClearingRecipeHelpers.*
import static com.nomiceu.nomilabs.groovy.GroovyHelpers.TooltipHelpers.*
import static com.nomiceu.nomilabs.groovy.GroovyHelpers.TranslationHelpers.*
import static com.nomiceu.nomilabs.groovy.NBTClearingRecipe.CAN_CLEAR_TOOLTIP
import static com.nomiceu.nomilabs.groovy.NBTClearingRecipe.WARNING_TOOLTIP
import static gregtech.common.metatileentities.MetaTileEntities.*
// NBT Clearing Recipes
nbtClearingRecipe(item('minecraft:water_bucket'), item('minecraft:bucket'))
nbtClearingRecipe(item('minecraft:lava_bucket'), item('minecraft:bucket'))
nbtClearingRecipe(item('forge:bucketfilled'), item('minecraft:bucket'))
// Shulker Boxes
for (def color : EnumDyeColor.values()) {
nbtClearingRecipe(item("minecraft:${color.name}_shulker_box"))
}
// GT Crates
for (def material : ["wood", "bronze", "steel", "aluminium", "stainless_steel", "titanium", "tungstensteel"]) {
nbtClearingRecipe(metaitem("crate.${material}"))
}
// NC Coolers
for (def meta : 1..15) {
nbtClearingRecipe(item('nuclearcraft:cooler', meta), item('nuclearcraft:cooler'),
translatable('nomiceu.tooltip.nc.nbt_clearing.cooler.can_clear'),
translatable('nomiceu.tooltip.nc.nbt_clearing.cooler.warning'))
}
// Bronze Cell
nbtClearingRecipe(metaitem('nomilabs:bronze_cell'))
/* Drawers */
// Add empty can clear tooltip, as we want to add multiple lines
var empty = translatableEmpty()
List<ItemStack> canClearDrawers = []
// Wooden Type Drawers
for (def meta : 0..4) {
nbtClearingRecipe(item('storagedrawers:basicdrawers', meta), {
var tag = transferSubTags(it, 'material')
it.tagCompound = transferDrawerUpgradeData(it, tag)
}, empty, WARNING_TOOLTIP)
canClearDrawers.add(item('storagedrawers:basicdrawers', meta))
}
var normalClearer = { ItemStack it ->
it.tagCompound = transferDrawerUpgradeData(it, null)
}
// GregTech Drawers
for (def meta : 0..4) {
nbtClearingRecipe(item('gregtechdrawers:basicdrawers_gregtech_rubber_wood', meta), normalClearer,
empty, WARNING_TOOLTIP)
nbtClearingRecipe(item('gregtechdrawers:basicdrawers_gregtech_treated_wood', meta), normalClearer,
empty, WARNING_TOOLTIP)
canClearDrawers.add(item('gregtechdrawers:basicdrawers_gregtech_rubber_wood', meta))
canClearDrawers.add(item('gregtechdrawers:basicdrawers_gregtech_treated_wood', meta))
}
// Compacting Drawers
nbtClearingRecipe(item('storagedrawers:compdrawers'), normalClearer, empty, WARNING_TOOLTIP)
canClearDrawers.add(item('storagedrawers:compdrawers'))
/* Framed Drawer Like */
def framedClearer = { ItemStack it ->
var tag = transferSubTags(it, 'MatS', 'MatT', 'MatF')
it.tagCompound = transferDrawerUpgradeData(it, tag)
}
// Framed Drawers
for (def meta : 0..4) {
nbtClearingRecipe(item('storagedrawers:customdrawers', meta), framedClearer, empty, WARNING_TOOLTIP)
canClearDrawers.add(item('storagedrawers:customdrawers', meta))
}
// Framed Compacting Drawers
nbtClearingRecipe(item('framedcompactdrawers:framed_compact_drawer'), framedClearer, empty, WARNING_TOOLTIP)
canClearDrawers.add(item('framedcompactdrawers:framed_compact_drawer'))
for (var canClear : canClearDrawers) {
addTooltip(canClear, [translatable('nomiceu.tooltip.drawers.nbt_clearing.drawers.can_clear.1'),
translatable('nomiceu.tooltip.drawers.nbt_clearing.drawers.can_clear.2')])
}
// Thermal Portable Tanks
nbtClearingRecipe(item('thermalexpansion:tank'), {
it.tagCompound = transferSubTags(it, 'Creative', 'Level', 'RSControl')
})
// Tooltips for Other Clearable Containers
List<ItemStack> clearableContainers = []
// Super/Quantum Chests & Tanks
clearableContainers.addAll(QUANTUM_CHEST.collect {it.getStackForm() })
clearableContainers.addAll(QUANTUM_TANK.collect {it.getStackForm() })
// Drums
for (def material : ["wood", "bronze", "steel", "aluminium", "stainless_steel", "titanium", "tungstensteel", "gold"]) {
clearableContainers.add(metaitem("drum.${material}"))
}
// Cells
// Bronze Cell does not need tooltip added, its recipe is added above
// Special Cells
clearableContainers.add(metaitem('fluid_cell'))
clearableContainers.add(metaitem('fluid_cell.universal'))
// Material Cells
for (def material : ["steel", "aluminium", "stainless_steel", "titanium", "tungstensteel"]) {
clearableContainers.add(metaitem("large_fluid_cell.${material}"))
}
// EIO Tanks
// Technically Machines Too... but Not As Useful
clearableContainers.add(item('enderio:block_tank'))
clearableContainers.add(item('enderio:block_tank', 1))
for (def container : clearableContainers) {
addTooltip(container, CAN_CLEAR_TOOLTIP)
}