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

372 lines
12 KiB
Groovy

// SIDE: CLIENT
// ^ Script only runs Client-Side
import appeng.core.AEConfig
import appeng.core.features.AEFeature
import com.nomiceu.nomilabs.config.LabsConfig
import com.nomiceu.nomilabs.util.LabsModeHelper
import mustapelto.deepmoblearning.common.metadata.MetadataLivingMatter
import mustapelto.deepmoblearning.common.metadata.MetadataManager
import net.minecraft.item.ItemStack
import static com.nomiceu.nomilabs.groovy.GroovyHelpers.TooltipHelpers.*
import static com.nomiceu.nomilabs.groovy.GroovyHelpers.TranslationHelpers.*
import classes.postInit.Common
/* Mixed */
// Fillable Items
List<ItemStack> fillable = [
metaitem('fluid_cell'),
metaitem('fluid_cell.universal'),
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('nomilabs:bronze_cell'),
item('minecraft:bucket'),
item('minecraft:water_bucket'),
item('minecraft:lava_bucket'),
item('forge:bucketfilled'),
]
for (ItemStack fill : fillable) {
addTooltip(fill, translatable('nomiceu.tooltip.mixed.fillable'))
}
/* MC */
// XP Bottle
addTooltip(item('minecraft:experience_bottle'), translatable("nomiceu.tooltip.mc.xp_bottle"))
/* Actually Additions */
// Drill Core
addTooltip(item('actuallyadditions:item_misc', 16), translatable('nomiceu.tooltip.actuallyadditions.drill_core.1'))
if (LabsModeHelper.normal) {
addTooltip(item('actuallyadditions:item_misc', 16), [translatableEmpty(), translatable('nomiceu.tooltip.actuallyadditions.drill_core.2')])
}
// Canola
addTooltip(item('actuallyadditions:item_misc', 13), [
translatable('nomiceu.tooltip.actuallyadditions.canola.1'),
translatable('nomiceu.tooltip.actuallyadditions.canola.2'),
])
// Canola Press
addTooltip(item('actuallyadditions:block_canola_press'), translatable('nomiceu.tooltip.actuallyadditions.canola_press'))
// Knife
addTooltip(item('actuallyadditions:item_knife'), translatable('nomiceu.tooltip.actuallyadditions.knife'))
// Solidified XP
addTooltip(item('actuallyadditions:item_solidified_experience'), [
translatable('nomiceu.tooltip.actuallyadditions.solidifed_xp.desc.1'),
translatable('nomiceu.tooltip.actuallyadditions.solidifed_xp.desc.2'),
translatableEmpty(),
translatable("nomiceu.tooltip.actuallyadditions.solidifed_xp.amount"),
])
// Tiny Fuels
var tinyFuels = [
item('actuallyadditions:item_misc', 10), // Tiny Coal
item('actuallyadditions:item_misc', 11), // Tiny Charcoal
]
for (var item : tinyFuels) {
addTooltip(item, translatable("tooltip.nomilabs.tiny_fuels"))
}
/* Advanced Rocketry */
// Orbital Laser Drill
addTooltip(item('advancedrocketry:spacelaser'), [
translatable('nomiceu.tooltip.advancedrocketry.orbital_laser_drill.1'),
translatable('nomiceu.tooltip.advancedrocketry.orbital_laser_drill.2'),
translatable('nomiceu.tooltip.advancedrocketry.orbital_laser_drill.3'),
translatableEmpty(),
translatable('nomiceu.tooltip.advancedrocketry.orbital_laser_drill.4'),
translatable('nomiceu.tooltip.advancedrocketry.orbital_laser_drill.5'),
])
// Basic Lens
addTooltip(item('advancedrocketry:lens'), translatable('nomiceu.tooltip.advancedrocketry.basic_lens'))
/* AE2 & NAE2 */
// AE2 Wireless Crafting Terminal (Old Deprecated Items)
for (ItemStack deprecated : [item('ae2wtlib:infinity_booster_card'), item('wct:wct'), item('wct:magnet_card')]) {
addTooltip(deprecated, [
translatable('nomiceu.tooltip.ae2.crafting_terminal_removal.1'),
translatable('nomiceu.tooltip.ae2.crafting_terminal_removal.2'),
translatable('nomiceu.tooltip.ae2.crafting_terminal_removal.3'),
])
}
// Quantum Link Card
addTooltip(item('appliedenergistics2:material', 59), [
translatable('nomiceu.tooltip.ae2.quantum_link_card.1'),
translatable('nomiceu.tooltip.ae2.quantum_link_card.2'),
])
// Pattern Expansion Card
addTooltip(item('appliedenergistics2:material', 58), translatable('nomiceu.tooltip.ae2.pattern_expansion_card'))
// Crafting Card
addTooltip(item('appliedenergistics2:material', 53), translatable('nomiceu.tooltip.ae2.crafting_card'))
// Acceleration Card
addTooltip(item('appliedenergistics2:material', 30), translatable('nomiceu.tooltip.ae2.acceleration_card'))
// Magnet Card
addTooltip(item('appliedenergistics2:material', 60), translatable('nomiceu.tooltip.ae2.magnet_card'))
// Inverter Card
addTooltip(item('appliedenergistics2:material', 31), translatable('nomiceu.tooltip.ae2.inverter_card'))
// Fuzzy Card
addTooltip(item('appliedenergistics2:material', 29), translatable('nomiceu.tooltip.ae2.fuzzy_card'))
// Capacity Card
addTooltip(item('appliedenergistics2:material', 27), translatable('nomiceu.tooltip.ae2.capacity_card'))
// Redstone Card
addTooltip(item('appliedenergistics2:material', 26), translatable('nomiceu.tooltip.ae2.redstone_card'))
// Sticky Card
addTooltip(item('appliedenergistics2:material', 61), translatable('nomiceu.tooltip.ae2.sticky_card'))
// Hyper Acceleration Card
addTooltip(item('nae2:upgrade'), [
translatable("nomiceu.tooltip.ae2.hyper_acceleration_card.1"),
translatable("nomiceu.tooltip.ae2.hyper_acceleration_card.2")
])
// Pure Certus Quartz
addTooltip(item('appliedenergistics2:material', 10), translatable('nomiceu.tooltip.ae2.pure_certus_quartz'))
// Pure Nether Quartz
addTooltip(item('appliedenergistics2:material', 11), translatable('nomiceu.tooltip.ae2.pure_nether_quartz'))
// Pure Fluix
addTooltip(item('appliedenergistics2:material', 12), translatable('nomiceu.tooltip.ae2.pure_fluix'))
// Charged Certus
addTooltip(item('appliedenergistics2:material', 1), translatable('nomiceu.tooltip.ae2.charged_certus'))
/* P2P Tunnels */
// ME P2P (Special)
// Add a new line after its unique tooltip so it is easier to read the global p2p tooltip
addTooltip(Common.meP2p, [
translatable('nomiceu.tooltip.ae2.p2p.me'),
translatableEmpty(),
translatable('nomiceu.tooltip.ae2.p2p.type', 'ME'),
translatable("nomiceu.tooltip.ae2.p2p.desc"),
])
// Other P2P
for (var item : Common.p2pVariants) {
addTooltip(item.value, [
translatable('nomiceu.tooltip.ae2.p2p.type', item.key),
translatable("nomiceu.tooltip.ae2.p2p.desc"),
])
}
// Dense Cables, Conduits, and Controller
// Only apply tooltip if channels not enabled (manually, by players)
if (!AEConfig.instance().isFeatureEnabled(AEFeature.CHANNELS)) {
// 20..36 = Covered Cables, 40..56 = Smart Cables, 60..76 = Dense Smart Cables, 500..516 = Dense Covered Cables
for (IntRange range : [20..36, 40..56, 60..76, 500..516]) {
for (int meta : range) {
addTooltip(item('appliedenergistics2:part', meta), [
translatable('nomiceu.tooltip.ae2.channels_not_enabled'),
translatable('nomiceu.tooltip.ae2.dense'),
])
}
}
// Dense Conduits
addTooltip(item('enderio:item_me_conduit', 1), [
translatable('nomiceu.tooltip.ae2.channels_not_enabled'),
translatable('nomiceu.tooltip.ae2.dense'),
])
// Controller
addTooltip(item('appliedenergistics2:controller'), [
translatable('nomiceu.tooltip.ae2.channels_not_enabled'),
translatable('nomiceu.tooltip.ae2.controller'),
])
}
// Facades
addTooltip(item('appliedenergistics2:facade'), translatable('nomiceu.tooltip.ae2.facade'))
// Crafting Storages
var craftingStorages = [
item('appliedenergistics2:crafting_storage_1k'),
item('appliedenergistics2:crafting_storage_4k'),
item('appliedenergistics2:crafting_storage_16k'),
item('appliedenergistics2:crafting_storage_64k'),
item('nae2:storage_crafting_256k'),
item('nae2:storage_crafting_1024k'),
item('nae2:storage_crafting_4096k'),
item('nae2:storage_crafting_16384k'),
]
for (ItemStack crafting : craftingStorages) {
addTooltip(crafting, translatable('nomiceu.tooltip.ae2.crafting_storage'))
}
// Storage Cells
var storageCells = [
item('appliedenergistics2:storage_cell_1k'),
item('appliedenergistics2:storage_cell_4k'),
item('appliedenergistics2:storage_cell_16k'),
item('appliedenergistics2:storage_cell_64k'),
item('appliedenergistics2:fluid_storage_cell_1k'),
item('appliedenergistics2:fluid_storage_cell_4k'),
item('appliedenergistics2:fluid_storage_cell_16k'),
item('appliedenergistics2:fluid_storage_cell_64k'),
item('nae2:storage_cell_void'),
item('nae2:fluid_storage_cell_void'),
item('nae2:storage_cell_256k'),
item('nae2:storage_cell_1024k'),
item('nae2:storage_cell_4096k'),
item('nae2:storage_cell_16384k'),
item('nae2:storage_cell_fluid_256k'),
item('nae2:storage_cell_fluid_1024k'),
item('nae2:storage_cell_fluid_4096k'),
item('nae2:storage_cell_fluid_16384k'),
]
for (ItemStack storage : storageCells) {
addTooltip(storage, [
translatableEmpty(),
translatable('nomiceu.tooltip.ae2.storage_cell'),
])
}
// Quartz Knives
for (ItemStack knife : [item('appliedenergistics2:nether_quartz_cutting_knife'), item('appliedenergistics2:certus_quartz_cutting_knife')]) {
addTooltip(knife, translatable('nomiceu.tooltip.ae2.quartz_knife'))
}
// Buses Warning
List<ItemStack> buses = [
item('appliedenergistics2:part', 240), // ME Import Buses
item('appliedenergistics2:part', 241), // ME Fluid Import Buses
item('appliedenergistics2:part', 260), // ME Export Buses
item('appliedenergistics2:part', 261), // ME Fluid Export Buses
]
for (var bus : buses) {
addTooltip(bus, [translatable("nomiceu.tooltip.ae2.buses.warning")])
}
// Storage Exposer Warning
addTooltip(item('nae2:exposer'), [translatableEmpty(), translatable("nomiceu.tooltip.ae2.storage_exposer.warning")])
// Matter Cannon
addTooltip(item('appliedenergistics2:matter_cannon'), [
translatableEmpty(),
translatable("nomiceu.tooltip.ae2.matter_cannon.1"),
translatable("nomiceu.tooltip.ae2.matter_cannon.2"),
translatable("nomiceu.tooltip.ae2.storage_cell_like")
])
// Color Applicator
addTooltip(item('appliedenergistics2:color_applicator'), [
translatableEmpty(),
translatable("nomiceu.tooltip.ae2.color_applicator.1"),
translatable("nomiceu.tooltip.ae2.storage_cell_like")
])
// Tiny TNT
addTooltip(item('appliedenergistics2:tiny_tnt'), [
translatable("nomiceu.tooltip.ae2.tiny_tnt.1"),
translatable("nomiceu.tooltip.ae2.tiny_tnt.2"),
translatable("nomiceu.tooltip.ae2.tiny_tnt.3"),
])
/* Dimensional Edibles */
// Island Cake
addTooltip(item('dimensionaledibles:island_cake'), [
translatable('nomiceu.tooltip.dimensionaledibles.island_cake.1'),
translatable('nomiceu.tooltip.dimensionaledibles.island_cake.2'),
])
/* Dark Utils */
// Ender Tether
addTooltip(item('darkutils:ender_tether'), translatable('nomiceu.tooltip.darkutils.ender_tether'))
/* Deep Mob Evolution */
// Glitch Fragment
addTooltip(item('deepmoblearning:glitch_fragment'), translatable('nomiceu.tooltip.dme.glitch_fragment'))
// Matter
for (MetadataLivingMatter matter : MetadataManager.livingMatterMetadataList) {
// XP is as a Percent of One Level
int xpPercent = (matter.xpValue / LabsConfig.advanced.otherModsLinearXp) * 100
if (xpPercent == 100)
addTooltip(matter.itemStack, translatable('nomiceu.tooltip.dme.matter.full_level'))
else
addTooltip(matter.itemStack, translatable('nomiceu.tooltip.dme.matter', xpPercent))
}
/* Thermal Expansion */
// Capacitors
for (int meta in 0..5) {
addTooltip(item('thermalexpansion:capacitor', meta), translatable('nomiceu.tooltip.thermalexpansion.capacitors'))
}
/* GregTech */
// Prospectors
for (ItemStack prospector in [metaitem('prospector.lv'), metaitem('prospector.hv'), metaitem('prospector.luv')]) {
addTooltip(prospector, [
translatableEmpty(),
translatable('nomiceu.tooltip.gregtech.prospector.1'),
translatable('nomiceu.tooltip.gregtech.prospector.2'),
translatable('nomiceu.tooltip.gregtech.prospector.3'),
translatable('nomiceu.tooltip.gregtech.prospector.4'),
])
}
// Facades
addTooltip(metaitem('cover.facade'), [
translatable('nomiceu.tooltip.gregtech.facade')
])
/* Ender IO */
// Glasses
addTooltip(item('enderio:block_fused_glass'), translatable('nomiceu.tooltip.eio.fused_glass.make'))
for (ItemStack stack in Common.eioGlasses) {
addTooltip(stack, translatable('nomiceu.tooltip.eio.glass.dye'))
}
// Facades
List<ItemStack> facades = [
item('enderio:item_conduit_facade'),
item('enderio:item_conduit_facade', 1),
item('enderio:item_conduit_facade', 2),
item('enderio:item_conduit_facade', 3),
]
for (ItemStack facade : facades) {
addTooltip(facade, [translatableEmpty(), translatable("nomiceu.tooltip.eio.facade")])
}
/* Project Red */
// Transmission Wire
addTooltip(item('projectred-transmission:wire'), translatable('nomiceu.tooltip.projectred.wire'))
/* XTones */
// Lamp
addTooltip(item('xtones:lamp_flat'), translatable('nomiceu.tooltip.xtones.lamp'))