Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,14 @@ dependencies {
deobfProvided 'curse.maven:blood-magic-224791:2822288'
}

if (project.debug_extended_crafting.toBoolean()) {
deobfCompile 'curse.maven:cucumber-272335:2645867'
deobfCompile 'curse.maven:extended-crafting-nomifactory-edition-398267:3613140'
} else {
deobfProvided 'curse.maven:cucumber-272335:2645867'
deobfProvided 'curse.maven:extended-crafting-nomifactory-edition-398267:3613140'
}

if (project.debug_thermal.toBoolean()) {
deobfCompile 'curse.maven:cofh_core-69162:2920433'
deobfCompile 'curse.maven:cofh_world-271384:2920434'
Expand Down
145 changes: 145 additions & 0 deletions examples/extremecrafting.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@

// Combination crafting

// there are no combination recipes by default, and so none can be removed
//mods.extendedcrafting.combination.removeAll()
//mods.extendedcrafting.combination.removeByInput(item('minecraft:pumpkin'))
//mods.extendedcrafting.combination.removeByOutput(item('minecraft:gold_ingot'))

mods.extendedcrafting.combination.recipeBuilder()
.cost(100)
.perTick(100)
.output(item('minecraft:diamond') * 2)
.input(item('minecraft:pumpkin'))
.pedestals(item('minecraft:pumpkin') * 8)
.register()

mods.extendedcrafting.combinationcrafting.recipeBuilder()
.cost(10000)
.output(item('minecraft:gold_ingot') * 2)
.input(item('minecraft:pumpkin'))
.pedestals(item('minecraft:pumpkin'), item('minecraft:clay'), item('minecraft:clay'), item('minecraft:pumpkin'))
.register()

// Compression crafting

//mods.extendedcrafting.combination.removeAll()
//mods.extendedcrafting.combination.removeByInput(item('minecraft:gold_ingot'))
//mods.extendedcrafting.combination.removeByCatalyst(item('extendedcrafting:material:11'))
//mods.extendedcrafting.combination.removeByOutput(item('extendedcrafting:singularity:6'))

mods.extendedcrafting.compression.recipeBuilder()
.input(item('minecraft:clay') * 10)
.output(item('minecraft:diamond') * 2)
.powerCost(1000)
.register()

mods.extendedcrafting.compressioncrafting.recipeBuilder()
.input(item('minecraft:clay'))
.inputCount(100)
.output(item('minecraft:gold_ingot') * 7)
.catalyst(item('minecraft:diamond'))
.consumeCatalyst(true)
.powerCost(10000)
.powerRate(1000)
.register()

// Ender crafting

//mods.extendedcrafting.endercrafting.removeByOutput(item('extendedcrafting:material:40'))

mods.extendedcrafting.endercrafting.shapelessBuilder()
.output(item('minecraft:clay') * 8)
.input(item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'))
.register()

mods.extendedcrafting.endercrafting.shapedBuilder()
.output(item('minecraft:stone'))
.matrix('BXX',
'X B')
.key('B', item('minecraft:stone'))
.key('X', item('minecraft:gold_ingot'))
.time(1)
.mirrored()
.register()

mods.extendedcrafting.endercrafting.shapelessBuilder()
.output(item('minecraft:clay') * 32)
.input(item('minecraft:diamond'),item('minecraft:diamond'),item('minecraft:diamond'),item('minecraft:diamond'),item('minecraft:diamond'),item('minecraft:diamond'),item('minecraft:diamond'),item('minecraft:diamond'))
.time(1)
.register()

mods.extendedcrafting.endercrafting.shapedBuilder()
.output(item('minecraft:diamond') * 32)
.matrix([[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')],
[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')],
[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')]])
.time(1)
.register()

// Table crafting

//mods.extendedcrafting.tablecrafting.removeByOutput(item('extendedcrafting:singularity_ultimate'))

mods.extendedcrafting.tablecrafting.shapedBuilder()
.output(item('minecraft:stone') * 64)
.matrix(
'DLLLLLDDD',
' DNIGIND',
'DDDNIGIND',
' DLLLLLD')
.key('D', item('minecraft:diamond'))
.key('L', item('minecraft:redstone'))
.key('N', item('minecraft:stone'))
.key('I', item('minecraft:iron_ingot'))
.key('G', item('minecraft:gold_ingot'))
.tierUltimate()
.register()

mods.extendedcrafting.tablecrafting.shapedBuilder()
.tierAdvanced()
.output(item('minecraft:stone') * 8)
.matrix('BXX')
.mirrored()
.key('B', item('minecraft:stone'))
.key('X', item('minecraft:gold_ingot'))
.register()

mods.extendedcrafting.tablecrafting.shapedBuilder()
.tierAny()
.output(item('minecraft:diamond'))
.matrix('BXXXBX')
.mirrored()
.key('B', item('minecraft:stone'))
.key('X', item('minecraft:gold_ingot'))
.register()

mods.extendedcrafting.tablecrafting.shapedBuilder()
.matrix([[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')],
[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')],
[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')],
[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')],
[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')],
[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')],
[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot')]])
.output(item('minecraft:gold_ingot') * 64)
.tier(4) // while we only have a 7x7 of gold ingots in the recipe, specifically requiring tier 4 (ultimate) locks us in
.register()

mods.extendedcrafting.tablecrafting.shapedBuilder() // can be crafted in any tier of table
.matrix([[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),],
[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),],
[item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),item('minecraft:gold_ingot'),]])
.output(item('minecraft:gold_ingot') * 64)
.register()

mods.extendedcrafting.tablecrafting.shapelessBuilder()
.output(item('minecraft:stone') * 64)
.input(item('minecraft:stone'), // 26 stone = can be crafted in either elite or ultimate
item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),
item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),
item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),
item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),
item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'),item('minecraft:stone'))
.register()

3 changes: 2 additions & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,5 @@ debug_ie = false
debug_enderio = false
debug_astral = false
debug_blood_magic = false
debug_tinkers = false
debug_tinkers = false
debug_extended_crafting = true
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,13 @@ default IIngredient or(IIngredient ingredient) {
return orIngredient;
}

@Override
default IIngredient withAmount(int amount) {
IIngredient iIngredientStack = exactCopy();
iIngredientStack.setAmount(amount);
return iIngredientStack;
}

/**
* An empty ingredient with stack size 0, that matches empty item stacks
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.cleanroommc.groovyscript.compat.mods.bloodmagic.BloodMagic;
import com.cleanroommc.groovyscript.compat.mods.draconicevolution.DraconicEvolution;
import com.cleanroommc.groovyscript.compat.mods.enderio.EnderIO;
import com.cleanroommc.groovyscript.compat.mods.extendedcrafting.ExtendedCrafting;
import com.cleanroommc.groovyscript.compat.mods.ic2.IC2;
import com.cleanroommc.groovyscript.compat.mods.immersiveengineering.ImmersiveEngineering;
import com.cleanroommc.groovyscript.compat.mods.jei.JustEnoughItems;
Expand Down Expand Up @@ -45,6 +46,7 @@ public class ModSupport implements IDynamicGroovyProperty {
public static final Container<BloodMagic> BLOOD_MAGIC = new Container<>("bloodmagic", "Blood Magic: Alchemical Wizardry", BloodMagic::new, "bm");
public static final Container<ImmersiveEngineering> IMMERSIVE_ENGINEERING = new Container<>("immersiveengineering", "Immersive Engineering", ImmersiveEngineering::new, "ie");
public static final Container<IC2> INDUSTRIALCRAFT = new Container<>("ic2", "Industrial Craft 2", IC2::new, "industrialcraft");
public static final Container<ExtendedCrafting> EXTENDED_CRAFTING = new Container<>("extendedcrafting", "Extended Crafting", ExtendedCrafting::new);

public static Collection<Container<? extends ModPropertyContainer>> getAllContainers() {
return new ObjectOpenHashSet<>(containers.values());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import org.jetbrains.annotations.Nullable;

import java.util.Collections;
import java.util.stream.Collectors;

public class AlchemyTable extends VirtualizedRegistry<RecipeAlchemyTable> {

Expand Down Expand Up @@ -163,9 +162,7 @@ public void validate(GroovyLog.Msg msg) {
@Override
public @Nullable RecipeAlchemyTable register() {
if (!validate()) return null;
NonNullList<Ingredient> inputs = NonNullList.create();
inputs.addAll(input.stream().map(IIngredient::toMcIngredient).collect(Collectors.toList()));
RecipeAlchemyTable recipe = ModSupport.BLOOD_MAGIC.get().alchemyTable.add(inputs, output.get(0), syphon, ticks, minimumTier);
RecipeAlchemyTable recipe = ModSupport.BLOOD_MAGIC.get().alchemyTable.add(IngredientHelper.toIngredientNonNullList(input), output.get(0), syphon, ticks, minimumTier);
return recipe;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,8 @@
import com.cleanroommc.groovyscript.registry.VirtualizedRegistry;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.util.NonNullList;
import org.jetbrains.annotations.Nullable;

import java.util.stream.Collectors;

public class BloodAltar extends VirtualizedRegistry<RecipeBloodAltar> {

public BloodAltar() {
Expand Down Expand Up @@ -150,8 +147,6 @@ public void validate(GroovyLog.Msg msg) {
@Override
public @Nullable RecipeBloodAltar register() {
if (!validate()) return null;
NonNullList<Ingredient> inputs = NonNullList.create();
inputs.addAll(input.stream().map(IIngredient::toMcIngredient).collect(Collectors.toList()));
RecipeBloodAltar recipe = ModSupport.BLOOD_MAGIC.get().bloodAltar.add(input.get(0).toMcIngredient(), output.get(0), minimumTier, syphon, consumeRate, drainRate);
return recipe;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import org.jetbrains.annotations.Nullable;

import java.util.Collections;
import java.util.stream.Collectors;

public class TartaricForge extends VirtualizedRegistry<RecipeTartaricForge> {

Expand Down Expand Up @@ -159,9 +158,7 @@ public void validate(GroovyLog.Msg msg) {
@Override
public @Nullable RecipeTartaricForge register() {
if (!validate()) return null;
NonNullList<Ingredient> inputs = NonNullList.create();
inputs.addAll(input.stream().map(IIngredient::toMcIngredient).collect(Collectors.toList()));
RecipeTartaricForge recipe = ModSupport.BLOOD_MAGIC.get().tartaricForge.add(inputs, output.get(0), minimumSouls, soulDrain);
RecipeTartaricForge recipe = ModSupport.BLOOD_MAGIC.get().tartaricForge.add(IngredientHelper.toIngredientNonNullList(input), output.get(0), minimumSouls, soulDrain);
return recipe;
}
}
Expand Down
Loading