Skip to content
Open
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
3 changes: 2 additions & 1 deletion dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,8 @@ final Map<String, List<String>> mod_dependencies = [
'thermal_foundation-222880:2926428' : [debug_thermal_expansion],
'tinkers-complement-272671:2843439' : [debug_tinkers_construct],
'tinkers_construct-74072:2902483' : [debug_tinkers_construct],
'woot-244049:2712670' : [debug_woot],
'railcraft-51195:3853491' : [debug_railcraft],
'woot-244049:2712670' : [debug_woot],
Comment thread
LonelyxiyaOVO marked this conversation as resolved.
]

// Maps mods from CurseMaven to the properties that enable the mod.
Expand Down
92 changes: 92 additions & 0 deletions examples/postInit/generated/railcraft_generated.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@

// Auto generated groovyscript example file
// MODS_LOADED: railcraft

log 'mod \'railcraft\' detected, running script'

// groovyscript.wiki.railcraft.blast_furnace.title:
// groovyscript.wiki.railcraft.blast_furnace.description.

mods.railcraft.blast_furnace.removeByInput(item('minecraft:iron_ingot'))
mods.railcraft.blast_furnace.removeByOutput(item('railcraft:ingot:1'))
// mods.railcraft.blast_furnace.removeAll()

mods.railcraft.blast_furnace.recipeBuilder()
.input(item('minecraft:iron_ingot'))
.output(item('railcraft:ingot:1'))
.time(1280)
.slag(1)
.register()


// groovyscript.wiki.railcraft.coke_oven.title:
// groovyscript.wiki.railcraft.coke_oven.description.

mods.railcraft.coke_oven.removeByInput(item('minecraft:log'))
mods.railcraft.coke_oven.removeByOutput(item('railcraft:fuel_coke'))
// mods.railcraft.coke_oven.removeAll()

mods.railcraft.coke_oven.recipeBuilder()
.input(item('minecraft:log'))
.output(item('railcraft:fuel_coke'))
.fluidOutput(fluid('creosote') * 500)
.time(1800)
.register()


// groovyscript.wiki.railcraft.fluid_fuels.title:
// groovyscript.wiki.railcraft.fluid_fuels.description.

mods.railcraft.fluid_fuels.remove(fluid('creosote'))
// mods.railcraft.fluid_fuels.removeAll()

mods.railcraft.fluid_fuels.add(fluid('lava'), 32000)

// groovyscript.wiki.railcraft.rock_crusher.title:
// groovyscript.wiki.railcraft.rock_crusher.description.

mods.railcraft.rock_crusher.removeByInput(item('minecraft:stone'))
mods.railcraft.rock_crusher.removeByOutput(item('minecraft:cobblestone'))
// mods.railcraft.rock_crusher.removeAll()

mods.railcraft.rock_crusher.recipeBuilder()
.input(item('minecraft:stone'))
.output(item('minecraft:cobblestone'), 1.0)
.output(item('minecraft:sand'), 0.5)
.time(200)
.register()


// groovyscript.wiki.railcraft.rolling_machine.title:
// groovyscript.wiki.railcraft.rolling_machine.description.

mods.railcraft.rolling_machine.removeByOutput(item('minecraft:tripwire_hook'))
// mods.railcraft.rolling_machine.removeAll()

mods.railcraft.rolling_machine.shapedBuilder()
.output(item('minecraft:stone'))
.matrix('BXX',
'X B')
.key('B', item('minecraft:stone'))
.key('X', item('minecraft:gold_ingot'))
.time(200)


mods.railcraft.rolling_machine.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(400)


mods.railcraft.rolling_machine.shapelessBuilder()
.output(item('minecraft:clay') * 8)
.input(item('minecraft:stone'), item('minecraft:stone'), item('minecraft:stone'))
.time(100)


mods.railcraft.rolling_machine.shapelessBuilder()
.output(item('minecraft:diamond') * 32)
.input(item('minecraft:gold_ingot') * 9)
.time(500)
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ debug_primal_tech = false
debug_prodigytech = false
debug_projecte = false
debug_pyrotech = false
debug_railcraft = false
Comment thread
LonelyxiyaOVO marked this conversation as resolved.

debug_random_things = false
debug_roots = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
import com.cleanroommc.groovyscript.compat.mods.prodigytech.ProdigyTech;
import com.cleanroommc.groovyscript.compat.mods.projecte.ProjectE;
import com.cleanroommc.groovyscript.compat.mods.pyrotech.PyroTech;
import com.cleanroommc.groovyscript.compat.mods.railcraft.Railcraft;
import com.cleanroommc.groovyscript.compat.mods.randomthings.RandomThings;
import com.cleanroommc.groovyscript.compat.mods.roots.Roots;
import com.cleanroommc.groovyscript.compat.mods.rustic.Rustic;
Expand Down Expand Up @@ -156,6 +157,7 @@ public class ModSupport {
public static final GroovyContainer<ProdigyTech> PRODIGY_TECH = new InternalModContainer<>("prodigytech", "Prodigy Tech", ProdigyTech::new);
public static final GroovyContainer<ProjectE> PROJECT_E = new InternalModContainer<>("projecte", "ProjectE", ProjectE::new);
public static final GroovyContainer<PyroTech> PYROTECH = new InternalModContainer<>("pyrotech", "Pyrotech", PyroTech::new);
public static final GroovyContainer<Railcraft> RAILCRAFT = new InternalModContainer<>("railcraft", "Railcraft", Railcraft::new, "rc");
public static final GroovyContainer<RandomThings> RANDOM_THINGS = new InternalModContainer<>("randomthings", "Random Things", RandomThings::new);
public static final GroovyContainer<Roots> ROOTS = new InternalModContainer<>("roots", "Roots 3", Roots::new);
public static final GroovyContainer<Rustic> RUSTIC = new InternalModContainer<>("rustic", "Rustic", Rustic::new);
Expand Down
Comment thread
LonelyxiyaOVO marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
package com.cleanroommc.groovyscript.compat.mods.railcraft;

import com.cleanroommc.groovyscript.api.GroovyLog;
import com.cleanroommc.groovyscript.api.IIngredient;
import com.cleanroommc.groovyscript.api.documentation.annotations.*;
import com.cleanroommc.groovyscript.compat.mods.ModSupport;
import com.cleanroommc.groovyscript.helper.ingredient.IngredientHelper;
import com.cleanroommc.groovyscript.helper.recipe.AbstractRecipeBuilder;
import com.cleanroommc.groovyscript.registry.StandardListRegistry;
import mods.railcraft.api.crafting.Crafters;
import mods.railcraft.api.crafting.IBlastFurnaceCrafter;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.Ingredient;
import org.jetbrains.annotations.Nullable;

import java.util.Collection;

@RegistryDescription
public class BlastFurnace extends StandardListRegistry<IBlastFurnaceCrafter.IRecipe> {

@RecipeBuilderDescription(example = @Example(".input(item('minecraft:iron_ingot')).output(item('railcraft:ingot:1')).time(1280).slag(1)"))
public static RecipeBuilder recipeBuilder() {
return new RecipeBuilder();
}

@Override
public Collection<IBlastFurnaceCrafter.IRecipe> getRecipes() {
return Crafters.blastFurnace().getRecipes();
}

@MethodDescription(type = MethodDescription.Type.ADDITION)
public IBlastFurnaceCrafter.IRecipe add(IIngredient input, ItemStack output, int time, int slag) {
RecipeBuilder builder = recipeBuilder();
builder.input(input);
builder.output(output);
builder.time = time;
builder.slag = slag;
Comment thread
LonelyxiyaOVO marked this conversation as resolved.
return builder.register();
}

@MethodDescription(type = MethodDescription.Type.ADDITION)
public IBlastFurnaceCrafter.IRecipe add(IIngredient input, ItemStack output, int time) {
return add(input, output, time, 1);
}

@MethodDescription(type = MethodDescription.Type.ADDITION)
public IBlastFurnaceCrafter.IRecipe add(IIngredient input, ItemStack output) {
return add(input, output, IBlastFurnaceCrafter.SMELT_TIME, 1);
}

@MethodDescription(example = @Example("item('railcraft:ingot:1')"))
public void removeByOutput(ItemStack output) {
Comment thread
LonelyxiyaOVO marked this conversation as resolved.
if (IngredientHelper.isEmpty(output)) {
GroovyLog.msg("Error removing Railcraft Blast Furnace recipe")
.error()
.add("output must not be empty")
.post();
return;
}
if (!getRecipes().removeIf(recipe -> {
if (ItemStack.areItemStacksEqual(recipe.getOutput(), output)) {
addBackup(recipe);
return true;
}
return false;
})) {
GroovyLog.msg("Error removing Railcraft Blast Furnace recipe")
.error()
.add("no recipes found for {}", output)
.post();
}
}

@MethodDescription(example = @Example("item('minecraft:iron_ingot')"))
public void removeByInput(IIngredient input) {
if (IngredientHelper.isEmpty(input)) {
GroovyLog.msg("Error removing Railcraft Blast Furnace recipe")
.error()
.add("input must not be empty")
.post();
return;
}
if (!getRecipes().removeIf(recipe -> {
if (recipe.getInput().test(input.getMatchingStacks()[0])) {
Comment thread
LonelyxiyaOVO marked this conversation as resolved.
addBackup(recipe);
return true;
}
return false;
})) {
GroovyLog.msg("Error removing Railcraft Blast Furnace recipe")
.error()
.add("no recipes found for {}", input)
.post();
}
}

@Property(property = "input", comp = @Comp(eq = 1))
@Property(property = "output", comp = @Comp(eq = 1))
public static class RecipeBuilder extends AbstractRecipeBuilder<IBlastFurnaceCrafter.IRecipe> {

@Property(comp = @Comp(gte = 0), defaultValue = "IBlastFurnaceCrafter.SMELT_TIME")
private int time = IBlastFurnaceCrafter.SMELT_TIME;
@Property(comp = @Comp(gte = 0), defaultValue = "1")
private int slag = 1;

@RecipeBuilderMethodDescription
public RecipeBuilder time(int time) {
this.time = time;
return this;
}

@RecipeBuilderMethodDescription
public RecipeBuilder slag(int slag) {
this.slag = slag;
return this;
}

@Override
public String getErrorMsg() {
return "Error adding Railcraft Blast Furnace recipe";
}

@Override
public void validate(GroovyLog.Msg msg) {
validateItems(msg, 1, 1, 1, 1);
validateFluids(msg);
msg.add(time <= 0, "time must be greater than 0, got: {}", time);
msg.add(slag < 0, "slag must be non-negative, got: {}", slag);
}

@Override
@RecipeBuilderRegistrationMethod
public @Nullable IBlastFurnaceCrafter.IRecipe register() {
if (!validate()) return null;
ItemStack outputStack = output.get(0);
Ingredient inputIngredient = input.get(0).toMcIngredient();

IBlastFurnaceCrafter.IRecipe recipe = new IBlastFurnaceCrafter.IRecipe() {

@Override
public net.minecraft.util.ResourceLocation getName() {
return new net.minecraft.util.ResourceLocation("groovyscript", "blastfurnace_" + System.currentTimeMillis());
Comment thread
LonelyxiyaOVO marked this conversation as resolved.
}

@Override
public Ingredient getInput() {
return inputIngredient;
}

@Override
public int getTickTime(ItemStack input) {
return time;
}

@Override
public ItemStack getOutput() {
return outputStack.copy();
}

@Override
public int getSlagOutput() {
return slag;
}
};

ModSupport.RAILCRAFT.get().blastFurnace.add(recipe);
return recipe;
}
}
}
Loading