Skip to content

Recipes060

rlnt edited this page Sep 29, 2024 · 2 revisions

Caution

This recipe overview is only for version v0.6.0 for EnderIO 6.2.0-beta and above. For older versions, check this page.

Basic Recipes

Fire Crafting

Fire Crafting allows you to light a specific block on fire. After a bit of time, the fire will extinguish and the block will spawn items from the specified loot table.
To avoid loot explosions when using a loot table with a lot of items, you can also limit the item amount.

  • access in recipes event via: event.recipes.enderio.fire_crafting
  • parameters:
    • base_blocks
      • required
      • an array of blocks and/or block tags
      • needs to be passed to the function directly
    • loot_table
      • required
      • a single string in the format of a ResourceLocation
      • needs to be passed to the function directly
    • max_item_drops
      • optional, default value: 1000
      • an integer value
      • can be passed to the function directly or chained with .maxItemDrops(int)
    • dimensions
      • optional, default value: "minecraft:overworld"
      • an array of strings in the format of ResourceLocations
      • can be passed to the function directly or chained with .dimension(string) or .dimensions(string[])

Examples

ServerEvents.recipes(event => {

  // removes all fire crafting recipes
  event.remove({ type: "enderio:fire_crafting" });

  // spawns items from the simple_dungeon loot table when igniting dirt or any kind of glass
  // uses a block tag
  // results in a loot explosion because the amount defaults to 1000 and the table is very large
  // limited to the overworld by default
  event.recipes.enderio.fire_crafting(
      ["minecraft:dirt", "#forge:glass"],
      "minecraft:chests/simple_dungeon"
  );

  // spawns items from the simple_dungeon loot table when igniting obsidian
  // limited to 5 item drops
  // limited to the overworld and the nether
  event.recipes.enderio.fire_crafting(
      ["minecraft:obsidian"],
      "minecraft:chests/simple_dungeon",
      5,
      ["minecraft:overworld", "minecraft:the_nether"]
  );

  // spawns items from the simple_dungeon loot table when igniting white wool
  // this example uses the KubeJS block wrapper
  // limited to 3 item drops
  // limited to the overworld and the end
  // uses chaining functions for the max item drops and dimensions
  event.recipes.enderio
      .fire_crafting([Block.id('minecraft:white_wool')], 'minecraft:chests/simple_dungeon')
      .maxItemDrops(3)
      .dimensions(['minecraft:overworld', 'minecraft:end']);
});

Grinding Ball

The Grinding Ball recipe type allows you to define custom grinding balls that are used in the Sag Mill to alter the recipe processing.
The modifiers are passed as floats and internally converted to percentages.

  • access in recipes event via: event.recipes.enderio.grinding_ball
  • parameters:
    • item
      • required
      • an instance of Item or ItemWrapper
      • when using wrappers, only the item ID is used, no amount or NBT support
      • needs to be passed to the function directly
    • grinding
      • defines the chance to double the output
      • optional, default value: 1
      • a float value
      • can be passed to the function directly or chained with .doublingChance(float)
    • chance
      • defines the bonus multiplier
      • optional, default value: 1
      • a float value
      • can be passed to the function directly or chained with .bonusMultiplier(float)
    • power
      • defines the power use multiplier
      • optional, default value: 1
      • a float value
      • can be passed to the function directly or chained with .powerUseMultiplier(float)
    • durability
      • defines the durability of the grinding ball
      • optional, default value: 10
      • an integer value
      • can be passed to the function directly or chained with .durability(int)

Modifier value examples

  • 1.0 = 100% = no change
  • 0.5 = 50% = half the amount
  • 2.0 = 200% = double the amount

Examples

ServerEvents.recipes(event => {

  // removes all grinding ball recipes
  event.remove({ type: "enderio:grinding_ball" });

  // adds a stick as grinding ball
  // uses default values for all modifiers
  // has a durability of 10
  event.recipes.enderio.grinding_ball("stick");

  // adds a potato as grinding ball
  // default output doubling chance
  // bonus multiplier of 2
  // power use multiplier of 2
  // durability of 100
  event.recipes.enderio.grinding_ball("potato", 1, 2, 2, 100);

  // adds a stone as grinding ball
  // output doubling chance of 3
  // bonus multiplier of 2
  // power use multiplier of 2
  // durability of 100
  // uses chaining functions for all modifiers
  event.recipes.enderio.grinding_ball("stone")
    .doublingChance(3)
    .bonusMultiplier(2)
    .powerUseMultiplier(2)
    .durability(100);
});

Machine Recipes

Alloy Smelting

NOTE: The Alloy Smelter (not the primitive version) inherits all vanilla smelting recipes automatically. If you want to remove specific smelting recipes from the Alloy Smelter without removing them from other blocks like the Furnace, you should remove them by their recipe ID. Inherited recipes are always prefixed with smelting/modid/.

ServerEvents.recipes(event => {
  // remove a specific smelting recipe from the Alloy Smelter
  event.remove({ id: 'enderio:smelting/minecraft/stone' });
  // remove all smelting recipes from the Alloy Smelter using regular expressions
  event.remove({ id: /enderio:smelting\/.*/ });
  // remove all smelting recipes of a specific mod from the Alloy Smelter using regular expressions
  event.remove({ id: /enderio:smelting\/thermal\/.*/ });
});
  • access in recipes event via: event.recipes.enderio.alloy_smelting
  • parameters:
    • result
      • required
      • an instance of ItemStack or ItemWrapper
      • needs to be passed to the function directly
    • inputs
      • required
      • an array of IngredientWithCounts
      • needs to be passed to the function directly
    • energy
      • optional, default value: 2000
      • an integer value
      • can be passed to the function directly or chained with .energy(int)
    • experience
      • optional, default value: 0
      • a float value
      • can be passed to the function directly or chained with .experience(float)
    • is_smelting
      • optional, default value: false
      • a boolean value
      • can be passed to the function directly or chained with .smelting()
      • this will always enable the smelting mode
      • to see what the smelting mode does, check the section below the examples

Examples

ServerEvents.recipes(event => {

  // removes all alloy smelting recipes
  event.remove({ type: "enderio:alloy_smelting" });

  // adds a recipe that smelts a gold ingot into an iron ingot
  // uses default values for energy, experience, and smelting mode
  event.recipes.enderio.alloy_smelting(Item.of("minecraft:iron_ingot"), Ingredient.of("minecraft:gold_ingot"));

  // adds a recipe that smelts an iron ingot and a gold ingot into 2 sticks
  // energy usage of 5000
  // experience of 5.5
  event.recipes.enderio.alloy_smelting(
      Item.of("minecraft:stick", 2),
      [Item.of("minecraft:iron_ingot"), Ingredient.of("minecraft:gold_ingot")],
      5000,
      5.5
  );

  // adds a recipe that smelts a carrot, a potato, and 2 apples into a diamond
  // energy usage of 10000
  // experience of 3
  // uses chaining functions for energy and experience
  event.recipes.enderio.alloy_smelting(
      Item.of("minecraft:diamond"),
      [Ingredient.of("minecraft:carrot"), "minecraft:potato", "2x minecraft:apple"]
  ).energy(10000).experience(3);
});

Smelting Mode

The smelting mode of an Alloy Smelter recipe defines if the recipe is inherited from the vanilla smelting recipe type. When a recipe's smelting mode is enabled, it will also have a custom recipe ID that is prefixed with smelting/modid/. This indicates inheritance from vanilla to EnderIO.

When making custom Alloy Smelter recipes with KubeJS, you can use the smelting mode to tell EnderIO to copy the recipe to vanilla. The following example will copy an Alloy Smelter recipe to the vanilla recipe type so it can be used by blocks like the Furnace. It will use the same recipe ID with a _inherited suffix. In order to allow inheritance from KubeJS to vanilla, the recipes must have exactly one input and one output. Recipes with multiple inputs will be ignored.

ServerEvents.recipes(event => {
  event.recipes.enderio.alloy_smelting('minecraft:iron_ingot', 'minecraft:gold_ingot').smelting();
});

Enchanting

NOTE: The Enchanter automatically generates recipes for all levels of the provided enchantment. The cost multiplier is applied to each level of the enchantment.

  • access in recipes event via: event.recipes.enderio.enchanting
  • parameters:
    • enchantment
      • required
      • an instance of Enchantment or a string in the format of a ResourceLocation
      • needs to be passed to the function directly
    • input
      • required
      • an instance of IngredientWithCount
      • needs to be passed to the function directly
    • cost_multiplier
      • optional, default value: 1
      • an integer value
      • can be passed to the function directly or chained with .costMultiplier(int)

Examples

ServerEvents.recipes(event => {

  // removes all enchanting recipes
  event.remove({ type: "enderio:enchanting" });

  // adds a recipe that gives sharpness from granite
  // uses the default value for the cost multiplier
  event.recipes.enderio.enchanting("minecraft:sharpness", "granite");

  // adds a recipe that gives thorns from 5 diorite
  // cost multiplier of 3
  event.recipes.enderio.enchanting("minecraft:thorns", Ingredient.of("diorite", 5), 3);

  // adds a recipe that gives protection from 2 glass blocks
  // cost multiplier of 2
  // uses chaining functions for the cost multiplier
  event.recipes.enderio.enchanting("minecraft:protection", Ingredient.of("glass", 2)).costMultiplier(2);
});

Painting

  • access in recipes event via: event.recipes.enderio.painting
  • parameters:
    • output
      • required
      • an instance of ItemStack or ItemWrapper
      • needs to be passed to the function directly
    • input
      • required
      • an instance of Ingredient or ItemWrapper
      • needs to be passed to the function directly

Examples

ServerEvents.recipes(event => {

  // removes all painting recipes
  event.remove({ type: "enderio:painting" });

  // adds a recipe that paints an apple into a stick
  event.recipes.enderio.painting("stick", "apple");

  // adds a recipe that paints any glass block into a potato
  event.recipes.enderio.painting("potato", Ingredient.of("glass"));
});

Sag Milling

  • access in recipes event via: event.recipes.enderio.sag_milling
  • parameters:
    • outputs
      • required
      • an array of OutputItems
        • this is a special type by EnderIO
        • it can either be an ItemStack or a tag
        • supports count, chance, and being optional
      • needs to be passed to the function directly
    • input
      • required
      • an instance of Ingredient or ItemWrapper
      • needs to be passed to the function directly
    • energy
      • optional, default value: 2000
      • an integer value
      • can be passed to the function directly or chained with .energy(int)
    • bonus
      • optional, default value: EnderIOBonusType.MULTIPLY_OUTPUT
      • an enum value of EnderIOBonusType
      • can be passed to the function directly or chained with .bonus(EnderIOBonusType)

Examples

ServerEvents.recipes(event => {

  // removes all sag milling recipes
  event.remove({ type: "enderio:sag_milling" });

  // adds a recipe that mills an apple into a potato and a carrot
  // uses default values for energy and bonus type
  event.recipes.enderio.sag_milling(["potato", "carrot"], "apple");

  // adds a recipe that mills any ingot into 3 glass blocks, 15 stone with a 50% chance, and 3 iron ingots
  // energy usage of 10000
  // no bonus
  event.recipes.enderio.sag_milling(
      [
          Ingredient.of("glass", 3),
          Item.of("stone", 15).withChance(0.5),
          "3x iron_ingot"
      ],
      "#forge:ingots",
      10000,
      EnderIOBonusType.NONE
  );

  // adds a recipe that mills white wool into a stick
  // energy usage of 500
  // bonus type of chance only
  // uses chaining functions for energy and bonus type
  event.recipes.enderio.sag_milling(["stick"], "white_wool")
    .energy(500)
    .bonus(EnderIOBonusType.CHANCE_ONLY);
});

Slicing 'n Splicing

NOTE: A recipe for the Slice 'n Splice must have exactly 6 inputs. The same item can be used multiple times. The order of the inputs defines the pattern of the recipe.

  • access in recipes event via: event.recipes.enderio.slicing
  • parameters:
    • output
      • required
      • an instance of ItemStack or ItemWrapper
      • needs to be passed to the function directly
    • inputs
      • required
      • an array of Ingredients and/or ItemWrappers
      • needs to be passed to the function directly
    • energy
      • optional, default value: 2000
      • an integer value
      • can be passed to the function directly or chained with .energy(int)

Examples

ServerEvents.recipes(event => {

  // removes all slicing recipes
  event.remove({ type: "enderio:slicing" });

  // adds a recipe that slices 2 apples, a bone, 2 rotten flesh, and an egg into a stick
  // uses the default value for energy
  event.recipes.enderio.slicing("stick", ["apple", "bone", "apple", "rotten_flesh", "egg", "rotten_flesh"]);

  // adds a recipe that slices any 3 glass, a stick, any ingot, 15 granite, any 3 iron ingots, and an apple into 15 stone
  // energy usage of 5000
  // uses the chaining function for energy
  event.recipes.enderio.slicing(Item.of("stone", 15), [
      "3x #forge:glass",
      "stick",
      Ingredient.of("#forge:ingots"),
      Item.of("granite", 15),
      "3x #forge:ingots/iron",
      "apple"
  ]).energy(5000);
});

Soul Binding

NOTE: A Soul Binder recipe can only have one property that can define the entity type. This means entity_type, mob_category, and soul_data are mutually exclusive.

  • access in recipes event via: event.recipes.enderio.soul_binding
  • parameters:
    • output
      • required
      • an instance of ItemStack or ItemWrapper
      • needs to be passed to the function directly
    • input
      • required
      • an instance of Ingredient or ItemWrapper
      • needs to be passed to the function directly
    • energy
      • optional, default value: 2000
      • an integer value
      • can be passed to the function directly or chained with .energy(int)
    • exp
      • optional, default value: 1
      • an integer value
      • can be passed to the function directly or chained with .exp(int)
    • entity_type
      • optional
      • an instance of TagKey<EntityType>> or a string in the format of a ResourceLocation
      • can be passed to the function directly or chained with .entityType(string)
    • mob_category
    • soul_data
      • optional
      • a string representing the soul data
      • must be chained with .soulData(string)

Examples

ServerEvents.recipes(event => {

  // removes all soul binding recipes
  event.remove({ type: "enderio:soul_binding" });

  // adds a recipe that converts an apple to a stick
  // uses default values for energy and exp
  // no entity type, mob category, or soul data
  event.recipes.enderio.soul_binding("stick", "apple");

  // adds a recipe that converts a carrot to a potato
  // energy usage of 5000
  // exp of 3
  // no entity type, mob category, or soul data
  event.recipes.enderio.soul_binding("potato", "carrot", 5000, 3);

  // adds a recipe that converts a stick to a stone
  // energy usage of 5000
  // no exp
  // mob category of axolotls
  // uses the chaining function for the mob category
  event.recipes.enderio.soul_binding("stone", "stick", 5000).mobCategory(MobCategory.AXOLOTLS);

  // adds a recipe that converts white wool to bread
  // default values for energy and exp
  // entity type of minecraft:zombie
  // uses the chaining function for the entity type
  event.recipes.enderio.soul_binding("bread", "white_wool").entityType("minecraft:zombie");
});

Tank

  • access in recipes event via: event.recipes.enderio.tank
  • parameters:
    • output
      • required
      • an instance of ItemStack or ItemWrapper
      • needs to be passed to the function directly
    • input
      • required
      • an instance of Ingredient or ItemWrapper
      • needs to be passed to the function directly
    • fluid
      • required
      • an instance of FluidStack or a string in the format of a ResourceLocation
      • needs to be passed to the function directly
    • is_emptying
      • optional, default value: false
      • a boolean value
      • can be passed to the function directly or chained with .emptying()
      • this will always enable the emptying mode

Examples

ServerEvents.recipes(event => {

  // removes all tank recipes
  event.remove({ type: "enderio:tank" });

  // adds a recipe that converts an apple to a stick with water
  // not emptying the tank
  event.recipes.enderio.tank("stick", "apple", "water");

  // adds a recipe that converts a carrot to a potato with 5 buckets of lava
  // emptying the tank
  event.recipes.enderio.tank("potato", "carrot", Fluid.of("lava", 5000), true);

  // adds a recipe that converts a stick to a stone with water
  // emptying the tank
  // uses the chaining function for emptying
  event.recipes.enderio.tank("stone", "stick", "water").emptying();
});