Auto convert grinder recipes to datagen

This commit is contained in:
modmuss50 2023-02-01 22:11:21 +00:00
parent acccaaa84c
commit d305a7f092
128 changed files with 675 additions and 2792 deletions

View file

@ -153,4 +153,16 @@ public class StackIngredient extends RebornIngredient {
public int getCount() {
return count.orElse(1);
}
public ItemStack getStack() {
return stack;
}
public Optional<NbtCompound> getNbt() {
return nbt;
}
public boolean isRequireEmptyNbt() {
return requireEmptyNbt;
}
}

View file

@ -158,4 +158,8 @@ public class TagIngredient extends RebornIngredient {
public int getCount() {
return count.orElse(1);
}
public TagKey<Item> getTag() {
return tag;
}
}

View file

@ -31,6 +31,7 @@ import net.minecraft.registry.RegistryKeys
import techreborn.TechReborn
import techreborn.datagen.models.BlockLootTableProvider
import techreborn.datagen.models.ModelProvider
import techreborn.datagen.recipes.Json2Datagen
import techreborn.datagen.recipes.crafting.CraftingRecipesProvider
import techreborn.datagen.recipes.machine.alloy_smelter.AlloySmelterRecipesProvider
import techreborn.datagen.recipes.machine.assembling_machine.AssemblingMachineRecipesProvider
@ -52,6 +53,11 @@ class TechRebornDataGen implements DataGeneratorEntrypoint {
@Override
void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) {
// if (true) {
// Json2Datagen.processAll()
// return
// }
def pack = fabricDataGenerator.createPack()
def add = { FabricDataGenerator.Pack.RegistryDependentFactory factory ->

View file

@ -0,0 +1,120 @@
/*
* This file is part of TechReborn, licensed under the MIT License (MIT).
*
* Copyright (c) 2023 TechReborn
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package techreborn.datagen.recipes
import com.google.gson.Gson
import com.google.gson.JsonObject
import net.minecraft.item.ItemStack
import net.minecraft.registry.Registries
import net.minecraft.util.Identifier
import reborncore.common.crafting.RebornRecipe
import reborncore.common.crafting.ingredient.RebornIngredient
import reborncore.common.crafting.ingredient.StackIngredient
import reborncore.common.crafting.ingredient.TagIngredient
import techreborn.init.ModRecipes
class Json2Datagen {
private static final Gson GSON = new Gson()
static void processAll() {
def sj = new StringJoiner("\n")
new File("../../src/main/resources/data/techreborn/recipes/grinder").eachFile {
def json = GSON.fromJson(it.text, JsonObject.class)
def recipe = ModRecipes.GRINDER.read(new Identifier("techreborn:convert"), json)
sj.add process(recipe)
}
println sj
}
static String process(RebornRecipe recipe) {
StringBuilder stringBuilder = new StringBuilder()
/**
* offerAlloySmelterRecipe {
* power 6
* time 200
* ingredients new ItemStack(Items.COPPER_INGOT, 3), TRConventionalTags.ZINC_INGOTS
* output new ItemStack(TRContent.Ingots.BRASS, 4)
* }
*/
stringBuilder.append("offerGrinderRecipe {\n")
stringBuilder.append("\tpower ").append(recipe.power).append("\n")
stringBuilder.append("\ttime ").append(recipe.time).append("\n")
stringBuilder.append("\tingredients ").append(formatIngredients(recipe.getRebornIngredients())).append("\n")
stringBuilder.append("\toutputs ").append(formatOutputs(recipe.getOutputs())).append("\n")
stringBuilder.append("}")
return stringBuilder
}
private static String formatOutputs(List<ItemStack> outputs) {
StringJoiner sj = new StringJoiner(", ")
for (ItemStack output : outputs) {
sj.add(formatStack(output))
}
return sj.toString()
}
private static String formatIngredients(List<RebornIngredient> ingredients) {
StringJoiner sj = new StringJoiner(", ")
for (RebornIngredient ingredient : ingredients) {
if (ingredient instanceof StackIngredient) {
if (ingredient.getNbt().isPresent()) {
throw new UnsupportedOperationException()
}
ItemStack stack = ingredient.getStack().copy()
stack.setCount(ingredient.getCount())
sj.add(formatStack(stack))
} else if (ingredient instanceof TagIngredient) {
int count = ingredient.getCount()
if (count == 1) {
sj.add("tag(\"%s\")".formatted(ingredient.getTag().id()))
} else {
sj.add("tag(\"%s\", \"%s\")".formatted(ingredient.getTag().id(), ingredient.getCount()))
}
} else {
throw new UnsupportedOperationException()
}
}
return sj.toString()
}
private static String formatStack(ItemStack stack) {
String name = Registries.ITEM.getId(stack.getItem()).toString()
if (stack.getCount() == 1) {
return "stack(\"%s\")".formatted(name)
} else {
return "stack(\"%s\", %s)".formatted(name, stack.getCount())
}
}
}

View file

@ -28,8 +28,12 @@ import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider
import net.minecraft.advancement.criterion.CriterionConditions
import net.minecraft.data.server.recipe.RecipeJsonProvider
import net.minecraft.item.Item
import net.minecraft.item.ItemConvertible
import net.minecraft.item.ItemStack
import net.minecraft.recipe.Ingredient
import net.minecraft.registry.Registries
import net.minecraft.registry.RegistryKeys
import net.minecraft.registry.RegistryWrapper
import net.minecraft.registry.tag.TagKey
import net.minecraft.util.Identifier
@ -44,6 +48,8 @@ import java.util.function.Consumer
abstract class TechRebornRecipesProvider extends FabricRecipeProvider {
protected Consumer<RecipeJsonProvider> exporter
public Set<Identifier> exportedRecipes = []
TechRebornRecipesProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output)
}
@ -127,40 +133,59 @@ abstract class TechRebornRecipesProvider extends FabricRecipeProvider {
throw new IllegalArgumentException()
}
static ItemStack stack(ItemConvertible itemConvertible, int count = 1) {
return new ItemStack(itemConvertible, count)
}
// Todo refactor me out, used to help port json recipes
static ItemStack stack(String id, int count = 1) {
def item = Registries.ITEM.get(new Identifier(id))
return new ItemStack(item, count)
}
// Todo refactor me out, used to help port json recipes
static TagKey<Item> tag(String id, count = 1) {
if (count != 1) {
throw new UnsupportedOperationException()
}
return TagKey.of(RegistryKeys.ITEM, new Identifier(id))
}
def offerAlloySmelterRecipe(@DelegatesTo(value = MachineRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
MachineRecipeJsonFactory.create(ModRecipes.ALLOY_SMELTER, closure).offerTo(exporter)
MachineRecipeJsonFactory.create(ModRecipes.ALLOY_SMELTER, this, closure).offerTo(exporter)
}
def offerGrinderRecipe(@DelegatesTo(value = MachineRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
MachineRecipeJsonFactory.create(ModRecipes.GRINDER, closure).offerTo(exporter)
MachineRecipeJsonFactory.create(ModRecipes.GRINDER, this, closure).offerTo(exporter)
}
def offerCompressorRecipe(@DelegatesTo(value = MachineRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
MachineRecipeJsonFactory.create(ModRecipes.COMPRESSOR, closure).offerTo(exporter)
MachineRecipeJsonFactory.create(ModRecipes.COMPRESSOR, this, closure).offerTo(exporter)
}
def offerExtractorRecipe(@DelegatesTo(value = MachineRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
MachineRecipeJsonFactory.create(ModRecipes.EXTRACTOR, closure).offerTo(exporter)
MachineRecipeJsonFactory.create(ModRecipes.EXTRACTOR, this, closure).offerTo(exporter)
}
def offerChemicalReactorRecipe(@DelegatesTo(value = MachineRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
MachineRecipeJsonFactory.create(ModRecipes.CHEMICAL_REACTOR, closure).offerTo(exporter)
MachineRecipeJsonFactory.create(ModRecipes.CHEMICAL_REACTOR, this, closure).offerTo(exporter)
}
def offerAssemblingMachineRecipe(@DelegatesTo(value = MachineRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
MachineRecipeJsonFactory.create(ModRecipes.ASSEMBLING_MACHINE, closure).offerTo(exporter)
MachineRecipeJsonFactory.create(ModRecipes.ASSEMBLING_MACHINE, this, closure).offerTo(exporter)
}
def offerBlastFurnaceRecipe(@DelegatesTo(value = BlastFurnaceRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
BlastFurnaceRecipeJsonFactory.createBlastFurnace(closure).offerTo(exporter)
BlastFurnaceRecipeJsonFactory.createBlastFurnace(this, closure).offerTo(exporter)
}
def offerIndustrialGrinderRecipe(@DelegatesTo(value = IndustrialGrinderRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
IndustrialGrinderRecipeJsonFactory.createIndustrialGrinder(closure).offerTo(exporter)
IndustrialGrinderRecipeJsonFactory.createIndustrialGrinder(this, closure).offerTo(exporter)
}
def offerIndustrialSawmillRecipe(@DelegatesTo(value = IndustrialSawmillRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
IndustrialSawmillRecipeJsonFactory.createIndustrialSawmill(closure).offerTo(exporter)
IndustrialSawmillRecipeJsonFactory.createIndustrialSawmill(this, closure).offerTo(exporter)
}
@Override

View file

@ -67,7 +67,9 @@ class IngredientBuilder {
}
if (stacks.size() == 1) {
return new StackIngredient(stacks.get(0), Optional.of(stacks.get(0).getCount()), Optional.empty(), false)
def stack = stacks[0]
def count = stack.getCount() > 1 ? Optional.of(stack.getCount()) : Optional.empty()
return new StackIngredient(stack, count, Optional.empty(), false)
}
throw new IllegalStateException()

View file

@ -40,15 +40,18 @@ import net.minecraft.registry.tag.TagKey
import net.minecraft.resource.featuretoggle.FeatureFlag
import net.minecraft.util.Identifier
import org.jetbrains.annotations.NotNull
import org.jetbrains.annotations.Nullable
import reborncore.common.crafting.RebornRecipe
import reborncore.common.crafting.RebornRecipeType
import reborncore.common.crafting.RecipeUtils
import reborncore.common.crafting.ingredient.RebornIngredient
import techreborn.datagen.recipes.TechRebornRecipesProvider
import java.util.function.Consumer
class MachineRecipeJsonFactory<R extends RebornRecipe> {
protected final RebornRecipeType<R> type
protected final TechRebornRecipesProvider provider
protected final Builder builder = Builder.create()
protected final List<RebornIngredient> ingredients = new ArrayList<>()
@ -59,16 +62,17 @@ class MachineRecipeJsonFactory<R extends RebornRecipe> {
protected String source = null
protected List<ConditionJsonProvider> conditions = []
protected MachineRecipeJsonFactory(RebornRecipeType<R> type) {
protected MachineRecipeJsonFactory(RebornRecipeType<R> type, TechRebornRecipesProvider provider) {
this.type = type
this.provider = provider
}
static <R extends RebornRecipe> MachineRecipeJsonFactory<R> create(RebornRecipeType<R> type) {
return new MachineRecipeJsonFactory<R>(type)
static <R extends RebornRecipe> MachineRecipeJsonFactory<R> create(RebornRecipeType<R> type, TechRebornRecipesProvider provider) {
return new MachineRecipeJsonFactory<R>(type, provider)
}
static <R extends RebornRecipe> MachineRecipeJsonFactory<R> create(RebornRecipeType<R> type, @DelegatesTo(value = MachineRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
def factory = new MachineRecipeJsonFactory<R>(type)
static <R extends RebornRecipe> MachineRecipeJsonFactory<R> create(RebornRecipeType<R> type, TechRebornRecipesProvider provider, @DelegatesTo(value = MachineRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
def factory = new MachineRecipeJsonFactory<R>(type, provider)
closure.setDelegate(factory)
closure.call(factory)
return factory
@ -114,19 +118,25 @@ class MachineRecipeJsonFactory<R extends RebornRecipe> {
def outputs(Object... objects) {
for (object in objects) {
if (object instanceof ItemStack) {
output(object)
} else if (object instanceof ItemConvertible) {
output(new ItemStack(object.asItem()))
}
def stack = ofStack(object)
outputs.add(stack)
}
return this
}
def output(ItemStack stack) {
outputs.add(stack)
return this
private static ItemStack ofStack(Object object) {
if (object instanceof ItemStack) {
return object
} else if (object instanceof ItemConvertible) {
return new ItemStack(object.asItem())
} else if (object instanceof String) {
// TODO remove me, done to aid porting from json files
def item = Registries.ITEM.get(new Identifier(object))
return new ItemStack(item)
} else {
throw new UnsupportedOperationException()
}
}
def power(int power) {
@ -196,7 +206,21 @@ class MachineRecipeJsonFactory<R extends RebornRecipe> {
void offerTo(Consumer<RecipeJsonProvider> exporter) {
validate()
Identifier recipeId = getIdentifier()
def recipeId = getIdentifier()
if (provider.exportedRecipes.contains(recipeId) && !customId) {
int i = 1
def id
do {
i++
id = new Identifier(recipeId.toString() + "_" + i)
} while (provider.exportedRecipes.contains(id))
recipeId = id
}
provider.exportedRecipes.add(recipeId)
Identifier advancementId = new Identifier(recipeId.getNamespace(), "recipes/" + recipeId.getPath())
RecipeUtils.addToastDefaults(builder, recipeId)
exporter.accept(new MachineRecipeJsonProvider<R>(type, createRecipe(recipeId), advancementId, builder, conditions))

View file

@ -28,6 +28,7 @@ import net.minecraft.fluid.Fluid
import net.minecraft.fluid.Fluids
import reborncore.common.crafting.RebornFluidRecipe
import reborncore.common.crafting.RebornRecipeType
import techreborn.datagen.recipes.TechRebornRecipesProvider
abstract class MachineRecipeWithFluidJsonFactory<R extends RebornFluidRecipe> extends MachineRecipeJsonFactory<R> {
protected Fluid fluid = Fluids.WATER // default
@ -43,8 +44,8 @@ abstract class MachineRecipeWithFluidJsonFactory<R extends RebornFluidRecipe> ex
return this
}
protected MachineRecipeWithFluidJsonFactory(RebornRecipeType<R> type) {
super(type)
protected MachineRecipeWithFluidJsonFactory(RebornRecipeType<R> type, TechRebornRecipesProvider provider) {
super(type, provider)
}
@Override

View file

@ -44,36 +44,36 @@ class AlloySmelterRecipesProvider extends TechRebornRecipesProvider {
offerAlloySmelterRecipe {
power 6
time 200
ingredients new ItemStack(Items.COPPER_INGOT, 3), TRConventionalTags.ZINC_INGOTS
output new ItemStack(TRContent.Ingots.BRASS, 4)
ingredients stack(Items.COPPER_INGOT, 3), TRConventionalTags.ZINC_INGOTS
outputs stack(TRContent.Ingots.BRASS, 4)
}
offerAlloySmelterRecipe {
power 6
time 200
ingredients new ItemStack(Items.COPPER_INGOT, 3), TRConventionalTags.TIN_INGOTS
output new ItemStack(TRContent.Ingots.BRONZE, 4)
ingredients stack(Items.COPPER_INGOT, 3), TRConventionalTags.TIN_INGOTS
outputs stack(TRContent.Ingots.BRONZE, 4)
}
offerAlloySmelterRecipe {
power 6
time 200
ingredients Items.GOLD_INGOT, TRConventionalTags.SILVER_INGOTS
output new ItemStack(TRContent.Ingots.ELECTRUM, 2)
outputs stack(TRContent.Ingots.ELECTRUM, 2)
}
offerAlloySmelterRecipe {
power 6
time 200
ingredients new ItemStack(Items.IRON_INGOT, 3), TRConventionalTags.NICKEL_INGOTS
output new ItemStack(TRContent.Ingots.INVAR, 3)
ingredients stack(Items.IRON_INGOT, 3), TRConventionalTags.NICKEL_INGOTS
outputs stack(TRContent.Ingots.INVAR, 3)
}
offerAlloySmelterRecipe {
power 6
time 600
ingredients new ItemStack(Items.GOLD_INGOT, 10), new ItemStack(Items.NETHERITE_SCRAP, 10)
output new ItemStack(Items.NETHERITE_INGOT, 3)
ingredients stack(Items.GOLD_INGOT, 10), stack(Items.NETHERITE_SCRAP, 10)
outputs stack(Items.NETHERITE_INGOT, 3)
}
}
}

View file

@ -64,8 +64,8 @@ class AssemblingMachineRecipesProvider extends TechRebornRecipesProvider {
(Items.YELLOW_DYE): Items.YELLOW_BED
].each {(wool, bed) ->
offerAssemblingMachineRecipe {
ingredients new ItemStack(wool, 2), ItemTags.PLANKS
output bed
ingredients stack(wool, 2), ItemTags.PLANKS
outputs bed
source "wool"
power 25
time 250

View file

@ -26,6 +26,7 @@ package techreborn.datagen.recipes.machine.blast_furnace
import net.minecraft.util.Identifier
import techreborn.api.recipe.recipes.BlastFurnaceRecipe
import techreborn.datagen.recipes.TechRebornRecipesProvider
import techreborn.datagen.recipes.machine.MachineRecipeJsonFactory
import techreborn.init.ModRecipes
@ -37,16 +38,16 @@ class BlastFurnaceRecipeJsonFactory extends MachineRecipeJsonFactory<BlastFurnac
return this
}
protected BlastFurnaceRecipeJsonFactory() {
super(ModRecipes.BLAST_FURNACE)
protected BlastFurnaceRecipeJsonFactory(TechRebornRecipesProvider provider) {
super(ModRecipes.BLAST_FURNACE, provider)
}
static BlastFurnaceRecipeJsonFactory create() {
return new BlastFurnaceRecipeJsonFactory()
static BlastFurnaceRecipeJsonFactory create(TechRebornRecipesProvider provider) {
return new BlastFurnaceRecipeJsonFactory(provider)
}
static BlastFurnaceRecipeJsonFactory createBlastFurnace(@DelegatesTo(value = BlastFurnaceRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
def factory = new BlastFurnaceRecipeJsonFactory()
static BlastFurnaceRecipeJsonFactory createBlastFurnace(TechRebornRecipesProvider provider, @DelegatesTo(value = BlastFurnaceRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
def factory = new BlastFurnaceRecipeJsonFactory(provider)
closure.setDelegate(factory)
closure.call(factory)
return factory

View file

@ -65,11 +65,11 @@ class BlastFurnaceRecipesProvider extends TechRebornRecipesProvider {
void generateBoots() {
final int count = 2
[
(Items.GOLDEN_BOOTS) : new ItemStack(Items.GOLD_INGOT, count),
(Items.IRON_BOOTS) : new ItemStack(Items.IRON_INGOT, count),
(TRContent.BRONZE_BOOTS) : new ItemStack(TRContent.Ingots.BRONZE, count),
(TRContent.SILVER_BOOTS) : new ItemStack(TRContent.Ingots.SILVER, count),
(TRContent.STEEL_BOOTS) : new ItemStack(TRContent.Ingots.STEEL, count)
(Items.GOLDEN_BOOTS) : stack(Items.GOLD_INGOT, count),
(Items.IRON_BOOTS) : stack(Items.IRON_INGOT, count),
(TRContent.BRONZE_BOOTS) : stack(TRContent.Ingots.BRONZE, count),
(TRContent.SILVER_BOOTS) : stack(TRContent.Ingots.SILVER, count),
(TRContent.STEEL_BOOTS) : stack(TRContent.Ingots.STEEL, count)
].each {boots, materialStack ->
offerBlastFurnaceRecipe {
ingredients boots, Items.SAND
@ -86,11 +86,11 @@ class BlastFurnaceRecipesProvider extends TechRebornRecipesProvider {
void generateChestplate() {
final int count = 5
[
(Items.GOLDEN_CHESTPLATE) : new ItemStack(Items.GOLD_INGOT, count),
(Items.IRON_CHESTPLATE) : new ItemStack(Items.IRON_INGOT, count),
(TRContent.BRONZE_CHESTPLATE) : new ItemStack(TRContent.Ingots.BRONZE, count),
(TRContent.SILVER_CHESTPLATE) : new ItemStack(TRContent.Ingots.SILVER, count),
(TRContent.STEEL_CHESTPLATE) : new ItemStack(TRContent.Ingots.STEEL, count)
(Items.GOLDEN_CHESTPLATE) : stack(Items.GOLD_INGOT, count),
(Items.IRON_CHESTPLATE) : stack(Items.IRON_INGOT, count),
(TRContent.BRONZE_CHESTPLATE) : stack(TRContent.Ingots.BRONZE, count),
(TRContent.SILVER_CHESTPLATE) : stack(TRContent.Ingots.SILVER, count),
(TRContent.STEEL_CHESTPLATE) : stack(TRContent.Ingots.STEEL, count)
].each {chestplate, materialStack ->
offerBlastFurnaceRecipe {
ingredients chestplate, Items.SAND
@ -107,11 +107,11 @@ class BlastFurnaceRecipesProvider extends TechRebornRecipesProvider {
void generateHelmet() {
final int count = 3
[
(Items.GOLDEN_HELMET) : new ItemStack(Items.GOLD_INGOT, count),
(Items.IRON_HELMET) : new ItemStack(Items.IRON_INGOT, count),
(TRContent.BRONZE_HELMET) : new ItemStack(TRContent.Ingots.BRONZE, count),
(TRContent.SILVER_HELMET) : new ItemStack(TRContent.Ingots.SILVER, count),
(TRContent.STEEL_HELMET) : new ItemStack(TRContent.Ingots.STEEL, count)
(Items.GOLDEN_HELMET) : stack(Items.GOLD_INGOT, count),
(Items.IRON_HELMET) : stack(Items.IRON_INGOT, count),
(TRContent.BRONZE_HELMET) : stack(TRContent.Ingots.BRONZE, count),
(TRContent.SILVER_HELMET) : stack(TRContent.Ingots.SILVER, count),
(TRContent.STEEL_HELMET) : stack(TRContent.Ingots.STEEL, count)
].each {helmet, materialStack ->
offerBlastFurnaceRecipe {
ingredients helmet, Items.SAND
@ -128,11 +128,11 @@ class BlastFurnaceRecipesProvider extends TechRebornRecipesProvider {
void generateLeggings() {
final int count = 4
[
(Items.GOLDEN_LEGGINGS) : new ItemStack(Items.GOLD_INGOT, count),
(Items.IRON_LEGGINGS) : new ItemStack(Items.IRON_INGOT, count),
(TRContent.BRONZE_LEGGINGS) : new ItemStack(TRContent.Ingots.BRONZE, count),
(TRContent.SILVER_LEGGINGS) : new ItemStack(TRContent.Ingots.SILVER, count),
(TRContent.STEEL_LEGGINGS) : new ItemStack(TRContent.Ingots.STEEL, count)
(Items.GOLDEN_LEGGINGS) : stack(Items.GOLD_INGOT, count),
(Items.IRON_LEGGINGS) : stack(Items.IRON_INGOT, count),
(TRContent.BRONZE_LEGGINGS) : stack(TRContent.Ingots.BRONZE, count),
(TRContent.SILVER_LEGGINGS) : stack(TRContent.Ingots.SILVER, count),
(TRContent.STEEL_LEGGINGS) : stack(TRContent.Ingots.STEEL, count)
].each {leggings, materialStack ->
offerBlastFurnaceRecipe {
ingredients leggings, Items.SAND
@ -149,8 +149,8 @@ class BlastFurnaceRecipesProvider extends TechRebornRecipesProvider {
void generateHorseArmor() {
final int count = 4
[
(Items.GOLDEN_HORSE_ARMOR) : new ItemStack(Items.GOLD_INGOT, count),
(Items.IRON_HORSE_ARMOR) : new ItemStack(Items.IRON_INGOT, count)
(Items.GOLDEN_HORSE_ARMOR) : stack(Items.GOLD_INGOT, count),
(Items.IRON_HORSE_ARMOR) : stack(Items.IRON_INGOT, count)
].each {horseArmor, materialStack ->
offerBlastFurnaceRecipe {
ingredients horseArmor, Items.SAND
@ -167,9 +167,9 @@ class BlastFurnaceRecipesProvider extends TechRebornRecipesProvider {
void generateSword() {
final int count = 5
[
(Items.GOLDEN_SWORD) : new ItemStack(Items.GOLD_NUGGET, count),
(Items.IRON_SWORD) : new ItemStack(Items.IRON_NUGGET, count),
(TRContent.BRONZE_SWORD) : new ItemStack(TRContent.Nuggets.BRONZE, count)
(Items.GOLDEN_SWORD) : stack(Items.GOLD_NUGGET, count),
(Items.IRON_SWORD) : stack(Items.IRON_NUGGET, count),
(TRContent.BRONZE_SWORD) : stack(TRContent.Nuggets.BRONZE, count)
].each {sword, materialStack ->
offerBlastFurnaceRecipe {
ingredients sword, Items.SAND
@ -186,9 +186,9 @@ class BlastFurnaceRecipesProvider extends TechRebornRecipesProvider {
void generateShovel() {
final int count = 3
[
(Items.GOLDEN_SHOVEL) : new ItemStack(Items.GOLD_NUGGET, count),
(Items.IRON_SHOVEL) : new ItemStack(Items.IRON_NUGGET, count),
(TRContent.BRONZE_SPADE) : new ItemStack(TRContent.Nuggets.BRONZE, count)
(Items.GOLDEN_SHOVEL) : stack(Items.GOLD_NUGGET, count),
(Items.IRON_SHOVEL) : stack(Items.IRON_NUGGET, count),
(TRContent.BRONZE_SPADE) : stack(TRContent.Nuggets.BRONZE, count)
].each {shovel, materialStack ->
offerBlastFurnaceRecipe {
ingredients shovel, Items.SAND
@ -205,9 +205,9 @@ class BlastFurnaceRecipesProvider extends TechRebornRecipesProvider {
void generateHoe() {
final int count = 5
[
(Items.GOLDEN_HOE) : new ItemStack(Items.GOLD_NUGGET, count),
(Items.IRON_HOE) : new ItemStack(Items.IRON_NUGGET, count),
(TRContent.BRONZE_HOE) : new ItemStack(TRContent.Nuggets.BRONZE, count)
(Items.GOLDEN_HOE) : stack(Items.GOLD_NUGGET, count),
(Items.IRON_HOE) : stack(Items.IRON_NUGGET, count),
(TRContent.BRONZE_HOE) : stack(TRContent.Nuggets.BRONZE, count)
].each {hoe, materialStack ->
offerBlastFurnaceRecipe {
ingredients hoe, Items.SAND
@ -224,9 +224,9 @@ class BlastFurnaceRecipesProvider extends TechRebornRecipesProvider {
void generateAxe() {
final int count = 1
[
(Items.GOLDEN_AXE) : new ItemStack(Items.GOLD_INGOT, count),
(Items.IRON_AXE) : new ItemStack(Items.IRON_INGOT, count),
(TRContent.BRONZE_AXE) : new ItemStack(TRContent.Ingots.BRONZE, count)
(Items.GOLDEN_AXE) : stack(Items.GOLD_INGOT, count),
(Items.IRON_AXE) : stack(Items.IRON_INGOT, count),
(TRContent.BRONZE_AXE) : stack(TRContent.Ingots.BRONZE, count)
].each {axe, materialStack ->
offerBlastFurnaceRecipe {
ingredients axe, Items.SAND
@ -243,9 +243,9 @@ class BlastFurnaceRecipesProvider extends TechRebornRecipesProvider {
void generatePickaxe() {
final int count = 1
[
(Items.GOLDEN_PICKAXE) : new ItemStack(Items.GOLD_INGOT, count),
(Items.IRON_PICKAXE) : new ItemStack(Items.IRON_INGOT, count),
(TRContent.BRONZE_PICKAXE) : new ItemStack(TRContent.Ingots.BRONZE, count)
(Items.GOLDEN_PICKAXE) : stack(Items.GOLD_INGOT, count),
(Items.IRON_PICKAXE) : stack(Items.IRON_INGOT, count),
(TRContent.BRONZE_PICKAXE) : stack(TRContent.Ingots.BRONZE, count)
].each {pickaxe, materialStack ->
offerBlastFurnaceRecipe {
ingredients pickaxe, Items.SAND
@ -280,8 +280,8 @@ class BlastFurnaceRecipesProvider extends TechRebornRecipesProvider {
(Items.YELLOW_STAINED_GLASS_PANE) : Items.YELLOW_STAINED_GLASS
].each {(pane,glass) ->
offerBlastFurnaceRecipe {
ingredients new ItemStack(pane, 10)
outputs new ItemStack(glass, 3)
ingredients stack(pane, 10)
outputs stack(glass, 3)
power 128
time 150
heat 1000
@ -298,8 +298,8 @@ class BlastFurnaceRecipesProvider extends TechRebornRecipesProvider {
(Items.DAMAGED_ANVIL) : 6,
].each {(anvil,amount) ->
offerBlastFurnaceRecipe {
ingredients anvil, new ItemStack(Items.SAND, 2)
outputs new ItemStack(Items.IRON_INGOT, amount), new ItemStack(TRContent.Dusts.DARK_ASHES, 2)
ingredients anvil, stack(Items.SAND, 2)
outputs stack(Items.IRON_INGOT, amount), stack(TRContent.Dusts.DARK_ASHES, 2)
power 128
time 300
heat 1500

View file

@ -56,8 +56,8 @@ class ChemicalReactorRecipesProvider extends TechRebornRecipesProvider {
for (ColoredItem color : ColoredItem.values())
ColoredItem.createExtendedMixingColorStream(color, false, true).forEach(pair ->
offerChemicalReactorRecipe {
ingredients color.getDye(), new ItemStack(pair.getLeft().getWool(), 4)
output new ItemStack(pair.getRight().getWool(), 4)
ingredients color.getDye(), stack(pair.getLeft().getWool(), 4)
outputs stack(pair.getRight().getWool(), 4)
source pair.getLeft().getWool().toString() + "_with_" + color.getDye().toString()
power DYE_POWER
time DYE_TIME
@ -70,8 +70,8 @@ class ChemicalReactorRecipesProvider extends TechRebornRecipesProvider {
for (ColoredItem color : ColoredItem.values())
ColoredItem.createExtendedMixingColorStream(color, false, true).forEach(pair ->
offerChemicalReactorRecipe {
ingredients color.getDye(), new ItemStack(pair.getLeft().getCarpet(), 8)
output new ItemStack(pair.getRight().getCarpet(), 8)
ingredients color.getDye(), stack(pair.getLeft().getCarpet(), 8)
outputs stack(pair.getRight().getCarpet(), 8)
source pair.getLeft().getCarpet().toString() + "_with_" + color.getDye().toString()
power DYE_POWER
time DYE_TIME
@ -84,8 +84,8 @@ class ChemicalReactorRecipesProvider extends TechRebornRecipesProvider {
for (ColoredItem color : ColoredItem.values())
ColoredItem.createExtendedMixingColorStream(color, false, true).forEach(pair ->
offerChemicalReactorRecipe {
ingredients color.getDye(), new ItemStack(pair.getLeft().getConcretePowder(), 8)
output new ItemStack(pair.getRight().getCarpet(), 8)
ingredients color.getDye(), stack(pair.getLeft().getConcretePowder(), 8)
outputs stack(pair.getRight().getCarpet(), 8)
source pair.getLeft().getConcretePowder().toString() + "_with_" + color.getDye().toString()
power DYE_POWER
time DYE_TIME
@ -101,8 +101,8 @@ class ChemicalReactorRecipesProvider extends TechRebornRecipesProvider {
if (color != ColoredItem.NEUTRAL)
ColoredItem.createExtendedMixingColorStream(color, true, true).forEach(pair ->
offerChemicalReactorRecipe {
ingredients color.getDye(), new ItemStack(pair.getLeft().getCandle(), 2)
output new ItemStack(pair.getRight().getCandle(), 2)
ingredients color.getDye(), stack(pair.getLeft().getCandle(), 2)
outputs stack(pair.getRight().getCandle(), 2)
source pair.getLeft().getCandle().toString() + "_with_" + color.getDye().toString()
power DYE_POWER
time DYE_TIME
@ -117,8 +117,8 @@ class ChemicalReactorRecipesProvider extends TechRebornRecipesProvider {
if (color != ColoredItem.NEUTRAL)
ColoredItem.createExtendedMixingColorStream(color, true, true).forEach(pair ->
offerChemicalReactorRecipe {
ingredients color.getDye(), new ItemStack(pair.getLeft().getGlass(), 12)
output new ItemStack(pair.getRight().getGlass(), 12)
ingredients color.getDye(), stack(pair.getLeft().getGlass(), 12)
outputs stack(pair.getRight().getGlass(), 12)
source pair.getLeft().getGlass().toString() + "_with_" + color.getDye().toString()
power DYE_POWER
time DYE_TIME
@ -133,8 +133,8 @@ class ChemicalReactorRecipesProvider extends TechRebornRecipesProvider {
if (color != ColoredItem.NEUTRAL)
ColoredItem.createExtendedMixingColorStream(color, true, true).forEach(pair ->
offerChemicalReactorRecipe {
ingredients color.getDye(), new ItemStack(pair.getLeft().getGlassPane(), 16)
output new ItemStack(pair.getRight().getGlassPane(), 16)
ingredients color.getDye(), stack(pair.getLeft().getGlassPane(), 16)
outputs stack(pair.getRight().getGlassPane(), 16)
source pair.getLeft().getGlassPane().toString() + "_with_" + color.getDye().toString()
power DYE_POWER
time DYE_TIME
@ -149,8 +149,8 @@ class ChemicalReactorRecipesProvider extends TechRebornRecipesProvider {
if (color != ColoredItem.NEUTRAL)
ColoredItem.createExtendedMixingColorStream(color, true, true).forEach(pair ->
offerChemicalReactorRecipe {
ingredients color.getDye(), new ItemStack(pair.getLeft().getTerracotta(), 8)
output new ItemStack(pair.getRight().getTerracotta(), 8)
ingredients color.getDye(), stack(pair.getLeft().getTerracotta(), 8)
outputs stack(pair.getRight().getTerracotta(), 8)
source pair.getLeft().getTerracotta().toString() + "_with_" + color.getDye().toString()
power DYE_POWER
time DYE_TIME

View file

@ -49,7 +49,7 @@ class CompressorRecipesProvider extends TechRebornRecipesProvider {
var ingredient = TagConvertible.convertIf(plate.getSource())
offerCompressorRecipe {
ingredients ingredient
outputs new ItemStack(plate, 1)
outputs stack(plate, 1)
power 10
time 300
criterion getCriterionName(ingredient), getCriterionConditions(ingredient)
@ -59,7 +59,7 @@ class CompressorRecipesProvider extends TechRebornRecipesProvider {
var ingredient = TagConvertible.convertIf(plate.getSourceBlock())
offerCompressorRecipe {
ingredients ingredient
outputs new ItemStack(plate, 9)
outputs stack(plate, 9)
power 10
time 300
source "block"

View file

@ -69,7 +69,7 @@ class ExtractorRecipesProvider extends TechRebornRecipesProvider {
].each { item, dye ->
offerExtractorRecipe {
ingredients item
outputs new ItemStack(dye, 2)
outputs stack(dye, 2)
source item.toString()
power 10
time 300
@ -88,7 +88,7 @@ class ExtractorRecipesProvider extends TechRebornRecipesProvider {
].each { item, dye ->
offerExtractorRecipe {
ingredients item
outputs new ItemStack(dye, 4)
outputs stack(dye, 4)
source item.toString()
power 10
time 300
@ -104,7 +104,7 @@ class ExtractorRecipesProvider extends TechRebornRecipesProvider {
(Items.PEARLESCENT_FROGLIGHT) : Items.PURPLE_DYE
].each { item, dye ->
offerExtractorRecipe {
ingredients new ItemStack(item, 3)
ingredients stack(item, 3)
outputs dye
source item.toString()
power 10

View file

@ -58,6 +58,7 @@ class GrinderRecipesProvider extends TechRebornRecipesProvider {
generateRedSand()
generateConcretePowder()
generateSawdust()
generateMiscRecipes()
}
void generateVanillaRawMetals() {
@ -68,7 +69,7 @@ class GrinderRecipesProvider extends TechRebornRecipesProvider {
].each { raw, oreTag ->
offerGrinderRecipe {
ingredients oreTag
outputs new ItemStack(raw, 2)
outputs stack(raw, 2)
power 2
time 270
criterion getCriterionName(oreTag), getCriterionConditions(oreTag)
@ -81,7 +82,7 @@ class GrinderRecipesProvider extends TechRebornRecipesProvider {
if (!ore.isIndustrial())
offerGrinderRecipe {
ingredients ore.asTag()
outputs new ItemStack(raw, 2)
outputs stack(raw, 2)
power 2
time 270
criterion getCriterionName(ore.asTag()), getCriterionConditions(ore.asTag())
@ -101,7 +102,7 @@ class GrinderRecipesProvider extends TechRebornRecipesProvider {
if (gem.getOre() != null)
offerGrinderRecipe {
ingredients gem.getOre().asTag()
outputs new ItemStack(dust,2)
outputs stack(dust,2)
power 2
time 220
source "ore"
@ -110,7 +111,7 @@ class GrinderRecipesProvider extends TechRebornRecipesProvider {
if (gem.getStorageBlock() != null)
offerGrinderRecipe {
ingredients gem.getStorageBlock().asTag()
outputs new ItemStack(dust,9)
outputs stack(dust,9)
power 2
time 1500
source "block"
@ -131,7 +132,7 @@ class GrinderRecipesProvider extends TechRebornRecipesProvider {
if (ingot.getStorageBlock() != null)
offerGrinderRecipe {
ingredients ingot.getStorageBlock().asTag()
outputs new ItemStack(dust,9)
outputs stack(dust,9)
power 5
time 1500
source "block"
@ -155,7 +156,7 @@ class GrinderRecipesProvider extends TechRebornRecipesProvider {
].each {item, count ->
offerGrinderRecipe {
ingredients item
outputs new ItemStack(Items.SAND, count)
outputs stack(Items.SAND, count)
power count
time 200
source item.toString()
@ -179,7 +180,7 @@ class GrinderRecipesProvider extends TechRebornRecipesProvider {
].each {item, count ->
offerGrinderRecipe {
ingredients item
outputs new ItemStack(Items.RED_SAND, count)
outputs stack(Items.RED_SAND, count)
power count
time 200
source item.toString()
@ -232,7 +233,7 @@ class GrinderRecipesProvider extends TechRebornRecipesProvider {
].each { item, count ->
offerGrinderRecipe {
ingredients item
outputs new ItemStack(TRContent.SmallDusts.SAW, count)
outputs stack(TRContent.SmallDusts.SAW, count)
power 3
time 180
source item.id().path
@ -246,7 +247,7 @@ class GrinderRecipesProvider extends TechRebornRecipesProvider {
].each { item, count ->
offerGrinderRecipe {
ingredients item
outputs new ItemStack(TRContent.SmallDusts.SAW, count)
outputs stack(TRContent.SmallDusts.SAW, count)
power 3
time 180
source item.toString()
@ -254,4 +255,331 @@ class GrinderRecipesProvider extends TechRebornRecipesProvider {
}
}
}
void generateMiscRecipes() {
offerGrinderRecipe {
power 2
time 220
ingredients stack("minecraft:glowstone")
outputs stack("minecraft:glowstone_dust", 4)
}
offerGrinderRecipe {
power 4
time 200
ingredients stack("minecraft:netherrack")
outputs stack("techreborn:netherrack_dust")
}
offerGrinderRecipe {
power 2
time 200
ingredients tag("c:lapis_ores")
outputs stack("minecraft:lapis_lazuli", 10)
}
offerGrinderRecipe {
power 2
time 180
ingredients stack("minecraft:gravel")
outputs stack("minecraft:sand")
}
offerGrinderRecipe {
power 4
time 1080
ingredients stack("minecraft:quartz_block")
outputs stack("techreborn:quartz_dust", 4)
}
offerGrinderRecipe {
power 2
time 220
ingredients tag("c:sphalerite_ores")
outputs stack("techreborn:sphalerite_dust", 2)
}
offerGrinderRecipe {
power 2
time 100
ingredients tag("techreborn:calcite_small_dust_material")
outputs stack("techreborn:calcite_small_dust")
}
offerGrinderRecipe {
power 2
time 300
ingredients stack("minecraft:shroomlight")
outputs stack("techreborn:glowstone_small_dust", 2)
}
offerGrinderRecipe {
power 2
time 230
ingredients stack("minecraft:coal")
outputs stack("techreborn:coal_dust")
}
offerGrinderRecipe {
power 4
time 270
ingredients tag("c:emerald_ores")
outputs stack("minecraft:emerald")
}
offerGrinderRecipe {
power 2
time 170
ingredients stack("minecraft:bone")
outputs stack("minecraft:bone_meal", 6)
}
offerGrinderRecipe {
power 2
time 180
ingredients tag("techreborn:gravel_material")
outputs stack("minecraft:gravel")
}
offerGrinderRecipe {
power 3
time 300
ingredients tag("minecraft:wool")
outputs stack("minecraft:string", 4)
}
offerGrinderRecipe {
power 2
time 400
ingredients tag("c:froglights")
outputs stack("minecraft:prismarine_crystals", 2)
}
offerGrinderRecipe {
power 2
time 400
ingredients stack("minecraft:sea_lantern")
outputs stack("minecraft:prismarine_crystals", 4)
}
offerGrinderRecipe {
power 2
time 180
ingredients stack("minecraft:clay_ball")
outputs stack("techreborn:clay_dust")
}
offerGrinderRecipe {
power 4
time 270
ingredients tag("c:pyrite_ores")
outputs stack("techreborn:pyrite_dust", 2)
}
offerGrinderRecipe {
power 4
time 200
ingredients stack("minecraft:blaze_rod")
outputs stack("minecraft:blaze_powder", 4)
}
offerGrinderRecipe {
power 2
time 150
ingredients stack("minecraft:glow_berries", 4)
outputs stack("techreborn:glowstone_small_dust")
}
offerGrinderRecipe {
power 4
time 270
ingredients stack("minecraft:andesite")
outputs stack("techreborn:andesite_dust", 2)
}
offerGrinderRecipe {
power 4
time 270
ingredients stack("minecraft:emerald")
outputs stack("techreborn:emerald_dust")
}
offerGrinderRecipe {
power 2
time 270
ingredients tag("c:cinnabar_ores")
outputs stack("techreborn:cinnabar_dust", 2)
}
offerGrinderRecipe {
power 4
time 220
ingredients tag("c:sodalite_ores")
outputs stack("techreborn:sodalite_dust", 2)
}
offerGrinderRecipe {
power 4
time 200
ingredients stack("minecraft:ender_pearl")
outputs stack("techreborn:ender_pearl_dust", 2)
}
offerGrinderRecipe {
power 4
time 200
ingredients stack("minecraft:ender_eye")
outputs stack("techreborn:ender_eye_dust", 2)
}
offerGrinderRecipe {
power 4
time 200
ingredients tag("c:sponges")
outputs stack("techreborn:sponge_piece", 5)
}
offerGrinderRecipe {
power 2
time 400
ingredients stack("minecraft:coal_block")
outputs stack("techreborn:coal_dust", 9)
}
offerGrinderRecipe {
power 4
time 200
ingredients stack("minecraft:crimson_nylium")
outputs stack("techreborn:netherrack_dust")
}
offerGrinderRecipe {
power 4
time 230
ingredients stack("minecraft:charcoal")
outputs stack("techreborn:charcoal_dust")
}
offerGrinderRecipe {
power 2
time 400
ingredients tag("techreborn:calcite_dust_material")
outputs stack("techreborn:calcite_dust")
}
offerGrinderRecipe {
power 4
time 270
ingredients tag("c:diamond_ores")
outputs stack("minecraft:diamond")
}
offerGrinderRecipe {
power 4
time 270
ingredients stack("minecraft:amethyst_block")
outputs stack("techreborn:amethyst_dust", 2)
}
offerGrinderRecipe {
power 2
time 500
ingredients stack("minecraft:conduit")
outputs stack("techreborn:calcite_dust", 2)
}
offerGrinderRecipe {
power 4
time 270
ingredients tag("c:bauxite_ores")
outputs stack("techreborn:bauxite_dust", 2)
}
offerGrinderRecipe {
power 4
time 200
ingredients stack("minecraft:end_stone")
outputs stack("techreborn:endstone_dust")
}
offerGrinderRecipe {
power 4
time 200
ingredients stack("minecraft:ancient_debris")
outputs stack("minecraft:netherite_scrap", 2)
}
offerGrinderRecipe {
power 2
time 1440
ingredients stack("minecraft:diorite")
outputs stack("techreborn:diorite_dust")
}
offerGrinderRecipe {
power 2
time 270
ingredients tag("c:galena_ores")
outputs stack("techreborn:galena_dust", 2)
}
offerGrinderRecipe {
power 2
time 220
ingredients tag("c:sulfur_ores")
outputs stack("techreborn:sulfur_dust", 2)
}
offerGrinderRecipe {
power 2
time 200
ingredients tag("c:sulfurs")
outputs stack("techreborn:sulfur_dust")
}
offerGrinderRecipe {
power 2
time 400
ingredients stack("minecraft:prismarine_bricks")
outputs stack("minecraft:prismarine_shard", 7)
}
offerGrinderRecipe {
power 2
time 180
ingredients tag("c:limestone")
outputs stack("techreborn:marble_dust")
}
offerGrinderRecipe {
power 4
time 270
ingredients stack("minecraft:granite")
outputs stack("techreborn:granite_dust", 2)
}
offerGrinderRecipe {
power 4
time 270
ingredients tag("c:redstone_ores")
outputs stack("minecraft:redstone", 8)
}
offerGrinderRecipe {
power 4
time 270
ingredients stack("minecraft:nether_quartz_ore")
outputs stack("minecraft:quartz", 2)
}
offerGrinderRecipe {
power 2
time 180
ingredients tag("c:marble")
outputs stack("techreborn:marble_dust")
}
offerGrinderRecipe {
power 4
time 270
ingredients stack("minecraft:diamond")
outputs stack("techreborn:diamond_dust")
}
offerGrinderRecipe {
power 4
time 270
ingredients stack("minecraft:quartz")
outputs stack("techreborn:quartz_dust")
}
offerGrinderRecipe {
power 6
time 400
ingredients stack("minecraft:obsidian")
outputs stack("techreborn:obsidian_dust", 4)
}
offerGrinderRecipe {
power 2
time 200
ingredients tag("c:coal_ores")
outputs stack("minecraft:coal", 2)
}
offerGrinderRecipe {
power 4
time 200
ingredients stack("minecraft:warped_nylium")
outputs stack("techreborn:netherrack_dust")
}
offerGrinderRecipe {
power 2
time 400
ingredients stack("minecraft:prismarine")
outputs stack("minecraft:prismarine_shard", 3)
}
offerGrinderRecipe {
power 2
time 270
ingredients stack("minecraft:flint")
outputs stack("techreborn:flint_dust")
}
offerGrinderRecipe {
power 2
time 180
ingredients tag("c:basalt")
outputs stack("techreborn:basalt_dust")
}
}
}

View file

@ -28,21 +28,22 @@ import net.minecraft.util.Identifier
import reborncore.common.fluid.FluidValue
import reborncore.common.fluid.container.FluidInstance
import techreborn.api.recipe.recipes.IndustrialGrinderRecipe
import techreborn.datagen.recipes.TechRebornRecipesProvider
import techreborn.datagen.recipes.machine.MachineRecipeWithFluidJsonFactory
import techreborn.init.ModRecipes
class IndustrialGrinderRecipeJsonFactory extends MachineRecipeWithFluidJsonFactory<IndustrialGrinderRecipe> {
protected IndustrialGrinderRecipeJsonFactory() {
super(ModRecipes.INDUSTRIAL_GRINDER)
protected IndustrialGrinderRecipeJsonFactory(TechRebornRecipesProvider provider) {
super(ModRecipes.INDUSTRIAL_GRINDER, provider)
}
static IndustrialGrinderRecipeJsonFactory create() {
return new IndustrialGrinderRecipeJsonFactory()
static IndustrialGrinderRecipeJsonFactory create(TechRebornRecipesProvider provider) {
return new IndustrialGrinderRecipeJsonFactory(provider)
}
static IndustrialGrinderRecipeJsonFactory createIndustrialGrinder(@DelegatesTo(value = IndustrialGrinderRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
def factory = new IndustrialGrinderRecipeJsonFactory()
static IndustrialGrinderRecipeJsonFactory createIndustrialGrinder(TechRebornRecipesProvider provider, @DelegatesTo(value = IndustrialGrinderRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
def factory = new IndustrialGrinderRecipeJsonFactory(provider)
closure.setDelegate(factory)
closure.call(factory)
return factory

View file

@ -72,7 +72,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
].each {boots, smallDust ->
offerIndustrialGrinderRecipe {
ingredients boots
outputs new ItemStack(dustMap.get(smallDust), count-1), new ItemStack(smallDust, 2)
outputs stack(dustMap.get(smallDust), count-1), stack(smallDust, 2)
power ARMOR_POWER
time ARMOR_TIME
fluidAmount ARMOR_FLUID_AMOUNT
@ -81,7 +81,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
}
offerIndustrialGrinderRecipe {
ingredients boots
outputs new ItemStack(dustMap.get(smallDust), count+1), smallDust
outputs stack(dustMap.get(smallDust), count+1), smallDust
power ARMOR_POWER
time ARMOR_TIME
fluidAmount ARMOR_FLUID_AMOUNT
@ -102,7 +102,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
].each {chestplate, smallDust ->
offerIndustrialGrinderRecipe {
ingredients chestplate
outputs new ItemStack(dustMap.get(smallDust), count-1), new ItemStack(smallDust, 2)
outputs stack(dustMap.get(smallDust), count-1), stack(smallDust, 2)
power ARMOR_POWER
time ARMOR_TIME
fluidAmount ARMOR_FLUID_AMOUNT
@ -111,7 +111,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
}
offerIndustrialGrinderRecipe {
ingredients chestplate
outputs new ItemStack(dustMap.get(smallDust), count+1), smallDust
outputs stack(dustMap.get(smallDust), count+1), smallDust
power ARMOR_POWER
time ARMOR_TIME
fluidAmount ARMOR_FLUID_AMOUNT
@ -132,7 +132,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
].each {helmet, smallDust ->
offerIndustrialGrinderRecipe {
ingredients helmet
outputs new ItemStack(dustMap.get(smallDust), count-1), new ItemStack(smallDust, 2)
outputs stack(dustMap.get(smallDust), count-1), stack(smallDust, 2)
power ARMOR_POWER
time ARMOR_TIME
fluidAmount ARMOR_FLUID_AMOUNT
@ -141,7 +141,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
}
offerIndustrialGrinderRecipe {
ingredients helmet
outputs new ItemStack(dustMap.get(smallDust), count+1), smallDust
outputs stack(dustMap.get(smallDust), count+1), smallDust
power ARMOR_POWER
time ARMOR_TIME
fluidAmount ARMOR_FLUID_AMOUNT
@ -162,7 +162,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
].each {leggings, smallDust ->
offerIndustrialGrinderRecipe {
ingredients leggings
outputs new ItemStack(dustMap.get(smallDust), count-1), new ItemStack(smallDust, 2)
outputs stack(dustMap.get(smallDust), count-1), stack(smallDust, 2)
power ARMOR_POWER
time ARMOR_TIME
fluidAmount ARMOR_FLUID_AMOUNT
@ -171,7 +171,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
}
offerIndustrialGrinderRecipe {
ingredients leggings
outputs new ItemStack(dustMap.get(smallDust), count+1), smallDust
outputs stack(dustMap.get(smallDust), count+1), smallDust
power ARMOR_POWER
time ARMOR_TIME
fluidAmount ARMOR_FLUID_AMOUNT
@ -189,7 +189,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
].each {horseArmor, smallDust ->
offerIndustrialGrinderRecipe {
ingredients horseArmor
outputs new ItemStack(dustMap.get(smallDust), count-1), new ItemStack(smallDust, 2)
outputs stack(dustMap.get(smallDust), count-1), stack(smallDust, 2)
power ARMOR_POWER
time ARMOR_TIME
fluidAmount ARMOR_FLUID_AMOUNT
@ -198,7 +198,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
}
offerIndustrialGrinderRecipe {
ingredients horseArmor
outputs new ItemStack(dustMap.get(smallDust), count+1), smallDust
outputs stack(dustMap.get(smallDust), count+1), smallDust
power ARMOR_POWER
time ARMOR_TIME
fluidAmount ARMOR_FLUID_AMOUNT
@ -218,7 +218,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
].each {sword, smallDust ->
offerIndustrialGrinderRecipe {
ingredients sword
outputs new ItemStack(smallDust, 2), TRContent.SmallDusts.SAW
outputs stack(smallDust, 2), TRContent.SmallDusts.SAW
power TOOL_POWER
time TOOL_TIME
fluidAmount TOOL_FLUID_AMOUNT
@ -256,7 +256,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
}
offerIndustrialGrinderRecipe {
ingredients shovel
outputs new ItemStack(smallDust, 2), TRContent.SmallDusts.SAW
outputs stack(smallDust, 2), TRContent.SmallDusts.SAW
power TOOL_POWER
time TOOL_TIME
fluidAmount TOOL_FLUID_AMOUNT
@ -276,7 +276,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
].each {hoe, smallDust ->
offerIndustrialGrinderRecipe {
ingredients hoe
outputs new ItemStack(smallDust, 2), TRContent.SmallDusts.SAW
outputs stack(smallDust, 2), TRContent.SmallDusts.SAW
power TOOL_POWER
time TOOL_TIME
fluidAmount TOOL_FLUID_AMOUNT
@ -305,7 +305,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
].each {axe, smallDust ->
offerIndustrialGrinderRecipe {
ingredients axe
outputs new ItemStack(smallDust, 3), TRContent.SmallDusts.SAW
outputs stack(smallDust, 3), TRContent.SmallDusts.SAW
power TOOL_POWER
time TOOL_TIME
fluidAmount TOOL_FLUID_AMOUNT
@ -314,7 +314,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
}
offerIndustrialGrinderRecipe {
ingredients axe
outputs dustMap.get(smallDust), new ItemStack(smallDust, 3), TRContent.SmallDusts.SAW
outputs dustMap.get(smallDust), stack(smallDust, 3), TRContent.SmallDusts.SAW
power TOOL_POWER
time TOOL_TIME
fluidAmount TOOL_FLUID_AMOUNT
@ -334,7 +334,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
].each {pickaxe, smallDust ->
offerIndustrialGrinderRecipe {
ingredients pickaxe
outputs new ItemStack(smallDust, 3), TRContent.SmallDusts.SAW
outputs stack(smallDust, 3), TRContent.SmallDusts.SAW
power TOOL_POWER
time TOOL_TIME
fluidAmount TOOL_FLUID_AMOUNT
@ -343,7 +343,7 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
}
offerIndustrialGrinderRecipe {
ingredients pickaxe
outputs dustMap.get(smallDust), new ItemStack(smallDust, 3), TRContent.SmallDusts.SAW
outputs dustMap.get(smallDust), stack(smallDust, 3), TRContent.SmallDusts.SAW
power TOOL_POWER
time TOOL_TIME
fluidAmount TOOL_FLUID_AMOUNT

View file

@ -29,21 +29,22 @@ import net.minecraft.util.Identifier
import reborncore.common.fluid.FluidValue
import reborncore.common.fluid.container.FluidInstance
import techreborn.api.recipe.recipes.IndustrialSawmillRecipe
import techreborn.datagen.recipes.TechRebornRecipesProvider
import techreborn.datagen.recipes.machine.MachineRecipeWithFluidJsonFactory
import techreborn.init.ModRecipes
class IndustrialSawmillRecipeJsonFactory extends MachineRecipeWithFluidJsonFactory<IndustrialSawmillRecipe> {
protected IndustrialSawmillRecipeJsonFactory() {
super(ModRecipes.INDUSTRIAL_SAWMILL)
protected IndustrialSawmillRecipeJsonFactory(TechRebornRecipesProvider provider) {
super(ModRecipes.INDUSTRIAL_SAWMILL, provider)
}
static IndustrialSawmillRecipeJsonFactory create() {
return new IndustrialSawmillRecipeJsonFactory()
static IndustrialSawmillRecipeJsonFactory create(TechRebornRecipesProvider provider) {
return new IndustrialSawmillRecipeJsonFactory(provider)
}
static IndustrialSawmillRecipeJsonFactory createIndustrialSawmill(@DelegatesTo(value = IndustrialSawmillRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
def factory = new IndustrialSawmillRecipeJsonFactory()
static IndustrialSawmillRecipeJsonFactory createIndustrialSawmill(TechRebornRecipesProvider provider, @DelegatesTo(value = IndustrialSawmillRecipeJsonFactory.class, strategy = Closure.DELEGATE_FIRST) Closure closure) {
def factory = new IndustrialSawmillRecipeJsonFactory(provider)
closure.setDelegate(factory)
closure.call(factory)
return factory

View file

@ -57,7 +57,7 @@ class IndustrialSawmillRecipesProvider extends TechRebornRecipesProvider {
].each {logs, planks ->
offerIndustrialSawmillRecipe {
ingredients logs
outputs new ItemStack(planks,4), new ItemStack(TRContent.Dusts.SAW, 3)
outputs stack(planks,4), stack(TRContent.Dusts.SAW, 3)
power 40
time 200
fluidAmount 1000 // in millibuckets
@ -65,7 +65,7 @@ class IndustrialSawmillRecipesProvider extends TechRebornRecipesProvider {
}
offerIndustrialSawmillRecipe {
ingredients ItemTags.BAMBOO_BLOCKS
outputs new ItemStack(Items.BAMBOO_PLANKS,2), new ItemStack(TRContent.Dusts.SAW, 1)
outputs stack(Items.BAMBOO_PLANKS,2), stack(TRContent.Dusts.SAW, 1)
power 40
time 100
fluidAmount 500 // in millibuckets
@ -85,7 +85,7 @@ class IndustrialSawmillRecipesProvider extends TechRebornRecipesProvider {
].each { stairs, slab ->
offerIndustrialSawmillRecipe {
ingredients stairs
outputs slab, new ItemStack(TRContent.Dusts.SAW, 2)
outputs slab, stack(TRContent.Dusts.SAW, 2)
power 30
time 100
fluidAmount 250 // in millibuckets
@ -99,7 +99,7 @@ class IndustrialSawmillRecipesProvider extends TechRebornRecipesProvider {
].each { stairs, slab ->
offerIndustrialSawmillRecipe {
ingredients stairs
outputs slab, new ItemStack(TRContent.Dusts.SAW, 2)
outputs slab, stack(TRContent.Dusts.SAW, 2)
power 30
time 100
fluidAmount 250 // in millibuckets
@ -122,7 +122,7 @@ class IndustrialSawmillRecipesProvider extends TechRebornRecipesProvider {
].each { slab, plate ->
offerIndustrialSawmillRecipe {
ingredients slab
outputs new ItemStack(plate, 2), new ItemStack(TRContent.Dusts.SAW, 2)
outputs stack(plate, 2), stack(TRContent.Dusts.SAW, 2)
power 30
time 200
fluidAmount 250 // in millibuckets
@ -136,7 +136,7 @@ class IndustrialSawmillRecipesProvider extends TechRebornRecipesProvider {
].each { slab, plate ->
offerIndustrialSawmillRecipe {
ingredients slab
outputs new ItemStack(plate, 2), new ItemStack(TRContent.Dusts.SAW, 2)
outputs stack(plate, 2), stack(TRContent.Dusts.SAW, 2)
power 30
time 200
fluidAmount 250 // in millibuckets
@ -157,7 +157,7 @@ class IndustrialSawmillRecipesProvider extends TechRebornRecipesProvider {
].each { item, count ->
offerIndustrialSawmillRecipe {
ingredients item
outputs new ItemStack(TRContent.Dusts.SAW, count)
outputs stack(TRContent.Dusts.SAW, count)
power 30
time 200
fluidAmount 125*count // in millibuckets
@ -177,7 +177,7 @@ class IndustrialSawmillRecipesProvider extends TechRebornRecipesProvider {
].each {item, count ->
offerIndustrialSawmillRecipe {
ingredients item
outputs new ItemStack(TRContent.SmallDusts.SAW, count)
outputs stack(TRContent.SmallDusts.SAW, count)
power 30
time 100
fluidAmount 100 // in millibuckets
@ -187,7 +187,7 @@ class IndustrialSawmillRecipesProvider extends TechRebornRecipesProvider {
}
offerIndustrialSawmillRecipe {
ingredients ItemTags.WOODEN_BUTTONS
outputs new ItemStack(TRContent.SmallDusts.SAW, 1)
outputs stack(TRContent.SmallDusts.SAW, 1)
power 20
time 50
fluidAmount 50 // in millibuckets

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/amethyst_dust"
]
},
"criteria": {
"has_amethyst_block": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:amethyst_block"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/amethyst_dust"
}
}
},
"requirements": [
[
"has_amethyst_block",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/andesite_dust"
]
},
"criteria": {
"has_andesite": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:andesite"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/andesite_dust"
}
}
},
"requirements": [
[
"has_andesite",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/basalt_dust_from_basalt"
]
},
"criteria": {
"has_basalt": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:basalt"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/basalt_dust_from_basalt"
}
}
},
"requirements": [
[
"has_basalt",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/bauxite_dust"
]
},
"criteria": {
"has_bauxite_ore": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:bauxite_ores"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/bauxite_dust"
}
}
},
"requirements": [
[
"has_bauxite_ore",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/blaze_powder"
]
},
"criteria": {
"has_blaze_rod": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:blaze_rod"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/blaze_powder"
}
}
},
"requirements": [
[
"has_blaze_rod",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/bone_meal"
]
},
"criteria": {
"has_bone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:bone"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/bone_meal"
}
}
},
"requirements": [
[
"has_bone",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/calcite_dust"
]
},
"criteria": {
"has_calcite_dust_material": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "techreborn:calcite_dust_material"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/calcite_dust"
}
}
},
"requirements": [
[
"has_calcite_dust_material",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/calcite_dust_from_conduit"
]
},
"criteria": {
"has_conduit": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:conduit"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/calcite_dust_from_conduit"
}
}
},
"requirements": [
[
"has_conduit",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/calcite_small_dust"
]
},
"criteria": {
"has_calcite_small_dust_material": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "techreborn:calcite_small_dust_material"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/calcite_small_dust"
}
}
},
"requirements": [
[
"has_calcite_small_dust_material",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/charcoal_dust"
]
},
"criteria": {
"has_charcoal": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:charcoal"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/charcoal_dust"
}
}
},
"requirements": [
[
"has_charcoal",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/cinnabar_dust_dust_from_ore"
]
},
"criteria": {
"has_cinnabar_ore": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:cinnabar_ores"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/cinnabar_dust_dust_from_ore"
}
}
},
"requirements": [
[
"has_cinnabar_ore",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/clay_dust"
]
},
"criteria": {
"has_clay_ball": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:clay_ball"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/clay_dust"
}
}
},
"requirements": [
[
"has_clay_ball",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/coal"
]
},
"criteria": {
"has_coal_ores": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:coal_ores"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/coal"
}
}
},
"requirements": [
[
"has_coal_ores",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/coal_dust"
]
},
"criteria": {
"has_coal": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:coal"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/coal_dust"
}
}
},
"requirements": [
[
"has_coal",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/coal_dust_from_block"
]
},
"criteria": {
"has_coal_block": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:coal_block"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/coal_dust_from_block"
}
}
},
"requirements": [
[
"has_coal_block",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/diamond"
]
},
"criteria": {
"has_diamond_ores": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:diamond_ores"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/diamond"
}
}
},
"requirements": [
[
"has_diamond_ores",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/diamond_dust"
]
},
"criteria": {
"has_diamond": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:diamond"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/diamond_dust"
}
}
},
"requirements": [
[
"has_diamond",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/diorite_dust"
]
},
"criteria": {
"has_diorite": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:diorite"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/diorite_dust"
}
}
},
"requirements": [
[
"has_diorite",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/emerald"
]
},
"criteria": {
"has_emerald_ores": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:emerald_ores"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/emerald"
}
}
},
"requirements": [
[
"has_emerald_ores",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/emerald_dust"
]
},
"criteria": {
"has_emerald": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:emerald"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/emerald_dust"
}
}
},
"requirements": [
[
"has_emerald",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/ender_pearl_dust"
]
},
"criteria": {
"has_ender_pearl": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:ender_pearl"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/ender_pearl_dust"
}
}
},
"requirements": [
[
"has_ender_pearl",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/endstone_dust"
]
},
"criteria": {
"has_endstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:end_stone"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/endstone_dust"
}
}
},
"requirements": [
[
"has_endstone",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/flint_dust"
]
},
"criteria": {
"has_flint": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:flint"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/flint_dust"
}
}
},
"requirements": [
[
"has_flint",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/galena_dust"
]
},
"criteria": {
"has_galena_ore": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:galena_ores"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/galena_dust"
}
}
},
"requirements": [
[
"has_galena_ore",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/glowstone_dust"
]
},
"criteria": {
"has_glowstone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:glowstone"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/glowstone_dust"
}
}
},
"requirements": [
[
"has_glowstone",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/glowstone_small_dust_from_glow_berries"
]
},
"criteria": {
"has_glow_berries": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:glow_berries"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/glowstone_small_dust_from_glow_berries"
}
}
},
"requirements": [
[
"has_glow_berries",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/glowstone_small_dust_from_shroomlight"
]
},
"criteria": {
"has_shroomlight": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:shroomlight"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/glowstone_small_dust_from_shroomlight"
}
}
},
"requirements": [
[
"has_shroomlight",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/granite_dust"
]
},
"criteria": {
"has_granite": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:granite"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/granite_dust"
}
}
},
"requirements": [
[
"has_granite",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/gravel"
]
},
"criteria": {
"has_gravel_material": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "techreborn:gravel_material"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/gravel"
}
}
},
"requirements": [
[
"has_gravel_material",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/lapis_lazuli"
]
},
"criteria": {
"has_lapis_lazuli_ores": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:lapis_ores"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/lapis_lazuli"
}
}
},
"requirements": [
[
"has_lapis_lazuli_ores",
"has_the_recipe"
]
]
}

View file

@ -1,40 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/marble_dust_from_limestone"
]
},
"criteria": {
"has_limestone": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:limestone"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/marble_dust_from_limestone"
}
}
},
"requirements": [
[
"has_limestone",
"has_the_recipe"
]
],
"fabric:load_conditions": [
{
"condition": "fabric:item_tags_populated",
"values": [
"c:limestone"
]
}
]
}

View file

@ -1,40 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/marble_dust_from_marble"
]
},
"criteria": {
"has_marble": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:marble"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/marble_dust_from_marble"
}
}
},
"requirements": [
[
"has_marble",
"has_the_recipe"
]
],
"fabric:load_conditions": [
{
"condition": "fabric:item_tags_populated",
"values": [
"c:marble"
]
}
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/netherite_scrap"
]
},
"criteria": {
"has_ancient_debris": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:ancient_debris"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/netherite_scrap"
}
}
},
"requirements": [
[
"has_ancient_debris",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/netherrack_dust"
]
},
"criteria": {
"has_netherrack": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:netherrack"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/netherrack_dust"
}
}
},
"requirements": [
[
"has_netherrack",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/netherrack_dust_from_crimson"
]
},
"criteria": {
"has_crimson_nylium": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:crimson_nylium"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/netherrack_dust_from_crimson"
}
}
},
"requirements": [
[
"has_crimson_nylium",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/netherrack_dust_from_warped"
]
},
"criteria": {
"has_warped_nylium": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:warped_nylium"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/netherrack_dust_from_warped"
}
}
},
"requirements": [
[
"has_warped_nylium",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/obsidian_dust"
]
},
"criteria": {
"has_obsidian": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:obsidian"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/obsidian_dust"
}
}
},
"requirements": [
[
"has_obsidian",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/prismarine_crystals"
]
},
"criteria": {
"has_prismarine_shard": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:prismarine_shard"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/prismarine_crystals"
}
}
},
"requirements": [
[
"has_prismarine_shard",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/prismarine_crystals_from_froglight"
]
},
"criteria": {
"has_froglight": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:froglight"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/prismarine_crystals_from_froglight"
}
}
},
"requirements": [
[
"has_froglight",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/prismarine_crystals_from_sea_lantern"
]
},
"criteria": {
"has_sea_lantern": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:sea_lantern"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/prismarine_crystals_from_sea_lantern"
}
}
},
"requirements": [
[
"has_sea_lantern",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/prismarine_shards_from_prismarine"
]
},
"criteria": {
"has_prismarine": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:prismarine"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/prismarine_shards_from_prismarine"
}
}
},
"requirements": [
[
"has_prismarine",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/prismarine_shards_from_prismarine_bricks"
]
},
"criteria": {
"has_prismarine": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:prismarine"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/prismarine_shards_from_prismarine_bricks"
}
}
},
"requirements": [
[
"has_prismarine",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/pyrite_dust_from_ore"
]
},
"criteria": {
"has_pyrite_ore": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:pyrite_ores"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/pyrite_dust_from_ore"
}
}
},
"requirements": [
[
"has_pyrite_ore",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/quartz"
]
},
"criteria": {
"has_nether_quartz_ore": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:nether_quartz_ore"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/quartz"
}
}
},
"requirements": [
[
"has_nether_quartz_ore",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/quartz_dust_from_gem"
]
},
"criteria": {
"has_quartz": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:quartz"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/quartz_dust_from_gem"
}
}
},
"requirements": [
[
"has_quartz",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/quartz_dust_from_quartz_block"
]
},
"criteria": {
"has_quartz": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:quartz_block"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/quartz_dust_from_quartz_block"
}
}
},
"requirements": [
[
"has_quartz",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/redstone"
]
},
"criteria": {
"has_redstone_ores": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:redstone_ores"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/redstone"
}
}
},
"requirements": [
[
"has_redstone_ores",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/sand"
]
},
"criteria": {
"has_gravel": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": ["minecraft:gravel"]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/sand"
}
}
},
"requirements": [
[
"has_gravel",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/sodalite_dust_from_ore"
]
},
"criteria": {
"has_sodalite_ore": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:sodalite_ores"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/sodalite_dust_from_ore"
}
}
},
"requirements": [
[
"has_sodalite_ore",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/sphalerite_dust_from_ore"
]
},
"criteria": {
"has_sphalerite_ore": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:sphalerite_ores"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/sphalerite_dust_from_ore"
}
}
},
"requirements": [
[
"has_sphalerite_ore",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/sponge_piece"
]
},
"criteria": {
"has_sponges": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:sponges"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/sponge_piece"
}
}
},
"requirements": [
[
"has_sponges",
"has_the_recipe"
]
]
}

View file

@ -1,32 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/string_from_wool"
]
},
"criteria": {
"has_wool": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "minecraft:wool"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/string_from_wool"
}
}
},
"requirements": [
[
"has_wool",
"has_the_recipe"
]
]
}

View file

@ -1,40 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/sulfur_dust"
]
},
"criteria": {
"has_sulfur": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:sulfurs"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/sulfur_dust"
}
}
},
"requirements": [
[
"has_sulfur",
"has_the_recipe"
]
],
"fabric:load_conditions": [
{
"condition": "fabric:item_tags_populated",
"values": [
"c:sulfurs"
]
}
]
}

View file

@ -1,40 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"techreborn:grinder/sulfur_dust_from_ore"
]
},
"criteria": {
"has_sulfur_ore": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"tag": "c:sulfur_ores"
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "techreborn:grinder/sulfur_dust_from_ore"
}
}
},
"requirements": [
[
"has_sulfur_ore",
"has_the_recipe"
]
],
"fabric:load_conditions": [
{
"condition": "fabric:item_tags_populated",
"values": [
"c:sulfur_ores"
]
}
]
}

View file

@ -1,16 +0,0 @@
{
"type": "techreborn:grinder",
"power": 4,
"time": 270,
"ingredients": [
{
"item": "minecraft:amethyst_block"
}
],
"results": [
{
"item": "techreborn:amethyst_dust",
"count": 2
}
]
}

View file

@ -1,16 +0,0 @@
{
"type": "techreborn:grinder",
"power": 4,
"time": 270,
"ingredients": [
{
"item": "minecraft:andesite"
}
],
"results": [
{
"item": "techreborn:andesite_dust",
"count": 2
}
]
}

View file

@ -1,17 +0,0 @@
{
"type": "techreborn:grinder",
"power": 2,
"time": 180,
"ingredients" : [
{
"tag": "c:basalt"
}
],
"results" : [
{
"item": "techreborn:basalt_dust"
}
]
}

View file

@ -1,16 +0,0 @@
{
"type": "techreborn:grinder",
"power": 4,
"time": 270,
"ingredients": [
{
"tag": "c:bauxite_ores"
}
],
"results": [
{
"item": "techreborn:bauxite_dust",
"count": 2
}
]
}

View file

@ -1,16 +0,0 @@
{
"type": "techreborn:grinder",
"power": 4,
"time": 200,
"ingredients": [
{
"item": "minecraft:blaze_rod"
}
],
"results": [
{
"item": "minecraft:blaze_powder",
"count": 4
}
]
}

View file

@ -1,16 +0,0 @@
{
"type": "techreborn:grinder",
"power": 2,
"time": 170,
"ingredients" : [
{
"item": "minecraft:bone"
}
],
"results" : [
{
"item": "minecraft:bone_meal",
"count": 6
}
]
}

View file

@ -1,15 +0,0 @@
{
"type": "techreborn:grinder",
"power": 2,
"time": 400,
"ingredients" : [
{
"tag": "techreborn:calcite_dust_material"
}
],
"results" : [
{
"item": "techreborn:calcite_dust"
}
]
}

View file

@ -1,16 +0,0 @@
{
"type": "techreborn:grinder",
"power": 2,
"time": 500,
"ingredients" : [
{
"item": "minecraft:conduit"
}
],
"results" : [
{
"item": "techreborn:calcite_dust",
"count": 2
}
]
}

View file

@ -1,15 +0,0 @@
{
"type": "techreborn:grinder",
"power": 2,
"time": 100,
"ingredients" : [
{
"tag": "techreborn:calcite_small_dust_material"
}
],
"results" : [
{
"item": "techreborn:calcite_small_dust"
}
]
}

View file

@ -1,15 +0,0 @@
{
"type": "techreborn:grinder",
"power": 4,
"time": 230,
"ingredients" : [
{
"item": "minecraft:charcoal"
}
],
"results" : [
{
"item": "techreborn:charcoal_dust"
}
]
}

View file

@ -1,16 +0,0 @@
{
"type": "techreborn:grinder",
"power": 2,
"time": 270,
"ingredients": [
{
"tag": "c:cinnabar_ores"
}
],
"results": [
{
"item": "techreborn:cinnabar_dust",
"count": 2
}
]
}

View file

@ -1,15 +0,0 @@
{
"type": "techreborn:grinder",
"power": 2,
"time": 180,
"ingredients" : [
{
"item": "minecraft:clay_ball"
}
],
"results" : [
{
"item": "techreborn:clay_dust"
}
]
}

View file

@ -1,16 +0,0 @@
{
"type": "techreborn:grinder",
"power": 2,
"time": 200,
"ingredients": [
{
"tag": "c:coal_ores"
}
],
"results": [
{
"item": "minecraft:coal",
"count": 2
}
]
}

View file

@ -1,15 +0,0 @@
{
"type": "techreborn:grinder",
"power": 2,
"time": 230,
"ingredients" : [
{
"item": "minecraft:coal"
}
],
"results" : [
{
"item": "techreborn:coal_dust"
}
]
}

View file

@ -1,16 +0,0 @@
{
"type": "techreborn:grinder",
"power": 2,
"time": 400,
"ingredients" : [
{
"item": "minecraft:coal_block"
}
],
"results" : [
{
"item": "techreborn:coal_dust",
"count": 9
}
]
}

View file

@ -1,15 +0,0 @@
{
"type": "techreborn:grinder",
"power": 4,
"time": 270,
"ingredients": [
{
"tag": "c:diamond_ores"
}
],
"results": [
{
"item": "minecraft:diamond"
}
]
}

View file

@ -1,15 +0,0 @@
{
"type": "techreborn:grinder",
"power": 4,
"time": 270,
"ingredients": [
{
"item": "minecraft:diamond"
}
],
"results": [
{
"item": "techreborn:diamond_dust"
}
]
}

View file

@ -1,16 +0,0 @@
{
"type": "techreborn:grinder",
"power": 2,
"time": 1440,
"ingredients": [
{
"item": "minecraft:diorite",
"count": 1
}
],
"results": [
{
"item": "techreborn:diorite_dust"
}
]
}

View file

@ -1,15 +0,0 @@
{
"type": "techreborn:grinder",
"power": 4,
"time": 270,
"ingredients": [
{
"tag": "c:emerald_ores"
}
],
"results": [
{
"item": "minecraft:emerald"
}
]
}

View file

@ -1,15 +0,0 @@
{
"type": "techreborn:grinder",
"power": 4,
"time": 270,
"ingredients": [
{
"item": "minecraft:emerald"
}
],
"results": [
{
"item": "techreborn:emerald_dust"
}
]
}

View file

@ -1,16 +0,0 @@
{
"type": "techreborn:grinder",
"power": 4,
"time": 200,
"ingredients": [
{
"item": "minecraft:ender_eye"
}
],
"results": [
{
"item": "techreborn:ender_eye_dust",
"count": 2
}
]
}

View file

@ -1,16 +0,0 @@
{
"type": "techreborn:grinder",
"power": 4,
"time": 200,
"ingredients": [
{
"item": "minecraft:ender_pearl"
}
],
"results": [
{
"item": "techreborn:ender_pearl_dust",
"count": 2
}
]
}

View file

@ -1,15 +0,0 @@
{
"type": "techreborn:grinder",
"power": 4,
"time": 200,
"ingredients": [
{
"item": "minecraft:end_stone"
}
],
"results": [
{
"item": "techreborn:endstone_dust"
}
]
}

View file

@ -1,15 +0,0 @@
{
"type": "techreborn:grinder",
"power": 2,
"time": 270,
"ingredients": [
{
"item": "minecraft:flint"
}
],
"results": [
{
"item": "techreborn:flint_dust"
}
]
}

View file

@ -1,16 +0,0 @@
{
"type": "techreborn:grinder",
"power": 2,
"time": 270,
"ingredients": [
{
"tag": "c:galena_ores"
}
],
"results": [
{
"item": "techreborn:galena_dust",
"count": 2
}
]
}

View file

@ -1,16 +0,0 @@
{
"type": "techreborn:grinder",
"power": 2,
"time": 220,
"ingredients" : [
{
"item": "minecraft:glowstone"
}
],
"results" : [
{
"item": "minecraft:glowstone_dust",
"count": 4
}
]
}

Some files were not shown because too many files have changed in this diff Show more