Overview#
The Ender Tweaker Mod is a specialized utility for Minecraft designed to bridge the gap between Ender IO and CraftTweaker. While Ender IO provides a robust set of industrial machines, its native recipe system is often difficult to modify via standard configuration files. Ender Tweaker exposes these internal machine registries to ZenScript, allowing modpack creators to add, remove, or modify recipes for the Alloy Smelter, SAG Mill, The Vat, and more.
This mod does not add new blocks, items, or mobs of its own; instead, it serves as a functional layer that grants absolute control over how Ender IO's existing infrastructure processes materials. It is an essential tool for expert-style modpacks where progression requires tightly controlled resource processing.
General Mechanics#
All scripts for Ender Tweaker must be written in .zs files within the scripts folder of your Minecraft instance. The mod uses the mods.enderio handler to interact with specific machines.
Energy and Experience
Most machine methods include optional parameters for energyCost (measured in Forge Energy/FE) and xp (experience points granted upon completion). If these are not specified, the mod typically defaults to a standard value (often 5,000 FE) to ensure compatibility with Ender IO's power systems.
Ingredient Handling
Ender Tweaker supports standard CraftTweaker IIngredient and IItemStack types. For machines like the Alloy Smelter, multiple inputs are handled as arrays (e.g., [<item:minecraft:iron_ingot>, <item:minecraft:coal>]).
Alloy Smelter#
The Alloy Smelter is used to combine up to three items into a single output. It can also function as a standard furnace if configured.
Package: mods.enderio.AlloySmelter
Adding Recipes
mods.enderio.AlloySmelter.addRecipe(IItemStack output, IIngredient[] input, @Optional int energyCost, @Optional float xp);
| Parameter | Type | Description |
|---|---|---|
output |
IItemStack | The resulting item. |
input |
IIngredient[] | Array of 1 to 3 ingredients. |
energyCost |
int | FE required (Default: 5000). |
xp |
float | Experience granted (Must be non-negative). |
Removing Recipes
- By Output:
mods.enderio.AlloySmelter.removeRecipe(IItemStack output);removes all recipes resulting in the specified item. - By Input:
mods.enderio.AlloySmelter.removeByInputs(IItemStack... input);removes recipes matching the specific input combination.
SAG Mill#
The SAG Mill (Suspended Air Grinder) processes items into multiple outputs with varying probabilities. It is heavily influenced by Grinding Balls.
Package: mods.enderio.SagMill
Adding Recipes
There are two ways to define SAG Mill outputs: using separate arrays for items and chances, or using WeightedItemStack.
mods.enderio.SagMill.addRecipe(IItemStack[] output, float[] chances, IIngredient input, @Optional String bonusType, @Optional int energyCost, @Optional float[] xp);
Bonus Types:
"NONE": No bonus from Grinding Balls."MULTIPLY_OUTPUT": Grinding balls can increase the output chance beyond 100%."CHANCE_ONLY": Grinding balls increase chance but cap it at 100%.
Removing Recipes
- By Input:
mods.enderio.SagMill.removeRecipe(IItemStack input);removes the recipe associated with the provided input item.
The Vat#
The Vat is a complex fluid processor that uses multipliers to determine output volume based on the combination of fluids and solid catalysts.
Package: mods.enderio.Vat
Calculation Logic
The Vat uses a multiplier system rather than fixed amounts:
- Input Fluid Used:
slot1Mult * slot2Mult * 1000mB - Output Fluid Created:
inMult * slot1Mult * slot2Mult * 1000mB - Ratio: The ratio of input to output fluid is equal to
inMult.
Adding Recipes
mods.enderio.Vat.addRecipe(ILiquidStack output, float inMult, ILiquidStack input, IIngredient[] slot1Solids, float[] slot1Mults, IIngredient[] slot2Solids, float[] slot2Mults, @Optional int energyCost);
Removing Recipes
- By Output:
mods.enderio.Vat.removeRecipe(ILiquidStack output);removes recipes producing the specified fluid.
Soul Binder#
The Soul Binder transfers souls from Soul Vials into items to create specialized components like Powered Spawners.
Package: mods.enderio.SoulBinder
Adding Recipes
mods.enderio.SoulBinder.addRecipe(IItemStack output, IIngredient input, String[] entities, int xp, @Optional int energyCost);
| Parameter | Type | Description |
|---|---|---|
entities |
String[] | Array of entity resource locations (e.g., ["minecraft:zombie", "minecraft:skeleton"]). |
xp |
int | The cost in player experience levels. |
Removing Recipes
- By Output:
mods.enderio.SoulBinder.removeRecipe(IItemStack output);
Slice'n'Splice#
The Slice'n'Splice uses biological components and tools (Axes and Shears) to create advanced items like Sentient Chassis.
Package: mods.enderio.SliceNSplice
Adding Recipes
mods.enderio.SliceNSplice.addRecipe(IItemStack output, IIngredient[] input, @Optional int energyCost, @Optional float xp);
- Note: The input array must contain between 1 and 6 ingredients. The machine's internal tool slots are handled automatically by Ender IO's logic, but the ingredients provided here represent the items consumed from the input grid.
Removing Recipes
- By Output:
mods.enderio.SliceNSplice.removeRecipe(IItemStack output);
Combustion Generator#
Unlike other machines, the Combustion Generator does not have "recipes." Instead, it uses a registry of Fuels and Coolants.
Package: mods.enderio.CombustionGen
Fuel Management
- Add Fuel:
mods.enderio.CombustionGen.addFuel(ILiquidStack fuel, int powerPerCycleRF, int totalBurnTime);powerPerCycleRF: Energy generated per tick.totalBurnTime: Total ticks one bucket (1000mB) lasts.
- Remove Fuel:
mods.enderio.CombustionGen.removeFuel(ILiquidStack fuel);
Coolant Management
- Add Coolant:
mods.enderio.CombustionGen.addCoolant(ILiquidStack coolant, float degreesCoolingPerMB);degreesCoolingPerMB: How much heat 1mB of coolant absorbs before heating by 1 Kelvin.
- Remove Coolant:
mods.enderio.CombustionGen.removeCoolant(ILiquidStack coolant);
Enchanter#
The Enchanter allows players to create Enchanted Books using items and experience levels.
Package: mods.enderio.Enchanter
Adding Recipes
mods.enderio.Enchanter.addRecipe(IEnchantmentDefinition output, IIngredient input, int amountPerLevel, double costMultiplier);
| Parameter | Type | Description |
|---|---|---|
output |
IEnchantmentDefinition | The enchantment to be applied to the book. |
amountPerLevel |
int | Number of input items required per level of the enchantment. |
costMultiplier |
double | Modifier for the XP cost. |
Removing Recipes
- By Output:
mods.enderio.Enchanter.removeRecipe(IEnchantmentDefinition output);
Fluid Tank#
The Tank can be used to fill or empty fluid containers. Ender Tweaker allows you to define custom interactions for this block.
Package: mods.enderio.Tank
Adding Recipes
mods.enderio.Tank.addRecipe(boolean fill, IIngredient input, ILiquidStack fluid, IItemStack output);
fill: Iftrue, the fluid is consumed from the tank to fill the item (e.g., Bucket + Water -> Water Bucket). Iffalse, the fluid is added to the tank from the item (e.g., Water Bucket -> Bucket + Water in tank).
Removing Recipes
- Remove:
mods.enderio.Tank.removeRecipe(boolean fill, ILiquidStack fluid, IItemStack output);