Skip to content

Commit

Permalink
crooking recipes datagen
Browse files Browse the repository at this point in the history
  • Loading branch information
MattiDragon committed Jul 6, 2023
1 parent d92c26d commit 5db897d
Show file tree
Hide file tree
Showing 16 changed files with 326 additions and 25 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
{
"type": "fabricaeexnihilo:milking",
"entity": "minecraft:cow",
"fluid": "fabricaeexnihilo:milk",
"amount": 810,
"cooldown": 20
"cooldown": 20,
"entity": "minecraft:cow",
"fluid": {
"type": "fabricaeexnihilo:milk"
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
{
"type": "fabricaeexnihilo:milking",
"entity": "minecraft:witch",
"fluid": "fabricaeexnihilo:witchwater",
"amount": 810,
"cooldown": 20
"cooldown": 20,
"entity": "minecraft:witch",
"fluid": {
"type": "fabricaeexnihilo:witchwater"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@
"type": "fabricaeexnihilo:crook",
"block": "minecraft:acacia_leaves",
"result": {
"stack": "minecraft:acacia_sapling",
"chances": [
0.25
]
],
"stack": {
"count": 1,
"item": "minecraft:acacia_sapling"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@
"type": "fabricaeexnihilo:crook",
"block": "minecraft:birch_leaves",
"result": {
"stack": "minecraft:birch_sapling",
"chances": [
0.25
]
],
"stack": {
"count": 1,
"item": "minecraft:birch_sapling"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@
"type": "fabricaeexnihilo:crook",
"block": "minecraft:dark_oak_leaves",
"result": {
"stack": "minecraft:dark_oak_sapling",
"chances": [
0.25
]
],
"stack": {
"count": 1,
"item": "minecraft:dark_oak_sapling"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@
"type": "fabricaeexnihilo:crook",
"block": "minecraft:jungle_leaves",
"result": {
"stack": "minecraft:jungle_sapling",
"chances": [
0.25
]
],
"stack": {
"count": 1,
"item": "minecraft:jungle_sapling"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@
"type": "fabricaeexnihilo:crook",
"block": "minecraft:oak_leaves",
"result": {
"stack": "minecraft:oak_sapling",
"chances": [
0.25
]
],
"stack": {
"count": 1,
"item": "minecraft:oak_sapling"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,14 @@
"type": "fabricaeexnihilo:crook",
"block": "#minecraft:leaves",
"result": {
"stack": "fabricaeexnihilo:raw_silkworm",
"chances": [
0.1,
0.2,
0.2
]
0.3
],
"stack": {
"count": 1,
"item": "fabricaeexnihilo:raw_silkworm"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@
"type": "fabricaeexnihilo:crook",
"block": "minecraft:spruce_leaves",
"result": {
"stack": "minecraft:spruce_sapling",
"chances": [
0.25
]
],
"stack": {
"count": 1,
"item": "minecraft:spruce_sapling"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@
"type": "fabricaeexnihilo:crook",
"block": "#minecraft:leaves",
"result": {
"stack": "minecraft:stick",
"chances": [
0.01
]
],
"stack": {
"count": 1,
"item": "minecraft:stick"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@
"type": "fabricaeexnihilo:crook",
"block": "#fabricaeexnihilo:infested_leaves",
"result": {
"stack": "minecraft:string",
"chances": [
0.75,
0.25
]
],
"stack": {
"count": 1,
"item": "minecraft:string"
}
}
}
3 changes: 3 additions & 0 deletions src/main/java/wraith/fabricaeexnihilo/datagen/FENDatagen.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import wraith.fabricaeexnihilo.datagen.provider.loot_tables.StrainerLootTableProvider;
import wraith.fabricaeexnihilo.datagen.provider.recipe.BarrelRecipeProvider;
import wraith.fabricaeexnihilo.datagen.provider.recipe.BaseRecipeProvider;
import wraith.fabricaeexnihilo.datagen.provider.recipe.ToolRecipeProvider;
import wraith.fabricaeexnihilo.datagen.provider.tag.BlockTagProvider;
import wraith.fabricaeexnihilo.datagen.provider.tag.FluidTagProvider;
import wraith.fabricaeexnihilo.datagen.provider.tag.ItemTagProvider;
Expand All @@ -24,7 +25,9 @@ public void onInitializeDataGenerator(FabricDataGenerator generator) {
pack.addProvider(FluidTagProvider::new);
var blockTags = pack.addProvider(BlockTagProvider::new);
pack.addProvider((output, registries) -> new ItemTagProvider(output, registries, blockTags));
// Vanilla only uses one provider, but we split for organisation
pack.addProvider(BaseRecipeProvider::new);
pack.addProvider(BarrelRecipeProvider::new);
pack.addProvider(ToolRecipeProvider::new);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
package wraith.fabricaeexnihilo.datagen.builder.recipe;

import com.google.gson.JsonObject;
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
import net.minecraft.advancement.criterion.CriterionConditions;
import net.minecraft.data.server.recipe.CraftingRecipeJsonBuilder;
import net.minecraft.data.server.recipe.RecipeJsonProvider;
import net.minecraft.entity.EntityType;
import net.minecraft.item.Item;
import net.minecraft.recipe.RecipeSerializer;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable;
import wraith.fabricaeexnihilo.recipe.ModRecipes;
import wraith.fabricaeexnihilo.util.CodecUtils;

import java.util.function.Consumer;

@SuppressWarnings("UnstableApiUsage")
public class MilkingRecipeJsonBuilder implements CraftingRecipeJsonBuilder {
private final EntityType<?> entity;
private final FluidVariant fluid;
private long amount = 810;
private int cooldown = 20;

public MilkingRecipeJsonBuilder(EntityType<?> entity, FluidVariant fluid) {
this.entity = entity;
this.fluid = fluid;
}

public MilkingRecipeJsonBuilder amount(long amount) {
this.amount = amount;
return this;
}

public MilkingRecipeJsonBuilder cooldown(int cooldown) {
this.cooldown = cooldown;
return this;
}

@Override
public CraftingRecipeJsonBuilder criterion(String name, CriterionConditions conditions) {
throw new UnsupportedOperationException();
}

@Override
public CraftingRecipeJsonBuilder group(@Nullable String group) {
throw new UnsupportedOperationException();
}

@Override
public Item getOutputItem() {
throw new UnsupportedOperationException();
}

@Deprecated
@Override
public void offerTo(Consumer<RecipeJsonProvider> exporter) {
throw new UnsupportedOperationException();
}

@Override
public void offerTo(Consumer<RecipeJsonProvider> exporter, String recipePath) {
offerTo(exporter, new Identifier(recipePath));
}

@Override
public void offerTo(Consumer<RecipeJsonProvider> exporter, Identifier recipeId) {
exporter.accept(new MilkingRecipeJsonProvider(entity, fluid, amount, cooldown, recipeId));
}

private record MilkingRecipeJsonProvider(EntityType<?> entity,
FluidVariant fluid,
long amount,
int cooldown,
Identifier id) implements RecipeJsonProvider {

@Override
public void serialize(JsonObject json) {
json.addProperty("entity", Registries.ENTITY_TYPE.getId(entity).toString());
json.add("fluid", CodecUtils.toJson(CodecUtils.FLUID_VARIANT, fluid));
json.addProperty("amount", amount);
json.addProperty("cooldown", cooldown);
}

@Override
public Identifier getRecipeId() {
return id;
}

@Override
public RecipeSerializer<?> getSerializer() {
return ModRecipes.MILKING_SERIALIZER;
}

@Nullable
@Override
public JsonObject toAdvancementJson() {
return null;
}

@Nullable
@Override
public Identifier getAdvancementId() {
return null;
}
}
}

0 comments on commit 5db897d

Please sign in to comment.