From 9445749ede3c61d3db9324184971b319b4a8bd1d Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Fri, 5 Jan 2024 22:18:56 +0100 Subject: Initial Commit --- .../lv/enes/mc/eris_alchemy/CovalenceRepair.java | 167 +++++++++++++++++++++ .../java/lv/enes/mc/eris_alchemy/ErisAlchemy.java | 68 +++++++++ .../lv/enes/mc/eris_alchemy/mixin/ItemMixin.java | 21 +++ src/main/resources/assets/eris_alchemy/icon.png | Bin 0 -> 391 bytes .../resources/assets/eris_alchemy/lang/en_us.json | 11 ++ .../models/item/high_covalence_dust.json | 6 + .../models/item/low_covalence_dust.json | 6 + .../models/item/medium_covalence_dust.json | 6 + .../guide_book/en_us/categories/root.json | 5 + .../en_us/entries/root/covalence_dusts.json | 32 ++++ .../guide_book/en_us/entries/root/guide_book.json | 15 ++ .../textures/item/high_covalence_dust.png | Bin 0 -> 302 bytes .../textures/item/low_covalence_dust.png | Bin 0 -> 302 bytes .../textures/item/medium_covalence_dust.png | Bin 0 -> 321 bytes src/main/resources/data/c/tags/items/leathers.json | 11 ++ .../advancements/grant_guide_on_first_join.json | 12 ++ .../loot_tables/grant_guide_on_first_join.json | 14 ++ .../patchouli_books/guide_book/book.json | 11 ++ .../data/eris_alchemy/recipes/guide_book.json | 9 ++ .../eris_alchemy/recipes/high_covalence_dust.json | 12 ++ .../recipes/high_covalence_repair.json | 12 ++ .../eris_alchemy/recipes/low_covalence_dust.json | 26 ++++ .../eris_alchemy/recipes/low_covalence_repair.json | 20 +++ .../recipes/medium_covalence_dust.json | 12 ++ .../recipes/medium_covalence_repair.json | 26 ++++ src/main/resources/eris_alchemy.mixins.json | 13 ++ src/main/resources/quilt.mod.json | 36 +++++ 27 files changed, 551 insertions(+) create mode 100644 src/main/java/lv/enes/mc/eris_alchemy/CovalenceRepair.java create mode 100644 src/main/java/lv/enes/mc/eris_alchemy/ErisAlchemy.java create mode 100644 src/main/java/lv/enes/mc/eris_alchemy/mixin/ItemMixin.java create mode 100644 src/main/resources/assets/eris_alchemy/icon.png create mode 100644 src/main/resources/assets/eris_alchemy/lang/en_us.json create mode 100644 src/main/resources/assets/eris_alchemy/models/item/high_covalence_dust.json create mode 100644 src/main/resources/assets/eris_alchemy/models/item/low_covalence_dust.json create mode 100644 src/main/resources/assets/eris_alchemy/models/item/medium_covalence_dust.json create mode 100644 src/main/resources/assets/eris_alchemy/patchouli_books/guide_book/en_us/categories/root.json create mode 100644 src/main/resources/assets/eris_alchemy/patchouli_books/guide_book/en_us/entries/root/covalence_dusts.json create mode 100644 src/main/resources/assets/eris_alchemy/patchouli_books/guide_book/en_us/entries/root/guide_book.json create mode 100644 src/main/resources/assets/eris_alchemy/textures/item/high_covalence_dust.png create mode 100644 src/main/resources/assets/eris_alchemy/textures/item/low_covalence_dust.png create mode 100644 src/main/resources/assets/eris_alchemy/textures/item/medium_covalence_dust.png create mode 100644 src/main/resources/data/c/tags/items/leathers.json create mode 100644 src/main/resources/data/eris_alchemy/advancements/grant_guide_on_first_join.json create mode 100644 src/main/resources/data/eris_alchemy/loot_tables/grant_guide_on_first_join.json create mode 100644 src/main/resources/data/eris_alchemy/patchouli_books/guide_book/book.json create mode 100644 src/main/resources/data/eris_alchemy/recipes/guide_book.json create mode 100644 src/main/resources/data/eris_alchemy/recipes/high_covalence_dust.json create mode 100644 src/main/resources/data/eris_alchemy/recipes/high_covalence_repair.json create mode 100644 src/main/resources/data/eris_alchemy/recipes/low_covalence_dust.json create mode 100644 src/main/resources/data/eris_alchemy/recipes/low_covalence_repair.json create mode 100644 src/main/resources/data/eris_alchemy/recipes/medium_covalence_dust.json create mode 100644 src/main/resources/data/eris_alchemy/recipes/medium_covalence_repair.json create mode 100644 src/main/resources/eris_alchemy.mixins.json create mode 100644 src/main/resources/quilt.mod.json (limited to 'src') diff --git a/src/main/java/lv/enes/mc/eris_alchemy/CovalenceRepair.java b/src/main/java/lv/enes/mc/eris_alchemy/CovalenceRepair.java new file mode 100644 index 0000000..2e9da77 --- /dev/null +++ b/src/main/java/lv/enes/mc/eris_alchemy/CovalenceRepair.java @@ -0,0 +1,167 @@ +package lv.enes.mc.eris_alchemy; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonSyntaxException; +import net.minecraft.core.RegistryAccess; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.inventory.CraftingContainer; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.CraftingBookCategory; +import net.minecraft.world.item.crafting.CustomRecipe; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.Level; +import org.quiltmc.qsl.recipe.api.serializer.QuiltRecipeSerializer; + +import java.util.ArrayList; +import java.util.Arrays; + +public class CovalenceRepair extends CustomRecipe { + static class Serializer implements QuiltRecipeSerializer { + private static class Json { + CraftingBookCategory category = CraftingBookCategory.MISC; + JsonElement dust; + JsonElement materials = new JsonObject(); + JsonElement tools = new JsonObject(); + } + + private Serializer() {} + + public static final Serializer INSTANCE = new Serializer(); + public static final ResourceLocation ID = new ResourceLocation(ErisAlchemy.ID, "covalence_repair"); + + @Override + public JsonObject toJson(CovalenceRepair recipe) { + var res = new JsonObject(); + res.addProperty("category", recipe.category().toString()); + res.add("dust", recipe.dust.toJson()); + res.add("materials", recipe.materials.toJson()); + res.add("tools", recipe.tools.toJson()); + return res; + } + + @Override + public CovalenceRepair fromJson(ResourceLocation id, JsonObject json) { + var recipeJson = new Gson().fromJson(json, Json.class); + if (recipeJson.dust == null) { + throw new JsonSyntaxException("A required attribute is missing"); + } + + var dust = Ingredient.fromJson(recipeJson.dust); + var materials = Ingredient.fromJson(recipeJson.materials); + var tools = Ingredient.fromJson(recipeJson.tools); + + return new CovalenceRepair(id, recipeJson.category, dust, materials, tools); + } + + @Override + public void toNetwork(FriendlyByteBuf buf, CovalenceRepair recipe) { + buf.writeEnum(recipe.category()); + recipe.dust.toNetwork(buf); + recipe.materials.toNetwork(buf); + recipe.tools.toNetwork(buf); + } + + @Override + public CovalenceRepair fromNetwork(ResourceLocation id, FriendlyByteBuf buf) { + var category = buf.readEnum(CraftingBookCategory.class); + var dust = Ingredient.fromNetwork(buf); + var materials = Ingredient.fromNetwork(buf); + var tools = Ingredient.fromNetwork(buf); + return new CovalenceRepair(id, category, dust, materials, tools); + } + } + + private record Inputs(ItemStack toolStack, int dustCount) {} + + private final static int DUSTS_TO_FIX = 8; + + /** What dust do we use to repair. */ + private final Ingredient dust; + /** What materials this dust can repair. */ + private final Ingredient materials; + /** What tools can this dust repair. */ + private final Ingredient tools; + + public CovalenceRepair(ResourceLocation id, CraftingBookCategory category, Ingredient dust, Ingredient materials, Ingredient tools) { + super(id, category); + + this.dust = dust; + this.materials = materials; + this.tools = tools; + } + + @Override + public boolean canCraftInDimensions(int width, int height) { + return width * height > 2; + } + + @Override + public boolean matches(CraftingContainer inventory, Level world) { + return getInputs(inventory) != null; + } + + @Override + public ItemStack assemble(CraftingContainer inventory, RegistryAccess registryManager) { + var inputs = getInputs(inventory); + if (inputs == null) { + return ItemStack.EMPTY; + } + + var newToolStack = inputs.toolStack.copy(); + var repairedAmount = inputs.toolStack.getItem().getMaxDamage() * inputs.dustCount / DUSTS_TO_FIX; + newToolStack.setDamageValue(inputs.toolStack.getDamageValue() - repairedAmount); + return newToolStack; + } + + @Override + public RecipeSerializer getSerializer() { + return Serializer.INSTANCE; + } + + private boolean isTool(ItemStack stack) { + if (!stack.isDamageableItem() || !stack.isDamaged() || stack.getCount() != 1) { + return false; + } + + if (tools.test(stack)) { + return true; + } + + var item = stack.getItem(); + return Arrays.stream(materials.getItems()).anyMatch(material -> item.isValidRepairItem(stack, material)); + } + + private boolean isDust(ItemStack stack) { + return dust.test(stack); + } + + /** @return null if recipe isn't correct. */ + private Inputs getInputs(CraftingContainer inventory) { + ItemStack toolStack = null; + var dustStacks = new ArrayList(); + for (var i = 0; i < inventory.getContainerSize(); i++) { + var stack = inventory.getItem(i); + if (stack.isEmpty()) { + continue; + } + + if (isDust(stack) && (dustStacks.isEmpty() || ItemStack.isSameItemSameTags(dustStacks.get(0), stack))) { + dustStacks.add(stack); + } else if (toolStack == null) { + toolStack = stack; + } else { + return null; + } + } + + if (toolStack == null || dustStacks.isEmpty() || !isTool(toolStack)) { + return null; + } + + return new Inputs(toolStack, dustStacks.size()); + } +} diff --git a/src/main/java/lv/enes/mc/eris_alchemy/ErisAlchemy.java b/src/main/java/lv/enes/mc/eris_alchemy/ErisAlchemy.java new file mode 100644 index 0000000..34e6b09 --- /dev/null +++ b/src/main/java/lv/enes/mc/eris_alchemy/ErisAlchemy.java @@ -0,0 +1,68 @@ +package lv.enes.mc.eris_alchemy; + +import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; +import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import org.quiltmc.loader.api.ModContainer; +import org.quiltmc.qsl.base.api.entrypoint.ModInitializer; +import org.quiltmc.qsl.item.setting.api.QuiltItemSettings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ErisAlchemy implements ModInitializer { + public static final String ID = "eris_alchemy"; + public static final Logger LOGGER = LoggerFactory.getLogger(ID); + + // Aside from crafting recipe inputs, covalence dusts can be used to repair equipment via shapeless crafting + // Low covalence dust: + // - wooden and stone tools + // - leather armour + // - fishing rods + // - wooden bows + // - turtle shells + // Medium covalence dust: + // - iron, gold, bronze, ruby, sapphire, and green sapphire tools and armour + // - flints & steels + // - shears + // - elytras + // High covalence dust: + // - diamond and netherite tools and armour + // 8 dusts are enough to repair 100% :3 + public static final Item LOW_COVALENCE_DUST = new Item(new QuiltItemSettings()); + public static final Item MEDIUM_COVALENCE_DUST = new Item(new QuiltItemSettings()); + public static final Item HIGH_COVALENCE_DUST = new Item(new QuiltItemSettings()); + + public static final CreativeModeTab ITEM_GROUP = FabricItemGroup.builder() + .icon(() -> new ItemStack(LOW_COVALENCE_DUST)) + .title(Component.translatable("itemGroup.eris_alchemy.item_group")) + .displayItems((context, entries) -> { + entries.accept(LOW_COVALENCE_DUST); + entries.accept(MEDIUM_COVALENCE_DUST); + entries.accept(HIGH_COVALENCE_DUST); + }) + .build(); + + @Override + public void onInitialize(ModContainer mod) { + LOGGER.info("Hello World from {}!", mod.metadata().name()); + if (!mod.metadata().id().equals(ID)) { + throw new RuntimeException("Hardcoded mod ID doesn't match the configured one!"); + } + + Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, new ResourceLocation(ID, "item_group"), ITEM_GROUP); + + Registry.register(BuiltInRegistries.ITEM, new ResourceLocation(ID, "low_covalence_dust"), LOW_COVALENCE_DUST); + Registry.register(BuiltInRegistries.ITEM, new ResourceLocation(ID, "medium_covalence_dust"), MEDIUM_COVALENCE_DUST); + Registry.register(BuiltInRegistries.ITEM, new ResourceLocation(ID, "high_covalence_dust"), HIGH_COVALENCE_DUST); + + Registry.register(BuiltInRegistries.RECIPE_SERIALIZER, CovalenceRepair.Serializer.ID, CovalenceRepair.Serializer.INSTANCE); + } +} diff --git a/src/main/java/lv/enes/mc/eris_alchemy/mixin/ItemMixin.java b/src/main/java/lv/enes/mc/eris_alchemy/mixin/ItemMixin.java new file mode 100644 index 0000000..54a2fd0 --- /dev/null +++ b/src/main/java/lv/enes/mc/eris_alchemy/mixin/ItemMixin.java @@ -0,0 +1,21 @@ +package lv.enes.mc.eris_alchemy.mixin; + +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.List; + +@Mixin(Item.class) +public class ItemMixin { + @Inject(method = "appendHoverText", at = @At("RETURN")) + public void onAppendHoverText(ItemStack stack, Level world, List tooltip, TooltipFlag context, CallbackInfo ci) { + tooltip.add(Component.literal("EMC ???")); + } +} diff --git a/src/main/resources/assets/eris_alchemy/icon.png b/src/main/resources/assets/eris_alchemy/icon.png new file mode 100644 index 0000000..09015e4 Binary files /dev/null and b/src/main/resources/assets/eris_alchemy/icon.png differ diff --git a/src/main/resources/assets/eris_alchemy/lang/en_us.json b/src/main/resources/assets/eris_alchemy/lang/en_us.json new file mode 100644 index 0000000..c001018 --- /dev/null +++ b/src/main/resources/assets/eris_alchemy/lang/en_us.json @@ -0,0 +1,11 @@ +{ + "book.eris_alchemy.title": "Eris Alchemy", + "book.eris_alchemy.subtitle": "the Official Guide", + "book.eris_alchemy.landing_text": "Welcome to Alchemy!", + + "item.eris_alchemy.low_covalence_dust": "Low Covalence Dust", + "item.eris_alchemy.medium_covalence_dust": "Medium Covalence Dust", + "item.eris_alchemy.high_covalence_dust": "High Covalence Dust", + + "itemGroup.eris_alchemy.item_group": "Eris Alchemy" +} \ No newline at end of file diff --git a/src/main/resources/assets/eris_alchemy/models/item/high_covalence_dust.json b/src/main/resources/assets/eris_alchemy/models/item/high_covalence_dust.json new file mode 100644 index 0000000..9eaa71b --- /dev/null +++ b/src/main/resources/assets/eris_alchemy/models/item/high_covalence_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "eris_alchemy:item/high_covalence_dust" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/eris_alchemy/models/item/low_covalence_dust.json b/src/main/resources/assets/eris_alchemy/models/item/low_covalence_dust.json new file mode 100644 index 0000000..2fc6a71 --- /dev/null +++ b/src/main/resources/assets/eris_alchemy/models/item/low_covalence_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "eris_alchemy:item/low_covalence_dust" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/eris_alchemy/models/item/medium_covalence_dust.json b/src/main/resources/assets/eris_alchemy/models/item/medium_covalence_dust.json new file mode 100644 index 0000000..aa4823c --- /dev/null +++ b/src/main/resources/assets/eris_alchemy/models/item/medium_covalence_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "eris_alchemy:item/medium_covalence_dust" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/eris_alchemy/patchouli_books/guide_book/en_us/categories/root.json b/src/main/resources/assets/eris_alchemy/patchouli_books/guide_book/en_us/categories/root.json new file mode 100644 index 0000000..0320cae --- /dev/null +++ b/src/main/resources/assets/eris_alchemy/patchouli_books/guide_book/en_us/categories/root.json @@ -0,0 +1,5 @@ +{ + "name": "book.eris_alchemy.title", + "description": "book.eris_alchemy.title", + "icon": "minecraft:writable_book" +} \ No newline at end of file diff --git a/src/main/resources/assets/eris_alchemy/patchouli_books/guide_book/en_us/entries/root/covalence_dusts.json b/src/main/resources/assets/eris_alchemy/patchouli_books/guide_book/en_us/entries/root/covalence_dusts.json new file mode 100644 index 0000000..09c10ca --- /dev/null +++ b/src/main/resources/assets/eris_alchemy/patchouli_books/guide_book/en_us/entries/root/covalence_dusts.json @@ -0,0 +1,32 @@ +{ + "name": "Covalence Dusts", + "icon": "eris_alchemy:medium_covalence_dust", + "category": "eris_alchemy:root", + "pages": [{ + "type": "patchouli:spotlight", + "title": "Covalence Dusts", + "item": "eris_alchemy:low_covalence_dust,eris_alchemy:medium_covalence_dust,eris_alchemy:high_covalence_dust", + "link_recipe": true, + "text": "$(thing)Covalence dusts$() are the most basic items you create in Eris Alchemy." + }, { + "type": "patchouli:crafting", + "recipe": "eris_alchemy:low_covalence_dust", + "recipe2": "eris_alchemy:medium_covalence_dust" + }, { + "type": "patchouli:crafting", + "recipe": "eris_alchemy:high_covalence_dust" + }, { + "type": "patchouli:text", + "title": "Repairing items", + "text": "Aside from being inputs to various other recipes, $(thing)Covalence dusts$() can also be used for repairing tools. Just add your damaged item and at least one corresponding $(thing)covalence dust$() in a crafting grid and it should Just Work(TM)." + }, { + "type": "patchouli:text", + "text": "$(item)Low Covalence Dust$() can be used to repair$(li)$(thing)Wooden tools$(),$(li)$(thing)Stone tools$(),$(li)$(thing)Leather armour$(),$(li)$(thing)Turtle shell armour$(),$(li)$(item)Fishing rods$(), and$(li)$(item)Bows$()." + }, { + "type": "patchouli:text", + "text": "$(item)Medium Covalence Dust$() can be used to repair$(li)$(thing)Iron tools and armour$(),$(li)$(thing)Gold tools and armour$(),$(li)$(thing)Bronze tools and armour$() (if you have any),$(li)$(thing)Ruby tools and armour$() (if you have any),$(li)$(thing)Sapphire tools and armour$() (if you have any),$(li)$(thing)Green sapphire tools and armour$() (if you have any),$(li)$(item)Elytras$(),$(li)$(item)Flint and Steel$(), and$(li)$(item)Shears$()." + }, { + "type": "patchouli:text", + "text": "$(item)High Covalence Dust$() can be used to repair$(li)$(thing)Diamond tools and armour$() and$(li)$(thing)Netherite tools and armour$()." + }] +} \ No newline at end of file diff --git a/src/main/resources/assets/eris_alchemy/patchouli_books/guide_book/en_us/entries/root/guide_book.json b/src/main/resources/assets/eris_alchemy/patchouli_books/guide_book/en_us/entries/root/guide_book.json new file mode 100644 index 0000000..b501b0b --- /dev/null +++ b/src/main/resources/assets/eris_alchemy/patchouli_books/guide_book/en_us/entries/root/guide_book.json @@ -0,0 +1,15 @@ +{ + "name": "Guide Book", + "icon": "patchouli:guide_book{'patchouli:book':'eris_alchemy:guide_book'}", + "category": "eris_alchemy:root", + "pages": [{ + "type": "patchouli:spotlight", + "title": "Guide Book", + "item": "patchouli:guide_book{'patchouli:book':'eris_alchemy:guide_book'}", + "link_recipe": true, + "text": "The Eris Alchemy $(item)Guide Book$() should be already in your inventory for obvious reasons, but if you ever lose it you can recreate it with this crafting recipe." + }, { + "type": "patchouli:crafting", + "recipe": "eris_alchemy:guide_book" + }] +} \ No newline at end of file diff --git a/src/main/resources/assets/eris_alchemy/textures/item/high_covalence_dust.png b/src/main/resources/assets/eris_alchemy/textures/item/high_covalence_dust.png new file mode 100644 index 0000000..4949eb8 Binary files /dev/null and b/src/main/resources/assets/eris_alchemy/textures/item/high_covalence_dust.png differ diff --git a/src/main/resources/assets/eris_alchemy/textures/item/low_covalence_dust.png b/src/main/resources/assets/eris_alchemy/textures/item/low_covalence_dust.png new file mode 100644 index 0000000..6a2f670 Binary files /dev/null and b/src/main/resources/assets/eris_alchemy/textures/item/low_covalence_dust.png differ diff --git a/src/main/resources/assets/eris_alchemy/textures/item/medium_covalence_dust.png b/src/main/resources/assets/eris_alchemy/textures/item/medium_covalence_dust.png new file mode 100644 index 0000000..e38d160 Binary files /dev/null and b/src/main/resources/assets/eris_alchemy/textures/item/medium_covalence_dust.png differ diff --git a/src/main/resources/data/c/tags/items/leathers.json b/src/main/resources/data/c/tags/items/leathers.json new file mode 100644 index 0000000..3bae083 --- /dev/null +++ b/src/main/resources/data/c/tags/items/leathers.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + { + "id": "#c:leather", + "required": false + }, + "minecraft:leather", + "minecraft:rabbit_hide" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/eris_alchemy/advancements/grant_guide_on_first_join.json b/src/main/resources/data/eris_alchemy/advancements/grant_guide_on_first_join.json new file mode 100644 index 0000000..0b43b60 --- /dev/null +++ b/src/main/resources/data/eris_alchemy/advancements/grant_guide_on_first_join.json @@ -0,0 +1,12 @@ +{ + "criteria": { + "tick": { + "trigger": "minecraft:tick" + } + }, + "rewards": { + "loot": [ + "eris_alchemy:grant_guide_on_first_join" + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/eris_alchemy/loot_tables/grant_guide_on_first_join.json b/src/main/resources/data/eris_alchemy/loot_tables/grant_guide_on_first_join.json new file mode 100644 index 0000000..3566ef1 --- /dev/null +++ b/src/main/resources/data/eris_alchemy/loot_tables/grant_guide_on_first_join.json @@ -0,0 +1,14 @@ +{ + "type": "advancement_reward", + "pools": [{ + "rolls": 1, + "entries": [{ + "type": "item", + "name": "patchouli:guide_book", + "functions": [{ + "function": "set_nbt", + "tag": "{\"patchouli:book\": \"eris_alchemy:guide_book\"}" + }] + }] + }] +} \ No newline at end of file diff --git a/src/main/resources/data/eris_alchemy/patchouli_books/guide_book/book.json b/src/main/resources/data/eris_alchemy/patchouli_books/guide_book/book.json new file mode 100644 index 0000000..da4be0b --- /dev/null +++ b/src/main/resources/data/eris_alchemy/patchouli_books/guide_book/book.json @@ -0,0 +1,11 @@ +{ + "name": "book.eris_alchemy.title", + "subtitle": "book.eris_alchemy.subtitle", + "landing_text": "book.eris_alchemy.landing_text", + "use_resource_pack": true, + "pamphlet": true, + "creative_tab": "eris_alchemy:item_group", + "book_texture": "patchouli:textures/gui/book_cyan.png", + "model": "patchouli:book_cyan", + "show_progress": false +} \ No newline at end of file diff --git a/src/main/resources/data/eris_alchemy/recipes/guide_book.json b/src/main/resources/data/eris_alchemy/recipes/guide_book.json new file mode 100644 index 0000000..bbc4448 --- /dev/null +++ b/src/main/resources/data/eris_alchemy/recipes/guide_book.json @@ -0,0 +1,9 @@ +{ + "type": "patchouli:shapeless_book_recipe", + "ingredients": [{ + "item": "eris_alchemy:low_covalence_dust" + }, { + "item": "minecraft:book" + }], + "book": "eris_alchemy:guide_book" +} \ No newline at end of file diff --git a/src/main/resources/data/eris_alchemy/recipes/high_covalence_dust.json b/src/main/resources/data/eris_alchemy/recipes/high_covalence_dust.json new file mode 100644 index 0000000..e4e142d --- /dev/null +++ b/src/main/resources/data/eris_alchemy/recipes/high_covalence_dust.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [{ + "item": "minecraft:diamond" + }, { + "item": "minecraft:coal" + }], + "result": { + "item": "eris_alchemy:high_covalence_dust", + "count": 40 + } +} \ No newline at end of file diff --git a/src/main/resources/data/eris_alchemy/recipes/high_covalence_repair.json b/src/main/resources/data/eris_alchemy/recipes/high_covalence_repair.json new file mode 100644 index 0000000..7b87b44 --- /dev/null +++ b/src/main/resources/data/eris_alchemy/recipes/high_covalence_repair.json @@ -0,0 +1,12 @@ +{ + "type": "eris_alchemy:covalence_repair", + "dust": { + "item": "eris_alchemy:high_covalence_dust" + }, + "materials": [{ + "tag": "c:diamonds" + }, { + "tag": "c:netherite_ingots" + }], + "tools": [] +} \ No newline at end of file diff --git a/src/main/resources/data/eris_alchemy/recipes/low_covalence_dust.json b/src/main/resources/data/eris_alchemy/recipes/low_covalence_dust.json new file mode 100644 index 0000000..572e506 --- /dev/null +++ b/src/main/resources/data/eris_alchemy/recipes/low_covalence_dust.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [{ + "item": "minecraft:coal" + }, { + "item": "minecraft:cobblestone" + }, { + "item": "minecraft:cobblestone" + }, { + "item": "minecraft:cobblestone" + }, { + "item": "minecraft:cobblestone" + }, { + "item": "minecraft:cobblestone" + }, { + "item": "minecraft:cobblestone" + }, { + "item": "minecraft:cobblestone" + }, { + "item": "minecraft:cobblestone" + }], + "result": { + "item": "eris_alchemy:low_covalence_dust", + "count": 40 + } +} \ No newline at end of file diff --git a/src/main/resources/data/eris_alchemy/recipes/low_covalence_repair.json b/src/main/resources/data/eris_alchemy/recipes/low_covalence_repair.json new file mode 100644 index 0000000..343cd4f --- /dev/null +++ b/src/main/resources/data/eris_alchemy/recipes/low_covalence_repair.json @@ -0,0 +1,20 @@ +{ + "type": "eris_alchemy:covalence_repair", + "dust": { + "item": "eris_alchemy:low_covalence_dust" + }, + "materials": [{ + "tag": "minecraft:planks" + }, { + "tag": "minecraft:stone_tool_materials" + }, { + "tag": "c:leathers" + }, { + "item": "minecraft:scute" + }], + "tools": [{ + "item": "minecraft:fishing_rod" + }, { + "item": "minecraft:bow" + }] +} \ No newline at end of file diff --git a/src/main/resources/data/eris_alchemy/recipes/medium_covalence_dust.json b/src/main/resources/data/eris_alchemy/recipes/medium_covalence_dust.json new file mode 100644 index 0000000..cf9cbce --- /dev/null +++ b/src/main/resources/data/eris_alchemy/recipes/medium_covalence_dust.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [{ + "item": "minecraft:iron_ingot" + }, { + "item": "minecraft:redstone" + }], + "result": { + "item": "eris_alchemy:medium_covalence_dust", + "count": 40 + } +} \ No newline at end of file diff --git a/src/main/resources/data/eris_alchemy/recipes/medium_covalence_repair.json b/src/main/resources/data/eris_alchemy/recipes/medium_covalence_repair.json new file mode 100644 index 0000000..a75bf89 --- /dev/null +++ b/src/main/resources/data/eris_alchemy/recipes/medium_covalence_repair.json @@ -0,0 +1,26 @@ +{ + "type": "eris_alchemy:covalence_repair", + "dust": { + "item": "eris_alchemy:medium_covalence_dust" + }, + "materials": [{ + "tag": "c:iron_ingots" + }, { + "tag": "c:gold_ingots" + }, { + "tag": "c:bronze_ingots" + }, { + "tag": "c:rubies" + }, { + "tag": "c:sapphires" + }, { + "tag": "c:green_sapphires" + }, { + "item": "minecraft:phantom_membrane" + }], + "tools": [{ + "item": "minecraft:flint_and_steel" + }, { + "item": "minecraft:shears" + }] +} \ No newline at end of file diff --git a/src/main/resources/eris_alchemy.mixins.json b/src/main/resources/eris_alchemy.mixins.json new file mode 100644 index 0000000..88e1a8c --- /dev/null +++ b/src/main/resources/eris_alchemy.mixins.json @@ -0,0 +1,13 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "lv.enes.mc.eris_alchemy.mixin", + "compatibilityLevel": "JAVA_17", + "mixins": [], + "client": [ + "ItemMixin" + ], + "injectors": { + "defaultRequire": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/quilt.mod.json b/src/main/resources/quilt.mod.json new file mode 100644 index 0000000..c20037c --- /dev/null +++ b/src/main/resources/quilt.mod.json @@ -0,0 +1,36 @@ +{ + "schema_version": 1, + "quilt_loader": { + "group": "lv.enes.mc", + "id": "eris_alchemy", + "version": "${version}", + "metadata": { + "name": "Eris Alchemy", + "description": "Adds the condensing chest from EE2.", + "contributors": { + "Eris": "Owner" + }, + "contact": { + "homepage": "https://TODO", + "issues": "https://TODO", + "sources": "https://TODO" + }, + "icon": "assets/eris_alchemy/icon.png" + }, + "intermediate_mappings": "net.fabricmc:intermediary", + "entrypoints": { + "init": "lv.enes.mc.eris_alchemy.ErisAlchemy" + }, + "depends": [{ + "id": "quilt_loader", + "versions": ">=0.23.0" + }, { + "id": "quilted_fabric_api", + "versions": ">=7.4.0" + }, { + "id": "minecraft", + "versions": "1.20.1" + }] + }, + "mixin": "eris_alchemy.mixins.json" +} \ No newline at end of file -- cgit v1.2.3