summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Uko Kokņevičs2024-01-27 03:22:37 +0200
committerGravatar Uko Kokņevičs2024-01-27 03:22:37 +0200
commit99ba3f0be8835dac87b506a37f2a62ba89af0ca0 (patch)
tree8506e3afc3cd84a0394982ea3a90e450f8c2262f /src
parentFix a dedicated server crash (diff)
downloadmc-eris-alchemy-99ba3f0be8835dac87b506a37f2a62ba89af0ca0.tar.gz
mc-eris-alchemy-99ba3f0be8835dac87b506a37f2a62ba89af0ca0.tar.xz
mc-eris-alchemy-99ba3f0be8835dac87b506a37f2a62ba89af0ca0.zip
Add support for a bunch of mods
Diffstat (limited to 'src')
-rw-r--r--src/main/java/lv/enes/mc/eris_alchemy/Emc.java13
-rw-r--r--src/main/java/lv/enes/mc/eris_alchemy/recipe/SimplifiedRecipe.java50
-rw-r--r--src/main/java/lv/enes/mc/eris_alchemy/utils/ForeignUtils.java14
-rw-r--r--src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/ad_astra.json20
-rw-r--r--src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/c.json4
-rw-r--r--src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/chipped.json14
-rw-r--r--src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/computercraft.json3
-rw-r--r--src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/create.json77
-rw-r--r--src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/farmersdelight.json23
-rw-r--r--src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/minecraft.json39
-rw-r--r--src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/travelersbackpack.json3
-rw-r--r--src/main/resources/data/eris_alchemy/eris_alchemy/fake_recipes/farmersdelight.json4
-rw-r--r--src/main/resources/data/eris_alchemy/eris_alchemy/item_emcs/farmersdelight.json12
-rw-r--r--src/main/resources/data/eris_alchemy/eris_alchemy/item_emcs/porting_lib.json3
-rw-r--r--src/main/resources/data/eris_alchemy/eris_alchemy/item_tag_emcs/c.json3
-rw-r--r--src/main/resources/data/eris_alchemy/eris_alchemy/item_tag_emcs/minecraft.json3
-rw-r--r--src/main/resources/data/eris_alchemy/tags/items/travelersbackpack_sleeping_bags.json69
17 files changed, 329 insertions, 25 deletions
diff --git a/src/main/java/lv/enes/mc/eris_alchemy/Emc.java b/src/main/java/lv/enes/mc/eris_alchemy/Emc.java
index 731ecee..576fdc2 100644
--- a/src/main/java/lv/enes/mc/eris_alchemy/Emc.java
+++ b/src/main/java/lv/enes/mc/eris_alchemy/Emc.java
@@ -87,9 +87,7 @@ public final class Emc {
87 public static void initClient(Minecraft ignoredClient) { 87 public static void initClient(Minecraft ignoredClient) {
88 ClientPlayNetworking.registerGlobalReceiver( 88 ClientPlayNetworking.registerGlobalReceiver(
89 NetworkingConstants.UPDATE_EMCS, 89 NetworkingConstants.UPDATE_EMCS,
90 (client, handler, buf, responseSender) -> { 90 (client, handler, buf, responseSender) -> syncFrom(buf)
91 syncFrom(buf);
92 }
93 ); 91 );
94 } 92 }
95 93
@@ -98,9 +96,7 @@ public final class Emc {
98 reinit(); 96 reinit();
99 warnOfMissingValues(); 97 warnOfMissingValues();
100 98
101 ServerPlayConnectionEvents.JOIN.register((handler, sender, server1) -> { 99 ServerPlayConnectionEvents.JOIN.register((handler, sender, server1) -> syncTo(handler.getPlayer()));
102 syncTo(handler.getPlayer());
103 });
104 } 100 }
105 101
106 public static void reloadData( 102 public static void reloadData(
@@ -192,7 +188,8 @@ public final class Emc {
192 world.getRecipeManager() 188 world.getRecipeManager()
193 .getRecipes() 189 .getRecipes()
194 .stream() 190 .stream()
195 .map(recipe -> new SimplifiedRecipe(recipe, world.registryAccess())) 191 .map(recipe -> SimplifiedRecipe.of(recipe, world.registryAccess()))
192 .flatMap(List::stream)
196 ); 193 );
197 } 194 }
198 195
@@ -226,7 +223,7 @@ public final class Emc {
226 var sortedItems = sorted(recipes); 223 var sortedItems = sorted(recipes);
227 sortedItems.stream() 224 sortedItems.stream()
228 .filter(id -> !VALUES.containsKey(id)) 225 .filter(id -> !VALUES.containsKey(id))
229 .forEach(id -> VALUES.put(id, calcEmc(id, recipes))); 226 .forEach(id -> calcEmc(id, recipes).ifPresent(v -> VALUES.put(id, OptionalDouble.of(v))));
230 ErisAlchemy.LOGGER.info("Done calculating EMC values..."); 227 ErisAlchemy.LOGGER.info("Done calculating EMC values...");
231 228
232 sync(); 229 sync();
diff --git a/src/main/java/lv/enes/mc/eris_alchemy/recipe/SimplifiedRecipe.java b/src/main/java/lv/enes/mc/eris_alchemy/recipe/SimplifiedRecipe.java
index 469ed52..6bb1274 100644
--- a/src/main/java/lv/enes/mc/eris_alchemy/recipe/SimplifiedRecipe.java
+++ b/src/main/java/lv/enes/mc/eris_alchemy/recipe/SimplifiedRecipe.java
@@ -4,13 +4,17 @@ import com.google.gson.JsonDeserializationContext;
4import com.google.gson.JsonDeserializer; 4import com.google.gson.JsonDeserializer;
5import com.google.gson.JsonElement; 5import com.google.gson.JsonElement;
6import com.google.gson.JsonParseException; 6import com.google.gson.JsonParseException;
7import earth.terrarium.chipped.common.recipe.ChippedRecipe;
7import jakarta.annotation.Nonnull; 8import jakarta.annotation.Nonnull;
9import lv.enes.mc.eris_alchemy.utils.ForeignUtils;
8import lv.enes.mc.eris_alchemy.utils.IngredientProvider; 10import lv.enes.mc.eris_alchemy.utils.IngredientProvider;
9import lv.enes.mc.eris_alchemy.utils.ItemUtils; 11import lv.enes.mc.eris_alchemy.utils.ItemUtils;
10import lv.enes.mc.eris_alchemy.utils.RecipeUtils; 12import lv.enes.mc.eris_alchemy.utils.RecipeUtils;
13import net.minecraft.core.Holder;
11import net.minecraft.core.RegistryAccess; 14import net.minecraft.core.RegistryAccess;
12import net.minecraft.core.registries.BuiltInRegistries; 15import net.minecraft.core.registries.BuiltInRegistries;
13import net.minecraft.resources.ResourceLocation; 16import net.minecraft.resources.ResourceLocation;
17import net.minecraft.world.item.Item;
14import net.minecraft.world.item.ItemStack; 18import net.minecraft.world.item.ItemStack;
15import net.minecraft.world.item.crafting.Ingredient; 19import net.minecraft.world.item.crafting.Ingredient;
16import net.minecraft.world.item.crafting.Recipe; 20import net.minecraft.world.item.crafting.Recipe;
@@ -21,20 +25,45 @@ import java.util.Arrays;
21import java.util.Collection; 25import java.util.Collection;
22import java.util.List; 26import java.util.List;
23import java.util.Objects; 27import java.util.Objects;
28import java.util.function.Predicate;
24import java.util.function.Supplier; 29import java.util.function.Supplier;
25import java.util.stream.Stream; 30import java.util.stream.Stream;
26 31
27public record SimplifiedRecipe(ItemStack output, List<ItemStack> remainder, List<Supplier<Ingredient>> input) { 32public record SimplifiedRecipe(ItemStack output, List<ItemStack> remainder, List<Supplier<Ingredient>> input) {
28 public SimplifiedRecipe(Recipe<?> recipe, RegistryAccess registryAccess) { 33 public static List<SimplifiedRecipe> of(Recipe<?> recipe, RegistryAccess registryAccess) {
29 this( 34 if (ForeignUtils.IS_CHIPPED_AVAILABLE && recipe instanceof ChippedRecipe chippedRecipe) {
35 var remainder = List.<ItemStack>of();
36 return chippedRecipe.tags()
37 .stream()
38 .flatMap(tag -> {
39 var items = tag.stream().map(Holder::value).toList();
40 Predicate<Item> isOutput = item -> ItemUtils.getId(item).getNamespace().equals("chipped");
41 var inputs = items.stream()
42 .filter(item -> !isOutput.test(item))
43 .map(Ingredient::of)
44 .map(x -> (Supplier<Ingredient>) () -> x)
45 .map(List::of)
46 .toList();
47 var outputs = items.stream().filter(isOutput).map(Item::getDefaultInstance).toList();
48 return outputs.stream()
49 .flatMap(
50 output ->
51 inputs.stream()
52 .map(input -> new SimplifiedRecipe(output, remainder, input))
53 );
54 })
55 .toList();
56 }
57
58 return List.of(new SimplifiedRecipe(
30 RecipeUtils.getOutput(recipe, registryAccess), 59 RecipeUtils.getOutput(recipe, registryAccess),
31 List.of(), // TODO: 60 List.of(), // TODO
32 RecipeUtils.getIngredients(recipe) 61 RecipeUtils.getIngredients(recipe)
33 .stream() 62 .stream()
34 .filter(ingredient -> !ingredient.isEmpty()) 63 .filter(ingredient -> !ingredient.isEmpty())
35 .map(x -> (Supplier<Ingredient>) () -> x) 64 .map(x -> (Supplier<Ingredient>)() -> x)
36 .toList() 65 .toList()
37 ); 66 ));
38 } 67 }
39 68
40 public Stream<ResourceLocation> dependencies() { 69 public Stream<ResourceLocation> dependencies() {
@@ -45,15 +74,8 @@ public record SimplifiedRecipe(ItemStack output, List<ItemStack> remainder, List
45 } 74 }
46 75
47 public boolean hasDuplication() { 76 public boolean hasDuplication() {
48 var outputId = ItemUtils.getId(output); 77 return remainder.stream().anyMatch(stack -> ItemStack.isSameItem(stack, output))
49 var outputsInRemainder = remainder.stream() 78 || input.stream().anyMatch(ingredient -> ingredient.get().test(output));
50 .map(ItemUtils::getId)
51 .anyMatch(id -> Objects.equals(id, outputId));
52 if (outputsInRemainder) {
53 return true;
54 }
55
56 return input.stream().anyMatch(ingredient -> ingredient.get().test(output));
57 } 79 }
58 80
59 public boolean isAllowed(BannedRecipe ban) { 81 public boolean isAllowed(BannedRecipe ban) {
diff --git a/src/main/java/lv/enes/mc/eris_alchemy/utils/ForeignUtils.java b/src/main/java/lv/enes/mc/eris_alchemy/utils/ForeignUtils.java
new file mode 100644
index 0000000..b686a9e
--- /dev/null
+++ b/src/main/java/lv/enes/mc/eris_alchemy/utils/ForeignUtils.java
@@ -0,0 +1,14 @@
1package lv.enes.mc.eris_alchemy.utils;
2
3public class ForeignUtils {
4 public static boolean IS_CHIPPED_AVAILABLE = check("earth.terrarium.chipped.Chipped");
5
6 private static boolean check(String className) {
7 try {
8 Class.forName(className);
9 return true;
10 } catch (ClassNotFoundException e) {
11 return false;
12 }
13 }
14}
diff --git a/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/ad_astra.json b/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/ad_astra.json
new file mode 100644
index 0000000..396f26d
--- /dev/null
+++ b/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/ad_astra.json
@@ -0,0 +1,20 @@
1[
2 "ad_astra:calorite_block -> ad_astra:calorite_ingot",
3 "ad_astra:calorite_nugget -> ad_astra:calorite_ingot",
4 "ad_astra:cheese_block -> ad_astra:cheese",
5
6 "ad_astra:desh_block -> ad_astra:desh_ingot",
7 "ad_astra:desh_nugget -> ad_astra:desh_ingot",
8
9 "ad_astra:ostrum_block -> ad_astra:ostrum_ingot",
10 "ad_astra:ostrum_nugget -> ad_astra:ostrum_ingot",
11
12 "ad_astra:raw_calorite_block -> ad_astra:raw_calorite",
13 "ad_astra:raw_desh_block -> ad_astra:raw_desh",
14 "ad_astra:raw_ostrum_block -> ad_astra:raw_ostrum",
15
16 "ad_astra:steel_block -> ad_astra:steel_ingot",
17 "ad_astra:steel_nugget -> ad_astra:steel_ingot",
18
19 "ad_astra:venus_sandstone -> ad_astra:venus_sand"
20] \ No newline at end of file
diff --git a/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/c.json b/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/c.json
new file mode 100644
index 0000000..41db69d
--- /dev/null
+++ b/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/c.json
@@ -0,0 +1,4 @@
1[
2 "#c:glass_blocks -> #c:glass_blocks",
3 "#c:glass_panes -> #c:glass_panes"
4] \ No newline at end of file
diff --git a/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/chipped.json b/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/chipped.json
new file mode 100644
index 0000000..bdd88f3
--- /dev/null
+++ b/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/chipped.json
@@ -0,0 +1,14 @@
1[
2 "chipped:ash_sand -> minecraft:soul_sand",
3 "chipped:course_sand -> minecraft:soul_sand",
4 "chipped:desert_sand -> minecraft:soul_sand",
5 "chipped:kelp_sand -> minecraft:soul_sand",
6 "chipped:lush_red_sand -> minecraft:soul_sand",
7 "chipped:overgrown_sand -> minecraft:soul_sand",
8 "chipped:pearl_sand -> minecraft:soul_sand",
9 "chipped:soft_sand -> minecraft:soul_sand",
10 "chipped:tar_sand -> minecraft:soul_sand",
11 "chipped:wet_sand -> minecraft:soul_sand",
12 "chipped:wet_red_sand -> minecraft:soul_sand",
13 "chipped:white_sand -> minecraft:soul_sand"
14] \ No newline at end of file
diff --git a/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/computercraft.json b/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/computercraft.json
new file mode 100644
index 0000000..dcbcbd1
--- /dev/null
+++ b/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/computercraft.json
@@ -0,0 +1,3 @@
1[
2 "computercraft:wired_modem_full -> computercraft:wired_modem"
3] \ No newline at end of file
diff --git a/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/create.json b/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/create.json
new file mode 100644
index 0000000..30a221a
--- /dev/null
+++ b/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/create.json
@@ -0,0 +1,77 @@
1[
2 "create:andesite_alloy_block -> create:andesite_alloy",
3 "create:brass_block -> create:brass_ingot",
4 "create:brass_nugget -> create:brass_ingot",
5 "create:builders_tea -> minecraft:glass_bottle",
6 "create:cinder_flour -> minecraft:netherrack",
7 "create:copper_nugget -> minecraft:copper_ingot",
8 "create:experience_block -> create:experience_nugget",
9 "create:raw_zinc_block -> create:raw_zinc",
10 "create:sail_frame -> create:white_sail",
11 "create:secondary_linear_chassis -> create:linear_chassis",
12 "create:small_rose_quartz_tiles -> create:rose_quartz_tiles",
13 "create:stressometer -> create:speedometer",
14 "create:vertical_gearbox -> create:gearbox",
15 "create:zinc_block -> create:zinc_ingot",
16 "create:zinc_nugget -> create:zinc_ingot",
17
18 "create:cut_andesite_slab -> create:cut_andesite",
19 "create:cut_asurine_slab -> create:cut_asurine",
20 "create:cut_calcite_slab -> create:cut_calcite",
21 "create:cut_crimsite_slab -> create:cut_crimsite",
22 "create:cut_deepslate_slab -> create:cut_deepslate",
23 "create:cut_diorite_slab -> create:cut_diorite",
24 "create:cut_dripstone_slab -> create:cut_dripstone",
25 "create:cut_granite_slab -> create:cut_granite",
26 "create:cut_limestone_slab -> create:cut_limestone",
27 "create:cut_ochrum_slab -> create:cut_ochrum",
28 "create:cut_scorchia_slab -> create:cut_scorchia",
29 "create:cut_scoria_slab -> create:cut_scoria",
30 "create:cut_tuff_slab -> create:cut_tuff",
31 "create:cut_veridium_slab -> create:cut_veridium",
32
33 "create:cut_andesite_brick_slab -> create:cut_andesite_bricks",
34 "create:cut_asurine_brick_slab -> create:cut_asurine_bricks",
35 "create:cut_calcite_brick_slab -> create:cut_calcite_bricks",
36 "create:cut_crimsite_brick_slab -> create:cut_crimsite_bricks",
37 "create:cut_deepslate_brick_slab -> create:cut_deepslate_bricks",
38 "create:cut_diorite_brick_slab -> create:cut_diorite_bricks",
39 "create:cut_dripstone_brick_slab -> create:cut_dripstone_bricks",
40 "create:cut_granite_brick_slab -> create:cut_granite_bricks",
41 "create:cut_limestone_brick_slab -> create:cut_limestone_bricks",
42 "create:cut_ochrum_brick_slab -> create:cut_ochrum_bricks",
43 "create:cut_scorchia_brick_slab -> create:cut_scorchia_bricks",
44 "create:cut_scoria_brick_slab -> create:cut_scoria_bricks",
45 "create:cut_tuff_brick_slab -> create:cut_tuff_bricks",
46 "create:cut_veridium_brick_slab -> create:cut_veridium_bricks",
47
48 "create:polished_cut_andesite_slab -> create:polished_cut_andesite",
49 "create:polished_cut_asurine_slab -> create:polished_cut_asurine",
50 "create:polished_cut_calcite_slab -> create:polished_cut_calcite",
51 "create:polished_cut_crimsite_slab -> create:polished_cut_crimsite",
52 "create:polished_cut_deepslate_slab -> create:polished_cut_deepslate",
53 "create:polished_cut_diorite_slab -> create:polished_cut_diorite",
54 "create:polished_cut_dripstone_slab -> create:polished_cut_dripstone",
55 "create:polished_cut_granite_slab -> create:polished_cut_granite",
56 "create:polished_cut_limestone_slab -> create:polished_cut_limestone",
57 "create:polished_cut_ochrum_slab -> create:polished_cut_ochrum",
58 "create:polished_cut_scorchia_slab -> create:polished_cut_scorchia",
59 "create:polished_cut_scoria_slab -> create:polished_cut_scoria",
60 "create:polished_cut_tuff_slab -> create:polished_cut_tuff",
61 "create:polished_cut_veridium_slab -> create:polished_cut_veridium",
62
63 "create:small_andesite_brick_slab -> create:small_andesite_bricks",
64 "create:small_asurine_brick_slab -> create:small_asurine_bricks",
65 "create:small_calcite_brick_slab -> create:small_calcite_bricks",
66 "create:small_crimsite_brick_slab -> create:small_crimsite_bricks",
67 "create:small_deepslate_brick_slab -> create:small_deepslate_bricks",
68 "create:small_diorite_brick_slab -> create:small_diorite_bricks",
69 "create:small_dripstone_brick_slab -> create:small_dripstone_bricks",
70 "create:small_granite_brick_slab -> create:small_granite_bricks",
71 "create:small_limestone_brick_slab -> create:small_limestone_bricks",
72 "create:small_ochrum_brick_slab -> create:small_ochrum_bricks",
73 "create:small_scorchia_brick_slab -> create:small_scorchia_bricks",
74 "create:small_scoria_brick_slab -> create:small_scoria_bricks",
75 "create:small_tuff_brick_slab -> create:small_tuff_bricks",
76 "create:small_veridium_brick_slab -> create:small_veridium_bricks"
77] \ No newline at end of file
diff --git a/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/farmersdelight.json b/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/farmersdelight.json
new file mode 100644
index 0000000..0e4b21f
--- /dev/null
+++ b/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/farmersdelight.json
@@ -0,0 +1,23 @@
1[
2 "farmersdelight:apple_pie_slice -> farmersdelight:apple_pie",
3 "farmersdelight:beetroot_crate -> minecraft:beetroot",
4 "farmersdelight:cabbage_crate -> farmersdelight:cabbage",
5 "farmersdelight:cabbage_leaf -> farmersdelight:cabbage",
6 "farmersdelight:cake_slice -> minecraft:cake",
7 "farmersdelight:canvas_rug -> farmersdelight:canvas",
8 "farmersdelight:carrot_crate -> minecraft:carrot",
9 "farmersdelight:chocolate_pie_slice -> farmersdelight:chocolate_pie",
10 "farmersdelight:full_tatami_mat -> farmersdelight:tatami",
11 "farmersdelight:half_tatami_mat -> farmersdelight:full_tatami_mat",
12 "farmersdelight:milk_bottle -> minecraft:glass_bottle",
13 "farmersdelight:milk_bottle -> minecraft:milk_bucket",
14 "farmersdelight:onion_crate -> farmersdelight:onion",
15 "farmersdelight:potato_crate -> minecraft:potato",
16 "farmersdelight:pumpkin_slice -> minecraft:pumpkin",
17 "farmersdelight:rice_bag -> farmersdelight:rice",
18 "farmersdelight:rice_bale -> farmersdelight:rice_panicle",
19 "farmersdelight:safety_net -> farmersdelight:rope",
20 "farmersdelight:straw_bale -> farmersdelight:straw",
21 "farmersdelight:sweet_berry_cheesecake_slice -> farmersdelight:sweet_berry_cheesecake",
22 "farmersdelight:tomato_crate -> farmersdelight:tomato"
23] \ No newline at end of file
diff --git a/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/minecraft.json b/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/minecraft.json
index 663e70e..62d93fc 100644
--- a/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/minecraft.json
+++ b/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/minecraft.json
@@ -1,26 +1,42 @@
1[ 1[
2 "#minecraft:beds -> #minecraft:beds", 2 "#minecraft:beds -> #minecraft:beds",
3 "#minecraft:signs -> #minecraft:planks",
4 "#minecraft:wooden_doors -> #minecraft:planks",
5 "#minecraft:wooden_trapdoors -> #minecraft:planks",
3 "#minecraft:wool -> #minecraft:wool", 6 "#minecraft:wool -> #minecraft:wool",
7 "#minecraft:wool -> minecraft:string",
4 "#minecraft:wool_carpets -> #minecraft:wool_carpets", 8 "#minecraft:wool_carpets -> #minecraft:wool_carpets",
5 9
10 "minecraft:amethyst_block -> minecraft:amethyst_shard",
11
6 "minecraft:bone_block -> minecraft:bone_meal", 12 "minecraft:bone_block -> minecraft:bone_meal",
13 "minecraft:bricks -> minecraft:brick",
7 14
8 "minecraft:chiseled_quartz_block -> minecraft:quartz_slab", 15 "minecraft:chiseled_quartz_block -> minecraft:quartz_slab",
9 "minecraft:chiseled_red_sandstone -> minecraft:red_sandstone_slab", 16 "minecraft:chiseled_red_sandstone -> minecraft:red_sandstone_slab",
10 "minecraft:chiseled_sandstone -> minecraft:sandstone_slab", 17 "minecraft:chiseled_sandstone -> minecraft:sandstone_slab",
18 "minecraft:clay -> minecraft:clay_ball",
11 "minecraft:coal_block -> minecraft:coal", 19 "minecraft:coal_block -> minecraft:coal",
20 "minecraft:cobbled_deepslate -> minecraft:deepslate",
21 "minecraft:cobblestone -> minecraft:andesite",
22 "minecraft:cobblestone -> minecraft:diorite",
23 "minecraft:cobblestone -> minecraft:gravel",
24 "minecraft:cobblestone -> minecraft:stone",
12 "minecraft:copper_block -> minecraft:copper_ingot", 25 "minecraft:copper_block -> minecraft:copper_ingot",
13 26
14 "minecraft:diamond_block -> minecraft:diamond", 27 "minecraft:diamond_block -> minecraft:diamond",
28 "minecraft:diamond_horse_armor -> minecraft:diamond",
15 "minecraft:disc_fragment_5 -> minecraft:music_disc_5", 29 "minecraft:disc_fragment_5 -> minecraft:music_disc_5",
16 "minecraft:dried_kelp_block -> minecraft:dried_kelp", 30 "minecraft:dried_kelp_block -> minecraft:dried_kelp",
17 31
18 "minecraft:emerald_block -> minecraft:emerald", 32 "minecraft:emerald_block -> minecraft:emerald",
19 33
20 "minecraft:filled_map -> minecraft:map", 34 "minecraft:filled_map -> minecraft:map",
21 35
36 "minecraft:glowstone -> minecraft:glowstone_dust",
22 "minecraft:gold_block -> minecraft:gold_ingot", 37 "minecraft:gold_block -> minecraft:gold_ingot",
23 "minecraft:gold_nugget -> minecraft:gold_ingot", 38 "minecraft:gold_nugget -> minecraft:gold_ingot",
39 "minecraft:golden_horse_armor -> minecraft:gold_ingot",
24 "minecraft:golden_helmet -> minecraft:gold_nugget", 40 "minecraft:golden_helmet -> minecraft:gold_nugget",
25 "minecraft:golden_chestplate -> minecraft:gold_nugget", 41 "minecraft:golden_chestplate -> minecraft:gold_nugget",
26 "minecraft:golden_leggings -> minecraft:gold_nugget", 42 "minecraft:golden_leggings -> minecraft:gold_nugget",
@@ -30,12 +46,16 @@
30 "minecraft:golden_axe -> minecraft:gold_nugget", 46 "minecraft:golden_axe -> minecraft:gold_nugget",
31 "minecraft:golden_shovel -> minecraft:gold_nugget", 47 "minecraft:golden_shovel -> minecraft:gold_nugget",
32 "minecraft:golden_hoe -> minecraft:gold_nugget", 48 "minecraft:golden_hoe -> minecraft:gold_nugget",
49 "minecraft:granite -> minecraft:red_sand",
50 "minecraft:gravel -> minecraft:sand",
33 51
34 "minecraft:hay_block -> minecraft:wheat", 52 "minecraft:hay_block -> minecraft:wheat",
35 "minecraft:honey_block -> minecraft:honey_bottle", 53 "minecraft:honey_block -> minecraft:honey_bottle",
54 "minecraft:honey_bottle -> minecraft:glass_bottle",
36 55
37 "minecraft:iron_block -> minecraft:iron_ingot", 56 "minecraft:iron_block -> minecraft:iron_ingot",
38 "minecraft:iron_nugget -> minecraft:iron_ingot", 57 "minecraft:iron_nugget -> minecraft:iron_ingot",
58 "minecraft:iron_horse_armor -> minecraft:iron_ingot",
39 "minecraft:iron_helmet -> minecraft:iron_nugget", 59 "minecraft:iron_helmet -> minecraft:iron_nugget",
40 "minecraft:iron_chestplate -> minecraft:iron_nugget", 60 "minecraft:iron_chestplate -> minecraft:iron_nugget",
41 "minecraft:iron_leggings -> minecraft:iron_nugget", 61 "minecraft:iron_leggings -> minecraft:iron_nugget",
@@ -47,18 +67,33 @@
47 "minecraft:iron_hoe -> minecraft:iron_nugget", 67 "minecraft:iron_hoe -> minecraft:iron_nugget",
48 68
49 "minecraft:lapis_block -> minecraft:lapis_lazuli", 69 "minecraft:lapis_block -> minecraft:lapis_lazuli",
50 70 "minecraft:leather_horse_armor -> minecraft:leather",
71 "minecraft:leather_helmet -> minecraft:leather",
72 "minecraft:leather_chestplate -> minecraft:leather",
73 "minecraft:leather_leggings -> minecraft:leather",
74 "minecraft:leather_boots -> minecraft:leather",
75
76 "minecraft:melon -> minecraft:melon_slice",
77
78 "minecraft:nether_bricks -> minecraft:nether_brick",
79 "minecraft:nether_wart_block -> minecraft:nether_wart",
51 "minecraft:netherite_block -> minecraft:netherite_ingot", 80 "minecraft:netherite_block -> minecraft:netherite_ingot",
52 81
53 "minecraft:redstone_block -> minecraft:redstone", 82 "minecraft:redstone_block -> minecraft:redstone",
54 83
84 "minecraft:sandstone -> minecraft:sand",
55 "minecraft:slime_block -> minecraft:slime_ball", 85 "minecraft:slime_block -> minecraft:slime_ball",
56 86
57 "minecraft:purpur_pillar -> minecraft:purpur_slab", 87 "minecraft:purpur_pillar -> minecraft:purpur_slab",
58 88
89 "minecraft:quartz_block -> minecraft:quartz",
90 "minecraft:quartz -> minecraft:diorite",
91
59 "minecraft:raw_copper_block -> minecraft:raw_copper", 92 "minecraft:raw_copper_block -> minecraft:raw_copper",
60 "minecraft:raw_gold_block -> minecraft:raw_gold", 93 "minecraft:raw_gold_block -> minecraft:raw_gold",
61 "minecraft:raw_iron_block -> minecraft:raw_iron", 94 "minecraft:raw_iron_block -> minecraft:raw_iron",
62 95
96 "minecraft:soul_sand -> minecraft:quartz",
97
63 "minecraft:waxed_copper_block -> minecraft:copper_ingot" 98 "minecraft:waxed_copper_block -> minecraft:copper_ingot"
64] \ No newline at end of file 99] \ No newline at end of file
diff --git a/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/travelersbackpack.json b/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/travelersbackpack.json
new file mode 100644
index 0000000..de92516
--- /dev/null
+++ b/src/main/resources/data/eris_alchemy/eris_alchemy/cycle_cut/travelersbackpack.json
@@ -0,0 +1,3 @@
1[
2 "#eris_alchemy:travelersbackpack_sleeping_bags -> #eris_alchemy:travelersbackpack_sleeping_bags"
3] \ No newline at end of file
diff --git a/src/main/resources/data/eris_alchemy/eris_alchemy/fake_recipes/farmersdelight.json b/src/main/resources/data/eris_alchemy/eris_alchemy/fake_recipes/farmersdelight.json
new file mode 100644
index 0000000..cd41c1b
--- /dev/null
+++ b/src/main/resources/data/eris_alchemy/eris_alchemy/fake_recipes/farmersdelight.json
@@ -0,0 +1,4 @@
1[{
2 "output": "farmersdelight:rich_soil",
3 "input": "farmersdelight:organic_compost"
4}] \ No newline at end of file
diff --git a/src/main/resources/data/eris_alchemy/eris_alchemy/item_emcs/farmersdelight.json b/src/main/resources/data/eris_alchemy/eris_alchemy/item_emcs/farmersdelight.json
new file mode 100644
index 0000000..6e274cf
--- /dev/null
+++ b/src/main/resources/data/eris_alchemy/eris_alchemy/item_emcs/farmersdelight.json
@@ -0,0 +1,12 @@
1{
2 "farmersdelight:cabbage": 24,
3 "farmersdelight:cabbage_seeds": 16,
4 "farmersdelight:ham": 64,
5 "farmersdelight:onion": 24,
6 "farmersdelight:rice": 24,
7 "farmersdelight:rice_panicle": 16,
8 "farmersdelight:straw": 16,
9 "farmersdelight:tomato": 24,
10 "farmersdelight:tomato_seeds": 16,
11 "farmersdelight:tree_bark": 16
12} \ No newline at end of file
diff --git a/src/main/resources/data/eris_alchemy/eris_alchemy/item_emcs/porting_lib.json b/src/main/resources/data/eris_alchemy/eris_alchemy/item_emcs/porting_lib.json
new file mode 100644
index 0000000..c01528d
--- /dev/null
+++ b/src/main/resources/data/eris_alchemy/eris_alchemy/item_emcs/porting_lib.json
@@ -0,0 +1,3 @@
1{
2 "porting_lib:area_selector": null
3} \ No newline at end of file
diff --git a/src/main/resources/data/eris_alchemy/eris_alchemy/item_tag_emcs/c.json b/src/main/resources/data/eris_alchemy/eris_alchemy/item_tag_emcs/c.json
new file mode 100644
index 0000000..c95d0cb
--- /dev/null
+++ b/src/main/resources/data/eris_alchemy/eris_alchemy/item_tag_emcs/c.json
@@ -0,0 +1,3 @@
1{
2 "c:glass_blocks": 1
3} \ No newline at end of file
diff --git a/src/main/resources/data/eris_alchemy/eris_alchemy/item_tag_emcs/minecraft.json b/src/main/resources/data/eris_alchemy/eris_alchemy/item_tag_emcs/minecraft.json
index 70e4803..90bc05c 100644
--- a/src/main/resources/data/eris_alchemy/eris_alchemy/item_tag_emcs/minecraft.json
+++ b/src/main/resources/data/eris_alchemy/eris_alchemy/item_tag_emcs/minecraft.json
@@ -16,5 +16,6 @@
16 "minecraft:redstone_ores": null, 16 "minecraft:redstone_ores": null,
17 "minecraft:sand": 1, 17 "minecraft:sand": 1,
18 "minecraft:saplings": 32, 18 "minecraft:saplings": 32,
19 "minecraft:wool": 48 19 "minecraft:wool": 48,
20 "minecraft:wool_carpets": 32
20} \ No newline at end of file 21} \ No newline at end of file
diff --git a/src/main/resources/data/eris_alchemy/tags/items/travelersbackpack_sleeping_bags.json b/src/main/resources/data/eris_alchemy/tags/items/travelersbackpack_sleeping_bags.json
new file mode 100644
index 0000000..cd8db7f
--- /dev/null
+++ b/src/main/resources/data/eris_alchemy/tags/items/travelersbackpack_sleeping_bags.json
@@ -0,0 +1,69 @@
1{
2 "replace": false,
3 "values": [
4 {
5 "id": "#travelersbackpack:sleeping_bags",
6 "required": false
7 },
8 {
9 "id": "travelersbackpack:blue_sleeping_bag",
10 "required": false
11 },
12 {
13 "id": "travelersbackpack:brown_sleeping_bag",
14 "required": false
15 },
16 {
17 "id": "travelersbackpack:cyan_sleeping_bag",
18 "required": false
19 },
20 {
21 "id": "travelersbackpack:gray_sleeping_bag",
22 "required": false
23 },
24 {
25 "id": "travelersbackpack:green_sleeping_bag",
26 "required": false
27 },
28 {
29 "id": "travelersbackpack:light_blue_sleeping_bag",
30 "required": false
31 },
32 {
33 "id": "travelersbackpack:light_gray_sleeping_bag",
34 "required": false
35 },
36 {
37 "id": "travelersbackpack:lime_sleeping_bag",
38 "required": false
39 },
40 {
41 "id": "travelersbackpack:magenta_sleeping_bag",
42 "required": false
43 },
44 {
45 "id": "travelersbackpack:orange_sleeping_bag",
46 "required": false
47 },
48 {
49 "id": "travelersbackpack:pink_sleeping_bag",
50 "required": false
51 },
52 {
53 "id": "travelersbackpack:purple_sleeping_bag",
54 "required": false
55 },
56 {
57 "id": "travelersbackpack:red_sleeping_bag",
58 "required": false
59 },
60 {
61 "id": "travelersbackpack:yellow_sleeping_bag",
62 "required": false
63 },
64 {
65 "id": "travelersbackpack:white_sleeping_bag",
66 "required": false
67 }
68 ]
69} \ No newline at end of file