diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/generator/recipe/CookingRecipesLoader.java b/common/src/main/java/dev/dubhe/anvilcraft/data/generator/recipe/CookingRecipesLoader.java index 6d98ad270..01c90ae40 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/data/generator/recipe/CookingRecipesLoader.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/generator/recipe/CookingRecipesLoader.java @@ -4,7 +4,7 @@ import dev.dubhe.anvilcraft.data.generator.AnvilCraftDatagen; import dev.dubhe.anvilcraft.data.recipe.anvil.AnvilRecipe; import dev.dubhe.anvilcraft.data.recipe.anvil.AnvilRecipeType; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasBlock; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block.HasBlock; import dev.dubhe.anvilcraft.init.ModItems; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.recipes.RecipeCategory; diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/generator/recipe/MultiblockCraftingHandler.java b/common/src/main/java/dev/dubhe/anvilcraft/data/generator/recipe/MultiblockCraftingHandler.java new file mode 100644 index 000000000..9f959fe4f --- /dev/null +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/generator/recipe/MultiblockCraftingHandler.java @@ -0,0 +1,133 @@ +package dev.dubhe.anvilcraft.data.generator.recipe; + +import com.tterrag.registrate.providers.RegistrateRecipeProvider; +import dev.dubhe.anvilcraft.AnvilCraft; +import dev.dubhe.anvilcraft.block.HeavyIronBeamBlock; +import dev.dubhe.anvilcraft.data.generator.AnvilCraftDatagen; +import dev.dubhe.anvilcraft.data.recipe.RecipeItem; +import dev.dubhe.anvilcraft.data.recipe.anvil.AnvilRecipe; +import dev.dubhe.anvilcraft.data.recipe.anvil.AnvilRecipeType; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.multiblock.HasMultiBlock; +import dev.dubhe.anvilcraft.init.ModBlocks; +import net.minecraft.core.Direction; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeCategory; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.SlabBlock; +import net.minecraft.world.level.block.StairBlock; +import net.minecraft.world.level.block.state.properties.Half; +import net.minecraft.world.level.block.state.properties.SlabType; +import net.minecraft.world.phys.Vec3; + +import java.util.Map; +import java.util.function.Consumer; + +public class MultiblockCraftingHandler { + + /** + * 初始化多方块合成配方 + * + * @param provider 提供器 + */ + public static void init(RegistrateRecipeProvider provider) { + HasMultiBlock giantAnvil1 = HasMultiBlock.builder() + .layer( + "AAA", + "AAA", + "AAA" + ) + .layer( + "CCC", + "CBC", + "CCC" + ) + .layer( + "DDD", + "DDD", + "DDD" + ) + .define('A', ModBlocks.POLISHED_HEAVY_IRON_BLOCK.get()) + .define('B', ModBlocks.HEAVY_IRON_COLUMN.get()) + .define('C', ModBlocks.HEAVY_IRON_PLATE.get()) + .define('D', ModBlocks.CUT_HEAVY_IRON_BLOCK.get()) + .build(); + + multiblock(giantAnvil1, ModBlocks.GIANT_ANVIL.asItem(), "1", provider); + HasMultiBlock giantAnvil2 = HasMultiBlock.builder() + .layer( + "ACA", + "BAB", + "ACA" + ) + .layer( + "EEE", + "EDE", + "EEE" + ) + .layer( + "JGJ", + "HDI", + "JFJ" + ) + .define('A', ModBlocks.POLISHED_HEAVY_IRON_BLOCK.get()) + .define('B', ModBlocks.HEAVY_IRON_BEAM.get(), Map.entry(HeavyIronBeamBlock.AXIS, Direction.Axis.Z)) + .define('C', ModBlocks.HEAVY_IRON_BEAM.get(), Map.entry(HeavyIronBeamBlock.AXIS, Direction.Axis.X)) + .define('D', ModBlocks.HEAVY_IRON_COLUMN.get()) + .define('E', ModBlocks.HEAVY_IRON_PLATE.get()) + .define('F', ModBlocks.CUT_HEAVY_IRON_STAIRS.get(), + Map.entry(StairBlock.FACING, Direction.SOUTH), + Map.entry(StairBlock.HALF, Half.BOTTOM)) + .define('G', ModBlocks.CUT_HEAVY_IRON_STAIRS.get(), + Map.entry(StairBlock.FACING, Direction.NORTH), + Map.entry(StairBlock.HALF, Half.BOTTOM)) + .define('H', ModBlocks.CUT_HEAVY_IRON_STAIRS.get(), + Map.entry(StairBlock.FACING, Direction.EAST), + Map.entry(StairBlock.HALF, Half.BOTTOM)) + .define('I', ModBlocks.CUT_HEAVY_IRON_STAIRS.get(), + Map.entry(StairBlock.FACING, Direction.WEST), + Map.entry(StairBlock.HALF, Half.BOTTOM)) + .define('J', ModBlocks.CUT_HEAVY_IRON_SLAB.get(), Map.entry(SlabBlock.TYPE, SlabType.BOTTOM)) + .build(); + + multiblock(giantAnvil2, ModBlocks.GIANT_ANVIL.asItem(), "2", provider); + HasMultiBlock mengerSponge = HasMultiBlock.builder() + .layer( + "AAA", + "A A", + "AAA" + ) + .layer( + "A A", + " B ", + "A A" + ) + .layer( + "AAA", + "A A", + "AAA" + ) + .define('A', Blocks.SPONGE) + .define('B', ModBlocks.VOID_MATTER_BLOCK.get()) + .define(' ', Blocks.AIR) + .build(); + multiblock(mengerSponge, ModBlocks.MENGER_SPONGE.asItem(), "", provider); + } + + private static void multiblock(HasMultiBlock pred, Item output, String postfix, Consumer cons) { + AnvilRecipe.Builder.create(RecipeCategory.MISC) + .type(AnvilRecipeType.MULTIBLOCK_CRAFTING) + .icon(output) + .addPredicates(pred) + .spawnItem(new Vec3(0.0, -2.0, 0.0), RecipeItem.of(output)) + .unlockedBy( + AnvilCraftDatagen.hasItem(ModBlocks.GIANT_ANVIL), + AnvilCraftDatagen.has(ModBlocks.GIANT_ANVIL) + ) + .save(cons, AnvilCraft.of("multiblock_crafting/" + + BuiltInRegistries.ITEM.getKey(output).getPath() + postfix + )); + + } +} diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/generator/recipe/MultiblockCraftingRecipeLoader.java b/common/src/main/java/dev/dubhe/anvilcraft/data/generator/recipe/MultiblockCraftingRecipeLoader.java deleted file mode 100644 index 0c07664d3..000000000 --- a/common/src/main/java/dev/dubhe/anvilcraft/data/generator/recipe/MultiblockCraftingRecipeLoader.java +++ /dev/null @@ -1,204 +0,0 @@ -package dev.dubhe.anvilcraft.data.generator.recipe; - -import com.tterrag.registrate.providers.RegistrateRecipeProvider; -import dev.dubhe.anvilcraft.AnvilCraft; -import dev.dubhe.anvilcraft.block.HeavyIronBeamBlock; -import dev.dubhe.anvilcraft.data.recipe.RecipeBlock; -import dev.dubhe.anvilcraft.data.recipe.RecipeItem; -import dev.dubhe.anvilcraft.data.recipe.RecipeResult; -import dev.dubhe.anvilcraft.data.recipe.anvil.AnvilRecipe; -import dev.dubhe.anvilcraft.data.recipe.anvil.AnvilRecipeType; -import dev.dubhe.anvilcraft.init.ModBlocks; -import net.minecraft.core.Direction; -import net.minecraft.data.recipes.RecipeCategory; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.SlabBlock; -import net.minecraft.world.level.block.StairBlock; -import net.minecraft.world.level.block.state.properties.Half; -import net.minecraft.world.level.block.state.properties.SlabType; -import net.minecraft.world.phys.Vec3; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; - -public class MultiblockCraftingRecipeLoader { - private static RegistrateRecipeProvider provider = null; - - /** - * 初始化粉碎配方 - * - * @param provider 提供器 - */ - public static void init(RegistrateRecipeProvider provider) { - MultiblockCraftingRecipeLoader.provider = provider; - multiblockCrafting( - new HashMap<>() {{ - put('A', RecipeBlock.of(ModBlocks.POLISHED_HEAVY_IRON_BLOCK.get())); - put('B', RecipeBlock.of(ModBlocks.HEAVY_IRON_COLUMN.get())); - put('C', RecipeBlock.of(ModBlocks.HEAVY_IRON_PLATE.get())); - put('D', RecipeBlock.of(ModBlocks.CUT_HEAVY_IRON_BLOCK.get())); - }}, - new String[]{ - "AAA", - "AAA", - "AAA", - - "CCC", - "CBC", - "CCC", - - "DDD", - "DDD", - "DDD", - }, - RecipeResult.of(RecipeItem.of(ModBlocks.GIANT_ANVIL)) - ); - multiblockCrafting( - new HashMap<>() {{ - put('A', RecipeBlock.of(ModBlocks.POLISHED_HEAVY_IRON_BLOCK.get())); - put('B', RecipeBlock.of(ModBlocks.HEAVY_IRON_BEAM.get(), - Map.entry(HeavyIronBeamBlock.AXIS, Direction.Axis.Z))); - put('C', RecipeBlock.of(ModBlocks.HEAVY_IRON_BEAM.get(), - Map.entry(HeavyIronBeamBlock.AXIS, Direction.Axis.X))); - put('D', RecipeBlock.of(ModBlocks.HEAVY_IRON_COLUMN.get())); - put('E', RecipeBlock.of(ModBlocks.HEAVY_IRON_PLATE.get())); - put('F', RecipeBlock.of(ModBlocks.CUT_HEAVY_IRON_STAIRS.get(), - Map.entry(StairBlock.FACING, Direction.SOUTH), - Map.entry(StairBlock.HALF, Half.BOTTOM))); - put('G', RecipeBlock.of(ModBlocks.CUT_HEAVY_IRON_STAIRS.get(), - Map.entry(StairBlock.FACING, Direction.NORTH), - Map.entry(StairBlock.HALF, Half.BOTTOM))); - put('H', RecipeBlock.of(ModBlocks.CUT_HEAVY_IRON_STAIRS.get(), - Map.entry(StairBlock.FACING, Direction.EAST), - Map.entry(StairBlock.HALF, Half.BOTTOM))); - put('I', RecipeBlock.of(ModBlocks.CUT_HEAVY_IRON_STAIRS.get(), - Map.entry(StairBlock.FACING, Direction.WEST), - Map.entry(StairBlock.HALF, Half.BOTTOM))); - put('J', RecipeBlock.of(ModBlocks.CUT_HEAVY_IRON_SLAB.get(), - Map.entry(SlabBlock.TYPE, SlabType.BOTTOM))); - }}, - new String[]{ - "ABA", - "CAC", - "ABA", - - "EEE", - "EDE", - "EEE", - - "JGJ", - "HDI", - "JFJ", - }, - RecipeResult.of(RecipeItem.of(ModBlocks.GIANT_ANVIL)) - ); - multiblockCrafting( - new HashMap<>() {{ - put('A', RecipeBlock.of(Blocks.SPONGE)); - put('B', RecipeBlock.of(ModBlocks.VOID_MATTER_BLOCK.get())); - }}, - new String[]{ - "AAA", - "A A", - "AAA", - - "A A", - " B ", - "A A", - - "AAA", - "A A", - "AAA", - }, - RecipeResult.of(RecipeItem.of(ModBlocks.MENGER_SPONGE)) - ); - } - - - /** - * 大铁砧多方块合成配方 - * maps传参示例 - * - *

new String[]{ - * - *

"AAA", - * - *

"AAA", - * - *

"AAA", - * - *

"AAA", - * - *

"AAA", - * - *

"AAA", - * - *

"AAA", - * - *

"AAA", - * - *

"AAA", - * - *

} - * - * @param mappingTable 方块与字母对照表 - * @param maps 每一行的配方, 要求数量必须为单行配方字数的平方 - * @param recipeResults 配方的输出 - */ - public static void multiblockCrafting( - Map mappingTable, - String[] maps, - RecipeResult... recipeResults - ) { - if (Arrays.stream(maps).findFirst().isEmpty()) return; - int size = Arrays.stream(maps).findFirst().get().length(); - if (maps.length != size * size) return; - AnvilRecipe.Builder builder = AnvilRecipe.Builder.create(RecipeCategory.MISC) - .type(AnvilRecipeType.MULTIBLOCK_CRAFTING); - if (Arrays.stream(recipeResults).findFirst().isPresent()) - builder = builder.icon(Arrays.stream(recipeResults).findFirst().get().icon()); - for (int x = -(size - 1) / 2; x <= (size - 1) / 2; x++) { - for (int z = -(size - 1) / 2; z <= (size - 1) / 2; z++) { - builder = builder.hasBlock(new Vec3(x, -1, z), Blocks.CRAFTING_TABLE); - } - } - StringBuilder path = new StringBuilder("multiblock_crafting/"); - path.append(Arrays.stream(recipeResults).findFirst().get().getKey()); - path.append("_from_"); - int index = 0; - for (RecipeBlock recipeBlock : mappingTable.values()) { - if (index >= 6) { - break; - } - path.append(recipeBlock.getKey()); - path.append("_"); - index++; - } - mappingTable.put(' ', RecipeBlock.of(Blocks.AIR)); - index = 0; - for (String map : maps) { - if (map.length() != size) return; - for (int i = 0; i < map.length(); i++) { - char ch = map.charAt(i); - if (!mappingTable.containsKey(ch)) return; - builder = builder.hasBlockIngredient(new Vec3( - index % 3 - (int) ((double) (size - 1) / 2), - (int) (-((double) index / 9) - 2), - -((int) (((double) index % 9) / 3) - (int) ((double) (size - 1) / 2)) - ), - mappingTable.get(ch) - ); - index++; - } - } - for (RecipeResult recipeResult : recipeResults) { - if (recipeResult.isItem()) { - builder = builder.spawnItem(recipeResult.offset().add(0, -3, 0), recipeResult.recipeItem()); - } else { - builder = builder.setBlock(recipeResult.offset().add(0, -3, 0), recipeResult.recipeBlock()); - } - } - builder.save(provider, AnvilCraft.of(path.substring(0, path.length() - 1))); - } -} \ No newline at end of file diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/generator/recipe/RecipesHandler.java b/common/src/main/java/dev/dubhe/anvilcraft/data/generator/recipe/RecipesHandler.java index 2badeb77b..4c7d0ef9a 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/data/generator/recipe/RecipesHandler.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/generator/recipe/RecipesHandler.java @@ -26,6 +26,6 @@ public static void init(RegistrateRecipeProvider provider) { SmithingRecipesLoader.init(provider); MobTransformRecipesLoader.init(provider); BulgingLikeRecipesLoader.init(provider); - MultiblockCraftingRecipeLoader.init(provider); + MultiblockCraftingHandler.init(provider); } } diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/RecipeBlock.java b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/RecipeBlock.java index 17c134023..8286d5f7f 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/RecipeBlock.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/RecipeBlock.java @@ -1,6 +1,7 @@ package dev.dubhe.anvilcraft.data.recipe; import com.tterrag.registrate.util.entry.BlockEntry; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block.HasBlock; import lombok.Getter; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.tags.TagKey; @@ -61,7 +62,7 @@ public static RecipeBlock of(BlockEntry blockBlockEntry) { } /** - * 判断是否有状态检测, 一般用于{@link dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasBlock hasBlock} + * 判断是否有状态检测, 一般用于{@link HasBlock hasBlock} */ public boolean isHasStates() { return this.stateEntries != null; diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/AnvilRecipe.java b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/AnvilRecipe.java index 1b3343e66..085592266 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/AnvilRecipe.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/AnvilRecipe.java @@ -13,13 +13,14 @@ import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SetBlock; import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SpawnExperience; import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SpawnItem; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasBlock; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasBlockIngredient; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasFluidCauldron; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasItem; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasItemIngredient; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasItemLeaves; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.NotHasBlock; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block.HasBlock; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block.HasBlockIngredient; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.fluid.HasFluidCauldron; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.item.HasItem; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.item.HasItemIngredient; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.item.HasItemLeaves; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block.NotHasBlock; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.multiblock.HasMultiBlock; import dev.dubhe.anvilcraft.init.ModBlocks; import dev.dubhe.anvilcraft.init.ModItemTags; import dev.dubhe.anvilcraft.util.IItemStackUtil; @@ -921,6 +922,7 @@ public static void init() { RecipePredicate.register("not_has_block", NotHasBlock::new, NotHasBlock::new); RecipePredicate.register("has_block_ingredient", HasBlockIngredient::new, HasBlockIngredient::new); RecipePredicate.register("has_fluid_cauldron", HasFluidCauldron::new, HasFluidCauldron::new); + RecipePredicate.register("has_multi_block", HasMultiBlock::decodeFromJson, HasMultiBlock::decodeFromNetworkBuf); RecipeOutcome.register("damage_anvil", DamageAnvil::new, DamageAnvil::new); RecipeOutcome.register("set_block", SetBlock::new, SetBlock::new); RecipeOutcome.register("spawn_item", SpawnItem::new, SpawnItem::new); diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/RecipePredicate.java b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/RecipePredicate.java index b83a4cd54..55469d76b 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/RecipePredicate.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/RecipePredicate.java @@ -19,8 +19,8 @@ public interface RecipePredicate { Map> NETWORK_DECODER = new HashMap<>(); static void register( - String id, Function jsonDecoder, + String id, + Function jsonDecoder, Function networkDecoder ) { RecipePredicate.JSON_DECODER.put(id, jsonDecoder); diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasBlock.java b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/block/HasBlock.java similarity index 99% rename from common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasBlock.java rename to common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/block/HasBlock.java index 6ce4f8d53..6b91234fa 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasBlock.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/block/HasBlock.java @@ -1,4 +1,4 @@ -package dev.dubhe.anvilcraft.data.recipe.anvil.predicate; +package dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block; import com.google.gson.JsonArray; import com.google.gson.JsonElement; diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasBlockIngredient.java b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/block/HasBlockIngredient.java similarity index 94% rename from common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasBlockIngredient.java rename to common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/block/HasBlockIngredient.java index 5337b57ab..1f5a409f3 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasBlockIngredient.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/block/HasBlockIngredient.java @@ -1,4 +1,4 @@ -package dev.dubhe.anvilcraft.data.recipe.anvil.predicate; +package dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block; import com.google.gson.JsonObject; import dev.dubhe.anvilcraft.data.recipe.anvil.AnvilCraftingContext; diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/NotHasBlock.java b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/block/NotHasBlock.java similarity index 92% rename from common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/NotHasBlock.java rename to common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/block/NotHasBlock.java index 8ffc42fad..5f26615bd 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/NotHasBlock.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/block/NotHasBlock.java @@ -1,4 +1,4 @@ -package dev.dubhe.anvilcraft.data.recipe.anvil.predicate; +package dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block; import com.google.gson.JsonObject; import dev.dubhe.anvilcraft.data.recipe.anvil.AnvilCraftingContext; diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasFluidCauldron.java b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/fluid/HasFluidCauldron.java similarity index 98% rename from common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasFluidCauldron.java rename to common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/fluid/HasFluidCauldron.java index 6d7190b05..3f4ab6dd4 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasFluidCauldron.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/fluid/HasFluidCauldron.java @@ -1,4 +1,4 @@ -package dev.dubhe.anvilcraft.data.recipe.anvil.predicate; +package dev.dubhe.anvilcraft.data.recipe.anvil.predicate.fluid; import com.google.gson.JsonArray; import com.google.gson.JsonElement; diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasItem.java b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/item/HasItem.java similarity index 99% rename from common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasItem.java rename to common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/item/HasItem.java index 792b8ea56..e49a773f3 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasItem.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/item/HasItem.java @@ -1,4 +1,4 @@ -package dev.dubhe.anvilcraft.data.recipe.anvil.predicate; +package dev.dubhe.anvilcraft.data.recipe.anvil.predicate.item; import com.google.common.base.Predicates; import com.google.gson.JsonArray; diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasItemIngredient.java b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/item/HasItemIngredient.java similarity index 98% rename from common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasItemIngredient.java rename to common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/item/HasItemIngredient.java index 9878a6789..a122abe69 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasItemIngredient.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/item/HasItemIngredient.java @@ -1,4 +1,4 @@ -package dev.dubhe.anvilcraft.data.recipe.anvil.predicate; +package dev.dubhe.anvilcraft.data.recipe.anvil.predicate.item; import com.google.common.base.Predicates; import com.google.gson.JsonObject; diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasItemLeaves.java b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/item/HasItemLeaves.java similarity index 99% rename from common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasItemLeaves.java rename to common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/item/HasItemLeaves.java index 254b9c64e..9d4494cd2 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/HasItemLeaves.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/item/HasItemLeaves.java @@ -1,4 +1,4 @@ -package dev.dubhe.anvilcraft.data.recipe.anvil.predicate; +package dev.dubhe.anvilcraft.data.recipe.anvil.predicate.item; import com.google.common.base.Predicates; import com.google.gson.JsonArray; diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/multiblock/BlockStatePredicate.java b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/multiblock/BlockStatePredicate.java new file mode 100644 index 000000000..b3680bd2c --- /dev/null +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/multiblock/BlockStatePredicate.java @@ -0,0 +1,83 @@ +package dev.dubhe.anvilcraft.data.recipe.anvil.predicate.multiblock; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import lombok.Getter; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.StringRepresentable; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.Property; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Predicate; + +@Getter +public class BlockStatePredicate implements Predicate { + public static final Codec CODEC = RecordCodecBuilder.create(ins -> ins.group( + ResourceLocation.CODEC.fieldOf("isBlock").forGetter(o -> o.isBlock), + Codec.unboundedMap(Codec.STRING, Codec.STRING) + .optionalFieldOf("statePredicate") + .forGetter(o -> java.util.Optional.ofNullable(o.statePredicate)) + ).apply(ins, BlockStatePredicate::new)); + + private final ResourceLocation isBlock; + private final Map statePredicate; + + public BlockStatePredicate(ResourceLocation isBlock, Map statePredicate) { + this.isBlock = isBlock; + this.statePredicate = statePredicate; + } + + public BlockStatePredicate(ResourceLocation isBlock, Optional> statePredicate) { + this(isBlock, statePredicate.orElse(null)); + } + + /** + * newInstance + */ + @SafeVarargs + public static BlockStatePredicate of(Block block, Map.Entry, StringRepresentable>... states) { + Map m = new HashMap<>(); + for (Map.Entry, StringRepresentable> state : states) { + m.put(state.getKey().getName(), state.getValue().getSerializedName()); + } + return new BlockStatePredicate(BuiltInRegistries.BLOCK.getKey(block), m); + } + + /** + * newInstance + */ + public static BlockStatePredicate of(ResourceLocation block) { + return new BlockStatePredicate(block, Optional.empty()); + } + + @Override + public boolean test(BlockState state) { + Block block = BuiltInRegistries.BLOCK.get(isBlock); + AtomicBoolean matches = new AtomicBoolean(true); + if (statePredicate != null) { + state.getValues().forEach((property, comparable) -> { + String name = property.getName(); + if (statePredicate.containsKey(name)) { + String value = statePredicate.get(name); + if (comparable instanceof StringRepresentable representable) { + matches.set(representable.getSerializedName().equals(value)); + } else { + matches.set(false); + } + } + }); + } + return state.is(block) && matches.get(); + } + + @Override + public String toString() { + return "BlockStatePredicate{" + "isBlock=" + isBlock + ", statePredicate=" + statePredicate + '}'; + } +} diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/multiblock/CraftingLayer.java b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/multiblock/CraftingLayer.java new file mode 100644 index 000000000..e12998fb9 --- /dev/null +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/multiblock/CraftingLayer.java @@ -0,0 +1,63 @@ +package dev.dubhe.anvilcraft.data.recipe.anvil.predicate.multiblock; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +public class CraftingLayer { + + public static final Codec CODEC = Codec.STRING.listOf().comapFlatMap( + CraftingLayer::read, + (s) -> s.pattern + ).stable(); + + private final List pattern; + + CraftingLayer(List location) { + if (location.size() != 3) throw new IllegalArgumentException("There are and can only be 3 rows"); + for (String s : location) { + if (s.length() != 3) throw new IllegalArgumentException( + "Each row has and can only have 3 elements, consider filling empty spaces with ' '" + ); + } + pattern = location; + } + + /** + * 将方块pattern映射 + */ + public List> map(Map map) { + List> parResult = new ArrayList<>(); + for (String p : pattern) { + List l = new ArrayList<>(); + for (char c : p.toCharArray()) { + T obj = map.get(c); + if (obj == null) throw new RuntimeException( + "found no matching for pattern %c, candidates are: %s".formatted( + c, + Arrays.deepToString(map.keySet().toArray()) + )); + l.add(obj); + } + parResult.add(l); + } + return parResult; + } + + + static DataResult read(List location) { + try { + return DataResult.success(new CraftingLayer(location)); + } catch (Exception e) { + return DataResult.error(() -> "Not a valid CraftingLayer: " + e.getMessage()); + } + } + + public static CraftingLayer of(String... vararg) { + return new CraftingLayer(Arrays.stream(vararg).toList()); + } +} diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/multiblock/HasMultiBlock.java b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/multiblock/HasMultiBlock.java new file mode 100644 index 000000000..92e0bf449 --- /dev/null +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/multiblock/HasMultiBlock.java @@ -0,0 +1,208 @@ +package dev.dubhe.anvilcraft.data.recipe.anvil.predicate.multiblock; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.mojang.datafixers.util.Either; +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; +import com.mojang.serialization.DynamicOps; +import com.mojang.serialization.JsonOps; +import com.mojang.serialization.codecs.PrimitiveCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import dev.dubhe.anvilcraft.data.recipe.anvil.AnvilCraftingContext; +import dev.dubhe.anvilcraft.data.recipe.anvil.RecipePredicate; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.StringRepresentable; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.Property; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class HasMultiBlock implements RecipePredicate { + + public static final PrimitiveCodec CHAR = new PrimitiveCodec<>() { + @Override + public DataResult read(final DynamicOps ops, final T input) { + return ops.getStringValue(input).map(it -> it.charAt(0)); + } + + @Override + public T write(final DynamicOps ops, final Character value) { + return ops.createString(value.toString()); + } + + @Override + public String toString() { + return "char"; + } + }; + + public static final Codec CODEC = RecordCodecBuilder.create(ins -> ins.group( + Codec.STRING.fieldOf("type").forGetter(HasMultiBlock::getType), + CraftingLayer.CODEC.listOf().fieldOf("layers").forGetter(o -> o.layers), + Codec.unboundedMap( + CHAR, + Codec.either( + ResourceLocation.CODEC, + BlockStatePredicate.CODEC + ) + ).fieldOf("key").forGetter(o -> { + Map> map = new HashMap<>(); + o.blockDef.forEach((character, blockStatePredicate) -> { + if (blockStatePredicate.getStatePredicate() == null + || blockStatePredicate.getStatePredicate().isEmpty() + ) { + map.put(character, Either.left(blockStatePredicate.getIsBlock())); + } else { + map.put(character, Either.right(blockStatePredicate)); + } + }); + return map; + }) + ).apply(ins, HasMultiBlock::new)); + + private final List layers; + private final Map blockDef; + + HasMultiBlock( + String type, + List layers, + Map> blockDef + ) { + if (layers.size() != 3) throw new IllegalArgumentException( + "HasMultiBlock has and can only have 3 elements." + ); + this.layers = layers; + this.blockDef = new HashMap<>(); + blockDef.forEach((character, either) -> { + either.ifRight(it -> this.blockDef.put(character, it)) + .ifLeft(it -> this.blockDef.put(character, BlockStatePredicate.of(it))); + }); + } + + /** + * json反序列化 + */ + public static HasMultiBlock decodeFromJson(JsonElement jsElem) { + if (jsElem instanceof JsonObject) { + return HasMultiBlockSerializer.fromJson((JsonObject) jsElem); + } else { + throw new IllegalArgumentException("Not a json object: " + jsElem); + } + } + + public static HasMultiBlock decodeFromNetworkBuf(FriendlyByteBuf buf) { + return HasMultiBlockSerializer.fromNetwork(buf); + } + + public static Builder builder() { + return new Builder(); + } + + @Override + public String getType() { + return "has_multi_block"; + } + + @Override + public boolean matches(AnvilCraftingContext context) { + BlockPos topCenterPos = context.getPos().below(2); + Level level = context.getLevel(); + System.out.println("topCenterPos = " + topCenterPos); + int dy = 0; + for (CraftingLayer layer : layers) { + List> pred = layer.map(blockDef); + int dx = -1; + for (List x : pred) { + int dz = -1; + for (BlockStatePredicate z : x) { + BlockPos pos = topCenterPos.offset(dx, dy, dz); + System.out.println("expect " + z + " at " + pos); + BlockState state = level.getBlockState(pos); + System.out.println("got " + state); + if (!z.test(state)) { + return false; + } + dz++; + } + dx++; + } + dy--; + } + return true; + } + + @Override + public boolean process(AnvilCraftingContext context) { + for (int dy = 0; dy >= -2; dy--) { + for (int dx = -1; dx <= 1; dx++) { + for (int dz = -1; dz <= 1; dz++) { + context.getLevel().destroyBlock( + context.getPos().below(2) + .offset(dx, dy, dz), + false + ); + } + } + } + return true; + } + + @Override + public void toNetwork(FriendlyByteBuf buffer) { + buffer.writeUtf(this.getType()); + HasMultiBlockSerializer.toNetwork(buffer, this); + } + + @Override + public @NotNull JsonElement toJson() { + return HasMultiBlock.CODEC + .encodeStart(JsonOps.INSTANCE, this) + .getOrThrow(false, ignored -> { + }); + } + + public static class Builder { + private final List layers = new ArrayList<>(); + private final Map> blockDef = new HashMap<>(); + + Builder() { + } + + public Builder layer(String... args) { + layers.add(CraftingLayer.of(args)); + return this; + } + + public Builder define(char ch, ResourceLocation block) { + blockDef.put(ch, Either.left(block)); + return this; + } + + public Builder define(char ch, Block block) { + blockDef.put(ch, Either.left(BuiltInRegistries.BLOCK.getKey(block))); + return this; + } + + @SafeVarargs + public final Builder define(char ch, Block block, Map.Entry, StringRepresentable>... states) { + blockDef.put(ch, Either.right(BlockStatePredicate.of(block, states))); + return this; + } + + public HasMultiBlock build() { + return new HasMultiBlock("has_multi_block", layers, blockDef); + } + } + + +} diff --git a/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/multiblock/HasMultiBlockSerializer.java b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/multiblock/HasMultiBlockSerializer.java new file mode 100644 index 000000000..5ad995985 --- /dev/null +++ b/common/src/main/java/dev/dubhe/anvilcraft/data/recipe/anvil/predicate/multiblock/HasMultiBlockSerializer.java @@ -0,0 +1,42 @@ +package dev.dubhe.anvilcraft.data.recipe.anvil.predicate.multiblock; + +import com.google.gson.JsonObject; +import com.mojang.serialization.JsonOps; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.nbt.Tag; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.crafting.RecipeSerializer; +import org.jetbrains.annotations.NotNull; + +public enum HasMultiBlockSerializer { + INSTANCE; + + + static @NotNull HasMultiBlock fromJson( + @NotNull JsonObject serializedRecipe + ) { + return HasMultiBlock.CODEC + .parse(JsonOps.INSTANCE, serializedRecipe) + .getOrThrow(false, ignored -> { + }); + } + + static @NotNull HasMultiBlock fromNetwork(FriendlyByteBuf buffer) { + CompoundTag tag = buffer.readNbt(); + Tag recipe = tag.get("Recipe"); + return HasMultiBlock.CODEC.decode(NbtOps.INSTANCE, recipe) + .getOrThrow(false, (s) -> { + }).getFirst(); + } + + static void toNetwork(FriendlyByteBuf buffer, HasMultiBlock recipe) { + CompoundTag tag = new CompoundTag(); + var result = HasMultiBlock.CODEC.encodeStart(NbtOps.INSTANCE, recipe); + Tag tag1 = result.getOrThrow(false, (e) -> { + }); + tag.put("Recipe", tag1); + buffer.writeNbt(tag); + } +} \ No newline at end of file diff --git a/common/src/main/java/dev/dubhe/anvilcraft/event/anvil/GiantAnvilMultiblockCraftingEventListener.java b/common/src/main/java/dev/dubhe/anvilcraft/event/anvil/GiantAnvilMultiblockCraftingEventListener.java deleted file mode 100644 index 0d0c0a9d6..000000000 --- a/common/src/main/java/dev/dubhe/anvilcraft/event/anvil/GiantAnvilMultiblockCraftingEventListener.java +++ /dev/null @@ -1,42 +0,0 @@ -package dev.dubhe.anvilcraft.event.anvil; - -import dev.anvilcraft.lib.event.SubscribeEvent; -import dev.dubhe.anvilcraft.AnvilCraft; -import dev.dubhe.anvilcraft.api.event.entity.GiantAnvilFallOnLandEvent; -import dev.dubhe.anvilcraft.api.recipe.AnvilRecipeManager; -import dev.dubhe.anvilcraft.data.recipe.anvil.AnvilCraftingContext; -import dev.dubhe.anvilcraft.data.recipe.anvil.AnvilRecipe; -import dev.dubhe.anvilcraft.data.recipe.anvil.AnvilRecipeType; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.Level; -import org.jetbrains.annotations.NotNull; - -import java.util.Optional; - -public class GiantAnvilMultiblockCraftingEventListener { - /** - * 侦听大铁砧铁砧击中多方块合成事件 - * - * @param event 铁砧落地事件 - */ - @SuppressWarnings("unused") - @SubscribeEvent - public void onLand(@NotNull GiantAnvilFallOnLandEvent event) { - Level level = event.getLevel(); - BlockPos pos = event.getPos().below(); - AnvilCraftingContext context = new AnvilCraftingContext(level, pos, event.getEntity()); - Optional optional = AnvilRecipeManager.getAnvilRecipeList().stream() - .filter(recipe -> recipe.getAnvilRecipeType().equals(AnvilRecipeType.MULTIBLOCK_CRAFTING) - && recipe.matches(context, level)) - .findFirst(); - optional.ifPresent(anvilRecipe -> anvilProcess(anvilRecipe, context)); - } - - private void anvilProcess(AnvilRecipe recipe, AnvilCraftingContext context) { - int counts = 0; - while (counts < AnvilCraft.config.anvilEfficiency) { - if (!recipe.craft(context)) break; - counts++; - } - } -} diff --git a/common/src/main/java/dev/dubhe/anvilcraft/event/giantanvil/GiantAnvilMultiblockCraftingEventListener.java b/common/src/main/java/dev/dubhe/anvilcraft/event/giantanvil/GiantAnvilMultiblockCraftingEventListener.java index 02748ca79..df3caf907 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/event/giantanvil/GiantAnvilMultiblockCraftingEventListener.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/event/giantanvil/GiantAnvilMultiblockCraftingEventListener.java @@ -24,19 +24,20 @@ public class GiantAnvilMultiblockCraftingEventListener { public void onLand(@NotNull GiantAnvilFallOnLandEvent event) { Level level = event.getLevel(); BlockPos pos = event.getPos().below(); - AnvilCraftingContext container = new AnvilCraftingContext(level, pos, event.getEntity()); + AnvilCraftingContext context = new AnvilCraftingContext(level, pos, event.getEntity()); Optional optional = AnvilRecipeManager.getAnvilRecipeList().stream() .filter(recipe -> recipe.getAnvilRecipeType().equals(AnvilRecipeType.MULTIBLOCK_CRAFTING) - && recipe.matches(container, level)) + && recipe.matches(context, level)) .findFirst(); - optional.ifPresent(anvilRecipe -> anvilProcess(anvilRecipe, container)); + optional.ifPresent(anvilRecipe -> anvilProcess(anvilRecipe, context)); } - private void anvilProcess(AnvilRecipe recipe, AnvilCraftingContext container) { + private void anvilProcess(AnvilRecipe recipe, AnvilCraftingContext context) { int counts = 0; while (counts < AnvilCraft.config.anvilEfficiency) { - if (!recipe.craft(container)) break; + if (!recipe.craft(context)) break; counts++; } + context.spawnItemEntity(); } } diff --git a/common/src/main/java/dev/dubhe/anvilcraft/init/ModBlocks.java b/common/src/main/java/dev/dubhe/anvilcraft/init/ModBlocks.java index bcd6a40ac..430ac90bc 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/init/ModBlocks.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/init/ModBlocks.java @@ -81,8 +81,8 @@ import dev.dubhe.anvilcraft.data.recipe.anvil.RecipePredicate; import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SelectOne; import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SpawnItem; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasItem; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasItemIngredient; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.item.HasItem; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.item.HasItemIngredient; import dev.dubhe.anvilcraft.item.AbstractMultiplePartBlockItem; import dev.dubhe.anvilcraft.item.CursedBlockItem; import dev.dubhe.anvilcraft.item.EndDustBlockItem; diff --git a/common/src/main/java/dev/dubhe/anvilcraft/integration/emi/recipe/AnvilProcessEmiRecipe.java b/common/src/main/java/dev/dubhe/anvilcraft/integration/emi/recipe/AnvilProcessEmiRecipe.java index 68e0f34ce..37af6204a 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/integration/emi/recipe/AnvilProcessEmiRecipe.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/integration/emi/recipe/AnvilProcessEmiRecipe.java @@ -8,11 +8,11 @@ import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SelectOne; import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SetBlock; import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SpawnItem; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasBlock; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasBlockIngredient; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasFluidCauldron; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasItem; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.NotHasBlock; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block.HasBlock; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block.HasBlockIngredient; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.fluid.HasFluidCauldron; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.item.HasItem; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block.NotHasBlock; import dev.dubhe.anvilcraft.integration.emi.stack.BlockStateEmiStack; import dev.dubhe.anvilcraft.integration.emi.stack.ListBlockStateEmiIngredient; import dev.dubhe.anvilcraft.integration.emi.stack.SelectOneEmiStack; diff --git a/common/src/main/java/dev/dubhe/anvilcraft/integration/kubejs/AnvilCraftKubeJsPlugin.java b/common/src/main/java/dev/dubhe/anvilcraft/integration/kubejs/AnvilCraftKubeJsPlugin.java index 5eb372c65..1acbe0717 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/integration/kubejs/AnvilCraftKubeJsPlugin.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/integration/kubejs/AnvilCraftKubeJsPlugin.java @@ -9,12 +9,12 @@ import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SetBlock; import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SpawnExperience; import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SpawnItem; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasBlock; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasBlockIngredient; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasFluidCauldron; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasItem; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasItemIngredient; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.NotHasBlock; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block.HasBlock; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block.HasBlockIngredient; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.fluid.HasFluidCauldron; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.item.HasItem; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.item.HasItemIngredient; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block.NotHasBlock; import dev.dubhe.anvilcraft.init.ModBlocks; import dev.dubhe.anvilcraft.init.ModItems; import dev.dubhe.anvilcraft.integration.kubejs.evnet.AnvilEvents; diff --git a/common/src/main/java/dev/dubhe/anvilcraft/integration/kubejs/recipe/AnvilCraftRecipeSchema.java b/common/src/main/java/dev/dubhe/anvilcraft/integration/kubejs/recipe/AnvilCraftRecipeSchema.java index 0aef549dc..9bb04ae4e 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/integration/kubejs/recipe/AnvilCraftRecipeSchema.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/integration/kubejs/recipe/AnvilCraftRecipeSchema.java @@ -8,11 +8,11 @@ import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SetBlock; import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SpawnExperience; import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SpawnItem; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasBlock; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasBlockIngredient; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasFluidCauldron; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasItem; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasItemIngredient; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block.HasBlock; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block.HasBlockIngredient; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.fluid.HasFluidCauldron; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.item.HasItem; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.item.HasItemIngredient; import dev.dubhe.anvilcraft.init.ModBlocks; import dev.dubhe.anvilcraft.init.ModItems; import dev.dubhe.anvilcraft.integration.kubejs.recipe.builder.SelectOneBuilder; diff --git a/common/src/main/java/dev/dubhe/anvilcraft/integration/rei/client/AnvilRecipeDisplay.java b/common/src/main/java/dev/dubhe/anvilcraft/integration/rei/client/AnvilRecipeDisplay.java index cb30e619a..45c26a0ec 100644 --- a/common/src/main/java/dev/dubhe/anvilcraft/integration/rei/client/AnvilRecipeDisplay.java +++ b/common/src/main/java/dev/dubhe/anvilcraft/integration/rei/client/AnvilRecipeDisplay.java @@ -7,10 +7,10 @@ import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SelectOne; import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SetBlock; import dev.dubhe.anvilcraft.data.recipe.anvil.outcome.SpawnItem; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasBlock; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasBlockIngredient; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasFluidCauldron; -import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.HasItem; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block.HasBlock; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.block.HasBlockIngredient; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.fluid.HasFluidCauldron; +import dev.dubhe.anvilcraft.data.recipe.anvil.predicate.item.HasItem; import dev.dubhe.anvilcraft.integration.rei.AnvilCraftCategoryIdentifier; import dev.dubhe.anvilcraft.integration.rei.AnvilCraftEntryIngredient; import me.shedaniel.rei.api.common.category.CategoryIdentifier; diff --git a/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil1.json b/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil1.json new file mode 100644 index 000000000..0faa1ce8f --- /dev/null +++ b/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil1.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_giant_anvil": { + "conditions": { + "items": [ + { + "items": [ + "anvilcraft:giant_anvil" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "anvilcraft:multiblock_crafting/giant_anvil1" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_giant_anvil", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "anvilcraft:multiblock_crafting/giant_anvil1" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil2.json b/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil2.json new file mode 100644 index 000000000..53a376bb4 --- /dev/null +++ b/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil2.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_giant_anvil": { + "conditions": { + "items": [ + { + "items": [ + "anvilcraft:giant_anvil" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "anvilcraft:multiblock_crafting/giant_anvil2" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_giant_anvil", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "anvilcraft:multiblock_crafting/giant_anvil2" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_beam_heavy_iron_beam_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_stairs.json b/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_beam_heavy_iron_beam_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_stairs.json deleted file mode 100644 index 8f8832679..000000000 --- a/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_beam_heavy_iron_beam_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_stairs.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_the_recipe": { - "conditions": { - "recipe": "anvilcraft:multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_beam_heavy_iron_beam_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_stairs" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "anvilcraft:multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_beam_heavy_iron_beam_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_stairs" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_block.json b/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_block.json deleted file mode 100644 index 6e7e0188b..000000000 --- a/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_the_recipe": { - "conditions": { - "recipe": "anvilcraft:multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_block" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "anvilcraft:multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_block" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/menger_sponge.json b/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/menger_sponge.json new file mode 100644 index 000000000..a984e5111 --- /dev/null +++ b/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/menger_sponge.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_giant_anvil": { + "conditions": { + "items": [ + { + "items": [ + "anvilcraft:giant_anvil" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "anvilcraft:multiblock_crafting/menger_sponge" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_giant_anvil", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "anvilcraft:multiblock_crafting/menger_sponge" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/menger_sponge_from_sponge_void_matter_block.json b/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/menger_sponge_from_sponge_void_matter_block.json deleted file mode 100644 index 776739eac..000000000 --- a/fabric/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/menger_sponge_from_sponge_void_matter_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_the_recipe": { - "conditions": { - "recipe": "anvilcraft:multiblock_crafting/menger_sponge_from_sponge_void_matter_block" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "anvilcraft:multiblock_crafting/menger_sponge_from_sponge_void_matter_block" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/common.json b/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/common.json deleted file mode 100644 index 1bc720f9f..000000000 --- a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/common.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "type": "anvilcraft:crab_trap", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "chance": 0.1, - "condition": "minecraft:random_chance" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "anvilcraft:crab_claw" - }, - { - "type": "minecraft:item", - "name": "minecraft:seagrass", - "weight": 15 - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "anvilcraft:gameplay/crab_trap/common" -} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/jungle.json b/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/jungle.json deleted file mode 100644 index f918e9f04..000000000 --- a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/jungle.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "anvilcraft:crab_trap", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:any_of", - "terms": [ - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:jungle" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:bamboo_jungle" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:sparse_jungle" - } - } - ] - }, - { - "chance": 0.1, - "condition": "minecraft:random_chance" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:bamboo" - }, - { - "type": "minecraft:item", - "name": "minecraft:cocoa_beans" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "anvilcraft:gameplay/crab_trap/jungle" -} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/ocean.json b/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/ocean.json deleted file mode 100644 index f3daa24fe..000000000 --- a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/ocean.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "type": "anvilcraft:crab_trap", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:any_of", - "terms": [ - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:ocean" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:cold_ocean" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:deep_ocean" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:deep_cold_ocean" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:frozen_ocean" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:deep_frozen_ocean" - } - } - ] - }, - { - "chance": 0.1, - "condition": "minecraft:random_chance" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:cod" - }, - { - "type": "minecraft:item", - "name": "minecraft:kelp" - }, - { - "type": "minecraft:item", - "name": "minecraft:nautilus_shell" - }, - { - "type": "minecraft:item", - "name": "minecraft:ink_sac" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "anvilcraft:gameplay/crab_trap/ocean" -} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/river.json b/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/river.json deleted file mode 100644 index eb0a691be..000000000 --- a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/river.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "type": "anvilcraft:crab_trap", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:any_of", - "terms": [ - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:river" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:frozen_river" - } - } - ] - }, - { - "chance": 0.1, - "condition": "minecraft:random_chance" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:salmon" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "anvilcraft:gameplay/crab_trap/river" -} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/swamp.json b/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/swamp.json deleted file mode 100644 index 3b6be084b..000000000 --- a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/swamp.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "type": "anvilcraft:crab_trap", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:any_of", - "terms": [ - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:swamp" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:mangrove_swamp" - } - } - ] - }, - { - "chance": 0.1, - "condition": "minecraft:random_chance" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:lily_pad" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "anvilcraft:gameplay/crab_trap/swamp" -} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/warm_ocean.json b/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/warm_ocean.json deleted file mode 100644 index 040181fd0..000000000 --- a/fabric/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/warm_ocean.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "type": "anvilcraft:crab_trap", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:any_of", - "terms": [ - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:warm_ocean" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:lukewarm_ocean" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:deep_lukewarm_ocean" - } - } - ] - }, - { - "chance": 0.1, - "condition": "minecraft:random_chance" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:tropical_fish" - }, - { - "type": "minecraft:item", - "name": "minecraft:pufferfish" - }, - { - "type": "minecraft:item", - "name": "minecraft:ink_sac" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "anvilcraft:gameplay/crab_trap/warm_ocean" -} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil1.json b/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil1.json new file mode 100644 index 000000000..3cb62a174 --- /dev/null +++ b/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil1.json @@ -0,0 +1,49 @@ +{ + "type": "anvilcraft:anvil_processing", + "anvil_recipe_type": "multiblock_crafting", + "icon": { + "item": "anvilcraft:giant_anvil" + }, + "outcomes": [ + { + "type": "spawn_item", + "chance": 1.0, + "offset": [ + 0.0, + -2.0, + 0.0 + ], + "result": { + "item": "anvilcraft:giant_anvil" + } + } + ], + "predicates": [ + { + "type": "has_multi_block", + "key": { + "A": "anvilcraft:polished_heavy_iron_block", + "B": "anvilcraft:heavy_iron_column", + "C": "anvilcraft:heavy_iron_plate", + "D": "anvilcraft:cut_heavy_iron_block" + }, + "layers": [ + [ + "AAA", + "AAA", + "AAA" + ], + [ + "CCC", + "CBC", + "CCC" + ], + [ + "DDD", + "DDD", + "DDD" + ] + ] + } + ] +} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil2.json b/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil2.json new file mode 100644 index 000000000..d39c26bc9 --- /dev/null +++ b/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil2.json @@ -0,0 +1,94 @@ +{ + "type": "anvilcraft:anvil_processing", + "anvil_recipe_type": "multiblock_crafting", + "icon": { + "item": "anvilcraft:giant_anvil" + }, + "outcomes": [ + { + "type": "spawn_item", + "chance": 1.0, + "offset": [ + 0.0, + -2.0, + 0.0 + ], + "result": { + "item": "anvilcraft:giant_anvil" + } + } + ], + "predicates": [ + { + "type": "has_multi_block", + "key": { + "A": "anvilcraft:polished_heavy_iron_block", + "B": { + "isBlock": "anvilcraft:heavy_iron_beam", + "statePredicate": { + "axis": "z" + } + }, + "C": { + "isBlock": "anvilcraft:heavy_iron_beam", + "statePredicate": { + "axis": "x" + } + }, + "D": "anvilcraft:heavy_iron_column", + "E": "anvilcraft:heavy_iron_plate", + "F": { + "isBlock": "anvilcraft:cut_heavy_iron_stairs", + "statePredicate": { + "facing": "south", + "half": "bottom" + } + }, + "G": { + "isBlock": "anvilcraft:cut_heavy_iron_stairs", + "statePredicate": { + "facing": "north", + "half": "bottom" + } + }, + "H": { + "isBlock": "anvilcraft:cut_heavy_iron_stairs", + "statePredicate": { + "facing": "east", + "half": "bottom" + } + }, + "I": { + "isBlock": "anvilcraft:cut_heavy_iron_stairs", + "statePredicate": { + "facing": "west", + "half": "bottom" + } + }, + "J": { + "isBlock": "anvilcraft:cut_heavy_iron_slab", + "statePredicate": { + "type": "bottom" + } + } + }, + "layers": [ + [ + "ACA", + "BAB", + "ACA" + ], + [ + "EEE", + "EDE", + "EEE" + ], + [ + "JGJ", + "HDI", + "JFJ" + ] + ] + } + ] +} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_beam_heavy_iron_beam_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_stairs.json b/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_beam_heavy_iron_beam_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_stairs.json deleted file mode 100644 index 3ca2af92e..000000000 --- a/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_beam_heavy_iron_beam_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_stairs.json +++ /dev/null @@ -1,531 +0,0 @@ -{ - "type": "anvilcraft:anvil_processing", - "anvil_recipe_type": "multiblock_crafting", - "icon": { - "item": "anvilcraft:giant_anvil" - }, - "outcomes": [ - { - "type": "spawn_item", - "chance": 1.0, - "offset": [ - 0.0, - -3.0, - 0.0 - ], - "result": { - "item": "anvilcraft:giant_anvil" - } - } - ], - "predicates": [ - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - -1.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_beam" - ], - "state": { - "axis": "z" - } - }, - "offset": [ - 0.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 1.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_beam" - ], - "state": { - "axis": "x" - } - }, - "offset": [ - -1.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 0.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_beam" - ], - "state": { - "axis": "x" - } - }, - "offset": [ - 1.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - -1.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_beam" - ], - "state": { - "axis": "z" - } - }, - "offset": [ - 0.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 1.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - -1.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 0.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 1.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - -1.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_column" - ] - }, - "offset": [ - 0.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 1.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - -1.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 0.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 1.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_slab" - ], - "state": { - "type": "bottom" - } - }, - "offset": [ - -1.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_stairs" - ], - "state": { - "facing": "north", - "half": "bottom" - } - }, - "offset": [ - 0.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_slab" - ], - "state": { - "type": "bottom" - } - }, - "offset": [ - 1.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_stairs" - ], - "state": { - "facing": "east", - "half": "bottom" - } - }, - "offset": [ - -1.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_column" - ] - }, - "offset": [ - 0.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_stairs" - ], - "state": { - "facing": "west", - "half": "bottom" - } - }, - "offset": [ - 1.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_slab" - ], - "state": { - "type": "bottom" - } - }, - "offset": [ - -1.0, - -4.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_stairs" - ], - "state": { - "facing": "south", - "half": "bottom" - } - }, - "offset": [ - 0.0, - -4.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_slab" - ], - "state": { - "type": "bottom" - } - }, - "offset": [ - 1.0, - -4.0, - -1.0 - ] - } - ] -} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_block.json b/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_block.json deleted file mode 100644 index 2e6b9a4a5..000000000 --- a/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_block.json +++ /dev/null @@ -1,491 +0,0 @@ -{ - "type": "anvilcraft:anvil_processing", - "anvil_recipe_type": "multiblock_crafting", - "icon": { - "item": "anvilcraft:giant_anvil" - }, - "outcomes": [ - { - "type": "spawn_item", - "chance": 1.0, - "offset": [ - 0.0, - -3.0, - 0.0 - ], - "result": { - "item": "anvilcraft:giant_anvil" - } - } - ], - "predicates": [ - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - -1.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 0.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 1.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - -1.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 0.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 1.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - -1.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 0.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 1.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - -1.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 0.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 1.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - -1.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_column" - ] - }, - "offset": [ - 0.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 1.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - -1.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 0.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 1.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - -1.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - 0.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - 1.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - -1.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - 0.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - 1.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - -1.0, - -4.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - 0.0, - -4.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - 1.0, - -4.0, - -1.0 - ] - } - ] -} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/menger_sponge.json b/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/menger_sponge.json new file mode 100644 index 000000000..3e97a5908 --- /dev/null +++ b/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/menger_sponge.json @@ -0,0 +1,48 @@ +{ + "type": "anvilcraft:anvil_processing", + "anvil_recipe_type": "multiblock_crafting", + "icon": { + "item": "anvilcraft:menger_sponge" + }, + "outcomes": [ + { + "type": "spawn_item", + "chance": 1.0, + "offset": [ + 0.0, + -2.0, + 0.0 + ], + "result": { + "item": "anvilcraft:menger_sponge" + } + } + ], + "predicates": [ + { + "type": "has_multi_block", + "key": { + " ": "minecraft:air", + "A": "minecraft:sponge", + "B": "anvilcraft:void_matter_block" + }, + "layers": [ + [ + "AAA", + "A A", + "AAA" + ], + [ + "A A", + " B ", + "A A" + ], + [ + "AAA", + "A A", + "AAA" + ] + ] + } + ] +} \ No newline at end of file diff --git a/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/menger_sponge_from_sponge_void_matter_block.json b/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/menger_sponge_from_sponge_void_matter_block.json deleted file mode 100644 index e7a06518c..000000000 --- a/fabric/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/menger_sponge_from_sponge_void_matter_block.json +++ /dev/null @@ -1,491 +0,0 @@ -{ - "type": "anvilcraft:anvil_processing", - "anvil_recipe_type": "multiblock_crafting", - "icon": { - "item": "anvilcraft:menger_sponge" - }, - "outcomes": [ - { - "type": "spawn_item", - "chance": 1.0, - "offset": [ - 0.0, - -3.0, - 0.0 - ], - "result": { - "item": "anvilcraft:menger_sponge" - } - } - ], - "predicates": [ - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - -1.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 0.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 1.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - -1.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:air" - ] - }, - "offset": [ - 0.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 1.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - -1.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 0.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 1.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - -1.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:air" - ] - }, - "offset": [ - 0.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 1.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:air" - ] - }, - "offset": [ - -1.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:void_matter_block" - ] - }, - "offset": [ - 0.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:air" - ] - }, - "offset": [ - 1.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - -1.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:air" - ] - }, - "offset": [ - 0.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 1.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - -1.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 0.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 1.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - -1.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:air" - ] - }, - "offset": [ - 0.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 1.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - -1.0, - -4.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 0.0, - -4.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 1.0, - -4.0, - -1.0 - ] - } - ] -} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil1.json b/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil1.json new file mode 100644 index 000000000..0faa1ce8f --- /dev/null +++ b/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil1.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_giant_anvil": { + "conditions": { + "items": [ + { + "items": [ + "anvilcraft:giant_anvil" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "anvilcraft:multiblock_crafting/giant_anvil1" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_giant_anvil", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "anvilcraft:multiblock_crafting/giant_anvil1" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil2.json b/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil2.json new file mode 100644 index 000000000..53a376bb4 --- /dev/null +++ b/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil2.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_giant_anvil": { + "conditions": { + "items": [ + { + "items": [ + "anvilcraft:giant_anvil" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "anvilcraft:multiblock_crafting/giant_anvil2" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_giant_anvil", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "anvilcraft:multiblock_crafting/giant_anvil2" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_beam_heavy_iron_beam_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_stairs.json b/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_beam_heavy_iron_beam_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_stairs.json deleted file mode 100644 index 8f8832679..000000000 --- a/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_beam_heavy_iron_beam_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_stairs.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_the_recipe": { - "conditions": { - "recipe": "anvilcraft:multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_beam_heavy_iron_beam_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_stairs" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "anvilcraft:multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_beam_heavy_iron_beam_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_stairs" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_block.json b/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_block.json deleted file mode 100644 index 6e7e0188b..000000000 --- a/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_the_recipe": { - "conditions": { - "recipe": "anvilcraft:multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_block" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "anvilcraft:multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_block" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/menger_sponge.json b/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/menger_sponge.json new file mode 100644 index 000000000..a984e5111 --- /dev/null +++ b/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/menger_sponge.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_giant_anvil": { + "conditions": { + "items": [ + { + "items": [ + "anvilcraft:giant_anvil" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "anvilcraft:multiblock_crafting/menger_sponge" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_giant_anvil", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "anvilcraft:multiblock_crafting/menger_sponge" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/menger_sponge_from_sponge_void_matter_block.json b/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/menger_sponge_from_sponge_void_matter_block.json deleted file mode 100644 index 776739eac..000000000 --- a/forge/src/generated/resources/data/anvilcraft/advancements/recipes/misc/multiblock_crafting/menger_sponge_from_sponge_void_matter_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_the_recipe": { - "conditions": { - "recipe": "anvilcraft:multiblock_crafting/menger_sponge_from_sponge_void_matter_block" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "anvilcraft:multiblock_crafting/menger_sponge_from_sponge_void_matter_block" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/common.json b/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/common.json deleted file mode 100644 index 1bc720f9f..000000000 --- a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/common.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "type": "anvilcraft:crab_trap", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "chance": 0.1, - "condition": "minecraft:random_chance" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "anvilcraft:crab_claw" - }, - { - "type": "minecraft:item", - "name": "minecraft:seagrass", - "weight": 15 - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "anvilcraft:gameplay/crab_trap/common" -} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/jungle.json b/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/jungle.json deleted file mode 100644 index f918e9f04..000000000 --- a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/jungle.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "anvilcraft:crab_trap", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:any_of", - "terms": [ - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:jungle" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:bamboo_jungle" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:sparse_jungle" - } - } - ] - }, - { - "chance": 0.1, - "condition": "minecraft:random_chance" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:bamboo" - }, - { - "type": "minecraft:item", - "name": "minecraft:cocoa_beans" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "anvilcraft:gameplay/crab_trap/jungle" -} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/ocean.json b/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/ocean.json deleted file mode 100644 index f3daa24fe..000000000 --- a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/ocean.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "type": "anvilcraft:crab_trap", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:any_of", - "terms": [ - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:ocean" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:cold_ocean" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:deep_ocean" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:deep_cold_ocean" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:frozen_ocean" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:deep_frozen_ocean" - } - } - ] - }, - { - "chance": 0.1, - "condition": "minecraft:random_chance" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:cod" - }, - { - "type": "minecraft:item", - "name": "minecraft:kelp" - }, - { - "type": "minecraft:item", - "name": "minecraft:nautilus_shell" - }, - { - "type": "minecraft:item", - "name": "minecraft:ink_sac" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "anvilcraft:gameplay/crab_trap/ocean" -} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/river.json b/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/river.json deleted file mode 100644 index eb0a691be..000000000 --- a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/river.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "type": "anvilcraft:crab_trap", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:any_of", - "terms": [ - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:river" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:frozen_river" - } - } - ] - }, - { - "chance": 0.1, - "condition": "minecraft:random_chance" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:salmon" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "anvilcraft:gameplay/crab_trap/river" -} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/swamp.json b/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/swamp.json deleted file mode 100644 index 3b6be084b..000000000 --- a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/swamp.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "type": "anvilcraft:crab_trap", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:any_of", - "terms": [ - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:swamp" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:mangrove_swamp" - } - } - ] - }, - { - "chance": 0.1, - "condition": "minecraft:random_chance" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:lily_pad" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "anvilcraft:gameplay/crab_trap/swamp" -} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/warm_ocean.json b/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/warm_ocean.json deleted file mode 100644 index 040181fd0..000000000 --- a/forge/src/generated/resources/data/anvilcraft/loot_tables/gameplay/crab_trap/warm_ocean.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "type": "anvilcraft:crab_trap", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:any_of", - "terms": [ - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:warm_ocean" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:lukewarm_ocean" - } - }, - { - "condition": "minecraft:location_check", - "predicate": { - "biome": "minecraft:deep_lukewarm_ocean" - } - } - ] - }, - { - "chance": 0.1, - "condition": "minecraft:random_chance" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:tropical_fish" - }, - { - "type": "minecraft:item", - "name": "minecraft:pufferfish" - }, - { - "type": "minecraft:item", - "name": "minecraft:ink_sac" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "anvilcraft:gameplay/crab_trap/warm_ocean" -} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil1.json b/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil1.json new file mode 100644 index 000000000..3cb62a174 --- /dev/null +++ b/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil1.json @@ -0,0 +1,49 @@ +{ + "type": "anvilcraft:anvil_processing", + "anvil_recipe_type": "multiblock_crafting", + "icon": { + "item": "anvilcraft:giant_anvil" + }, + "outcomes": [ + { + "type": "spawn_item", + "chance": 1.0, + "offset": [ + 0.0, + -2.0, + 0.0 + ], + "result": { + "item": "anvilcraft:giant_anvil" + } + } + ], + "predicates": [ + { + "type": "has_multi_block", + "key": { + "A": "anvilcraft:polished_heavy_iron_block", + "B": "anvilcraft:heavy_iron_column", + "C": "anvilcraft:heavy_iron_plate", + "D": "anvilcraft:cut_heavy_iron_block" + }, + "layers": [ + [ + "AAA", + "AAA", + "AAA" + ], + [ + "CCC", + "CBC", + "CCC" + ], + [ + "DDD", + "DDD", + "DDD" + ] + ] + } + ] +} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil2.json b/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil2.json new file mode 100644 index 000000000..d39c26bc9 --- /dev/null +++ b/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil2.json @@ -0,0 +1,94 @@ +{ + "type": "anvilcraft:anvil_processing", + "anvil_recipe_type": "multiblock_crafting", + "icon": { + "item": "anvilcraft:giant_anvil" + }, + "outcomes": [ + { + "type": "spawn_item", + "chance": 1.0, + "offset": [ + 0.0, + -2.0, + 0.0 + ], + "result": { + "item": "anvilcraft:giant_anvil" + } + } + ], + "predicates": [ + { + "type": "has_multi_block", + "key": { + "A": "anvilcraft:polished_heavy_iron_block", + "B": { + "isBlock": "anvilcraft:heavy_iron_beam", + "statePredicate": { + "axis": "z" + } + }, + "C": { + "isBlock": "anvilcraft:heavy_iron_beam", + "statePredicate": { + "axis": "x" + } + }, + "D": "anvilcraft:heavy_iron_column", + "E": "anvilcraft:heavy_iron_plate", + "F": { + "isBlock": "anvilcraft:cut_heavy_iron_stairs", + "statePredicate": { + "facing": "south", + "half": "bottom" + } + }, + "G": { + "isBlock": "anvilcraft:cut_heavy_iron_stairs", + "statePredicate": { + "facing": "north", + "half": "bottom" + } + }, + "H": { + "isBlock": "anvilcraft:cut_heavy_iron_stairs", + "statePredicate": { + "facing": "east", + "half": "bottom" + } + }, + "I": { + "isBlock": "anvilcraft:cut_heavy_iron_stairs", + "statePredicate": { + "facing": "west", + "half": "bottom" + } + }, + "J": { + "isBlock": "anvilcraft:cut_heavy_iron_slab", + "statePredicate": { + "type": "bottom" + } + } + }, + "layers": [ + [ + "ACA", + "BAB", + "ACA" + ], + [ + "EEE", + "EDE", + "EEE" + ], + [ + "JGJ", + "HDI", + "JFJ" + ] + ] + } + ] +} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_beam_heavy_iron_beam_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_stairs.json b/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_beam_heavy_iron_beam_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_stairs.json deleted file mode 100644 index 3ca2af92e..000000000 --- a/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_beam_heavy_iron_beam_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_stairs.json +++ /dev/null @@ -1,531 +0,0 @@ -{ - "type": "anvilcraft:anvil_processing", - "anvil_recipe_type": "multiblock_crafting", - "icon": { - "item": "anvilcraft:giant_anvil" - }, - "outcomes": [ - { - "type": "spawn_item", - "chance": 1.0, - "offset": [ - 0.0, - -3.0, - 0.0 - ], - "result": { - "item": "anvilcraft:giant_anvil" - } - } - ], - "predicates": [ - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - -1.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_beam" - ], - "state": { - "axis": "z" - } - }, - "offset": [ - 0.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 1.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_beam" - ], - "state": { - "axis": "x" - } - }, - "offset": [ - -1.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 0.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_beam" - ], - "state": { - "axis": "x" - } - }, - "offset": [ - 1.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - -1.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_beam" - ], - "state": { - "axis": "z" - } - }, - "offset": [ - 0.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 1.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - -1.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 0.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 1.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - -1.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_column" - ] - }, - "offset": [ - 0.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 1.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - -1.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 0.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 1.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_slab" - ], - "state": { - "type": "bottom" - } - }, - "offset": [ - -1.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_stairs" - ], - "state": { - "facing": "north", - "half": "bottom" - } - }, - "offset": [ - 0.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_slab" - ], - "state": { - "type": "bottom" - } - }, - "offset": [ - 1.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_stairs" - ], - "state": { - "facing": "east", - "half": "bottom" - } - }, - "offset": [ - -1.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_column" - ] - }, - "offset": [ - 0.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_stairs" - ], - "state": { - "facing": "west", - "half": "bottom" - } - }, - "offset": [ - 1.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_slab" - ], - "state": { - "type": "bottom" - } - }, - "offset": [ - -1.0, - -4.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_stairs" - ], - "state": { - "facing": "south", - "half": "bottom" - } - }, - "offset": [ - 0.0, - -4.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_slab" - ], - "state": { - "type": "bottom" - } - }, - "offset": [ - 1.0, - -4.0, - -1.0 - ] - } - ] -} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_block.json b/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_block.json deleted file mode 100644 index 2e6b9a4a5..000000000 --- a/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/giant_anvil_from_polished_heavy_iron_block_heavy_iron_column_heavy_iron_plate_cut_heavy_iron_block.json +++ /dev/null @@ -1,491 +0,0 @@ -{ - "type": "anvilcraft:anvil_processing", - "anvil_recipe_type": "multiblock_crafting", - "icon": { - "item": "anvilcraft:giant_anvil" - }, - "outcomes": [ - { - "type": "spawn_item", - "chance": 1.0, - "offset": [ - 0.0, - -3.0, - 0.0 - ], - "result": { - "item": "anvilcraft:giant_anvil" - } - } - ], - "predicates": [ - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - -1.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 0.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 1.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - -1.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 0.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 1.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - -1.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 0.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:polished_heavy_iron_block" - ] - }, - "offset": [ - 1.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - -1.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 0.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 1.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - -1.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_column" - ] - }, - "offset": [ - 0.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 1.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - -1.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 0.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:heavy_iron_plate" - ] - }, - "offset": [ - 1.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - -1.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - 0.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - 1.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - -1.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - 0.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - 1.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - -1.0, - -4.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - 0.0, - -4.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:cut_heavy_iron_block" - ] - }, - "offset": [ - 1.0, - -4.0, - -1.0 - ] - } - ] -} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/menger_sponge.json b/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/menger_sponge.json new file mode 100644 index 000000000..3e97a5908 --- /dev/null +++ b/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/menger_sponge.json @@ -0,0 +1,48 @@ +{ + "type": "anvilcraft:anvil_processing", + "anvil_recipe_type": "multiblock_crafting", + "icon": { + "item": "anvilcraft:menger_sponge" + }, + "outcomes": [ + { + "type": "spawn_item", + "chance": 1.0, + "offset": [ + 0.0, + -2.0, + 0.0 + ], + "result": { + "item": "anvilcraft:menger_sponge" + } + } + ], + "predicates": [ + { + "type": "has_multi_block", + "key": { + " ": "minecraft:air", + "A": "minecraft:sponge", + "B": "anvilcraft:void_matter_block" + }, + "layers": [ + [ + "AAA", + "A A", + "AAA" + ], + [ + "A A", + " B ", + "A A" + ], + [ + "AAA", + "A A", + "AAA" + ] + ] + } + ] +} \ No newline at end of file diff --git a/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/menger_sponge_from_sponge_void_matter_block.json b/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/menger_sponge_from_sponge_void_matter_block.json deleted file mode 100644 index e7a06518c..000000000 --- a/forge/src/generated/resources/data/anvilcraft/recipes/multiblock_crafting/menger_sponge_from_sponge_void_matter_block.json +++ /dev/null @@ -1,491 +0,0 @@ -{ - "type": "anvilcraft:anvil_processing", - "anvil_recipe_type": "multiblock_crafting", - "icon": { - "item": "anvilcraft:menger_sponge" - }, - "outcomes": [ - { - "type": "spawn_item", - "chance": 1.0, - "offset": [ - 0.0, - -3.0, - 0.0 - ], - "result": { - "item": "anvilcraft:menger_sponge" - } - } - ], - "predicates": [ - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - -1.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 0.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - -1.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - 0.0 - ] - }, - { - "type": "has_block", - "match_block": { - "blocks": [ - "minecraft:crafting_table" - ] - }, - "offset": [ - 1.0, - -1.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - -1.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 0.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 1.0, - -2.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - -1.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:air" - ] - }, - "offset": [ - 0.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 1.0, - -2.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - -1.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 0.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 1.0, - -2.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - -1.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:air" - ] - }, - "offset": [ - 0.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 1.0, - -3.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:air" - ] - }, - "offset": [ - -1.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "anvilcraft:void_matter_block" - ] - }, - "offset": [ - 0.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:air" - ] - }, - "offset": [ - 1.0, - -3.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - -1.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:air" - ] - }, - "offset": [ - 0.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 1.0, - -3.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - -1.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 0.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 1.0, - -4.0, - 1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - -1.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:air" - ] - }, - "offset": [ - 0.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 1.0, - -4.0, - 0.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - -1.0, - -4.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 0.0, - -4.0, - -1.0 - ] - }, - { - "type": "has_block_ingredient", - "match_block": { - "blocks": [ - "minecraft:sponge" - ] - }, - "offset": [ - 1.0, - -4.0, - -1.0 - ] - } - ] -} \ No newline at end of file