From b26327097e0b4c5151f1cb37958719349f2b4677 Mon Sep 17 00:00:00 2001 From: Eqis-Edu <117950663+Eqis-Edu@users.noreply.github.com> Date: Mon, 4 Dec 2023 06:13:46 -0300 Subject: [PATCH] Book of Binding: Empty (#1005) * #1004 * Book of Binding: Empty --- .../assets/occultism/lang/en_us.json | 9 +++- .../getting_started/books_of_binding.json | 32 +++++++++++++ .../datagen/OccultismBookProvider.java | 44 +++++++++++++++++- .../occultism/datagen/lang/ENUSProvider.java | 7 ++- .../occultism/registry/OccultismItems.java | 20 ++++---- .../models/item/awakened_feather.json | 6 +++ .../models/item/book_of_binding_empty.json | 6 +++ .../occultism/models/item/taboo_book.json | 6 +++ .../textures/item/awakened_feather.png | Bin 0 -> 755 bytes .../textures/item/awakened_feather.png.mcmeta | 23 +++++++++ .../textures/item/book_of_binding_empty.png | Bin 0 -> 43774 bytes .../occultism/textures/item/taboo_book.png | Bin 0 -> 5504 bytes .../crafting/book_of_binding_afrit.json | 7 ++- .../book_of_binding_afrit_from_empty.json | 19 ++++++++ .../crafting/book_of_binding_djinni.json | 7 ++- .../book_of_binding_djinni_from_empty.json | 19 ++++++++ .../crafting/book_of_binding_empty.json | 17 +++++++ .../crafting/book_of_binding_foliot.json | 7 ++- .../book_of_binding_foliot_from_empty.json | 19 ++++++++ .../crafting/book_of_binding_marid.json | 7 ++- .../book_of_binding_marid_from_empty.json | 22 +++++++++ .../recipes/spirit_fire/awakened_feather.json | 9 ++++ .../spirit_fire/book_of_binding_empty.json | 9 ++++ .../recipes/spirit_fire/taboo_book.json | 9 ++++ 24 files changed, 283 insertions(+), 21 deletions(-) create mode 100644 src/main/resources/assets/occultism/models/item/awakened_feather.json create mode 100644 src/main/resources/assets/occultism/models/item/book_of_binding_empty.json create mode 100644 src/main/resources/assets/occultism/models/item/taboo_book.json create mode 100644 src/main/resources/assets/occultism/textures/item/awakened_feather.png create mode 100644 src/main/resources/assets/occultism/textures/item/awakened_feather.png.mcmeta create mode 100644 src/main/resources/assets/occultism/textures/item/book_of_binding_empty.png create mode 100644 src/main/resources/assets/occultism/textures/item/taboo_book.png create mode 100644 src/main/resources/data/occultism/recipes/crafting/book_of_binding_afrit_from_empty.json create mode 100644 src/main/resources/data/occultism/recipes/crafting/book_of_binding_djinni_from_empty.json create mode 100644 src/main/resources/data/occultism/recipes/crafting/book_of_binding_empty.json create mode 100644 src/main/resources/data/occultism/recipes/crafting/book_of_binding_foliot_from_empty.json create mode 100644 src/main/resources/data/occultism/recipes/crafting/book_of_binding_marid_from_empty.json create mode 100644 src/main/resources/data/occultism/recipes/spirit_fire/awakened_feather.json create mode 100644 src/main/resources/data/occultism/recipes/spirit_fire/book_of_binding_empty.json create mode 100644 src/main/resources/data/occultism/recipes/spirit_fire/taboo_book.json diff --git a/src/generated/resources/assets/occultism/lang/en_us.json b/src/generated/resources/assets/occultism/lang/en_us.json index f213a218d..e12b3af03 100644 --- a/src/generated/resources/assets/occultism/lang/en_us.json +++ b/src/generated/resources/assets/occultism/lang/en_us.json @@ -240,7 +240,9 @@ "book.occultism.dictionary_of_spirits.familiar_rituals.overview.trading.text": "\"Familiars can be easily traded when in a [Familiar Ring](entry://crafting_rituals/craft_familiar_ring).\n\\\n\\\nWhen released, the spirit will recognize the person releasing them as their new master.\n", "book.occultism.dictionary_of_spirits.familiar_rituals.overview.trading.title": "Equipping Familiars", "book.occultism.dictionary_of_spirits.familiar_rituals.return_to_rituals.name": "Return to Rituals Category", + "book.occultism.dictionary_of_spirits.getting_started.books_of_binding.awakened_feather_recipe.text": "In order to craft [#](ad03fc)Books of Binding[#]() to summon spirits, you also need awakened feather. Simply drop any feather into [](item://occultism:spirit_fire) to awakened it.\n", "book.occultism.dictionary_of_spirits.getting_started.books_of_binding.book_of_binding_bound_foliot_recipe.text": "Add the name of the spirit to summon to your book of binding by crafting it with the Dictionary of Spirits. The Dictionary will not be used up.\n", + "book.occultism.dictionary_of_spirits.getting_started.books_of_binding.book_of_binding_empty.text": " Alternatively, you can directly use the Binding Book: Empty instead of the previous three items. There are two ways to obtain this book. Place this book in the center of dyes to get specific book of binding.\n", "book.occultism.dictionary_of_spirits.getting_started.books_of_binding.book_of_binding_foliot_recipe.text": "Craft a book of binding that will be used to call forth a [#](ad03fc)Foliot[#]() spirit.\n", "book.occultism.dictionary_of_spirits.getting_started.books_of_binding.description": "Or how to identify your spirit", "book.occultism.dictionary_of_spirits.getting_started.books_of_binding.intro.text": "To call forth a spirit, a [#](ad03fc)Book of Binding[#]() must be used in the ritual.\nThere is a type of book corresponding to each type (or tier) of spirit.\nTo identify a spirit to summon, it's name must be written in the [#](ad03fc)Book of Binding[#](), resulting in a [#](ad03fc)Bound Book of Binding[#]() that can be used in the ritual.\n", @@ -248,6 +250,7 @@ "book.occultism.dictionary_of_spirits.getting_started.books_of_binding.intro2.text": "**Note:** *The spirit names are eye candy only*, that means they are not relevant for the recipe. As long as you have the right spirit type in your book of binding it can be used.\n", "book.occultism.dictionary_of_spirits.getting_started.books_of_binding.name": "Books of Binding", "book.occultism.dictionary_of_spirits.getting_started.books_of_binding.purified_ink_recipe.text": "In order to craft [#](ad03fc)Books of Binding[#]() to summon spirits, you need purified ink. Simply drop any black dye into [](item://occultism:spirit_fire) to purify it.\n", + "book.occultism.dictionary_of_spirits.getting_started.books_of_binding.taboo_book_recipe.text": "Lastly you need taboo book to craft [#](ad03fc)Books of Binding[#]() to summon spirits. Simply drop a book into [](item://occultism:spirit_fire) to get it.\n", "book.occultism.dictionary_of_spirits.getting_started.books_of_calling.description": "Telling your spirits what to do", "book.occultism.dictionary_of_spirits.getting_started.books_of_calling.intro.text": "Books of Calling allow to control a summoned spirit, and to store it to prevent essence decay or move it more easily.\n\\\n\\\nOnly spirits that require precise instructions - such as a work area or drop-off storage - come with a book of calling.\n", "book.occultism.dictionary_of_spirits.getting_started.books_of_calling.intro.title": "Books of Calling", @@ -676,7 +679,7 @@ "book.occultism.dictionary_of_spirits.summoning_rituals.summon_crusher_t3.intro.text": "The afrit crusher is resistant to essence decay and faster and more efficient than the djinni crusher.\n\\\n\\\nIt will crush **one** ore into **four** corresponding dusts.\n", "book.occultism.dictionary_of_spirits.summoning_rituals.summon_crusher_t3.intro.title": "Afrit Crusher", "book.occultism.dictionary_of_spirits.summoning_rituals.summon_crusher_t3.name": "Summon Afrit Crusher", - "book.occultism.dictionary_of_spirits.summoning_rituals.summon_crusher_t4.intro.text": "The afrit crusher is resistant to essence decay and faster and more efficient than the afrit crusher.\n\\\n\\\nIt will crush **one** ore into **six** corresponding dusts.\n", + "book.occultism.dictionary_of_spirits.summoning_rituals.summon_crusher_t4.intro.text": "The marid crusher is resistant to essence decay and faster and more efficient than the afrit crusher.\n\\\n\\\nIt will crush **one** ore into **six** corresponding dusts.\n", "book.occultism.dictionary_of_spirits.summoning_rituals.summon_crusher_t4.intro.title": "Marid Crusher", "book.occultism.dictionary_of_spirits.summoning_rituals.summon_crusher_t4.name": "Summon Marid Crusher", "book.occultism.dictionary_of_spirits.summoning_rituals.summon_lumberjack.book_of_calling.text": "If you lose the book of calling, you can craft a new one.\n[#](ad03fc)Shift-right-click[#]() the spirit with the crafted book to assign it.\n", @@ -820,6 +823,7 @@ "gui.occultism.storage_controller.space_info_label": "%d/%d", "item.minecraft.diamond_sword.occultism_spirit_tooltip": "%s is bound to this sword. May your foes tremor before its glory.", "item.occultism.afrit_essence": "Afrit Essence", + "item.occultism.awakened_feather": "Awakened Feather", "item.occultism.book_of_binding_afrit": "Book of Binding: Afrit", "item.occultism.book_of_binding_afrit.tooltip": "This book has not been bound to an afrit yet.", "item.occultism.book_of_binding_bound_afrit": "Book of Binding: Afrit (Bound)", @@ -832,6 +836,8 @@ "item.occultism.book_of_binding_bound_marid.tooltip": "Can be used to summon the marid %s", "item.occultism.book_of_binding_djinni": "Book of Binding: Djinni", "item.occultism.book_of_binding_djinni.tooltip": "This book has not been bound to a djinni yet.", + "item.occultism.book_of_binding_empty": "Book of Binding: Empty", + "item.occultism.book_of_binding_empty.tooltip": "This book has not been defined to any spirit yet.", "item.occultism.book_of_binding_foliot": "Book of Binding: Foliot", "item.occultism.book_of_binding_foliot.tooltip": "This book has not been bound to a foliot yet.", "item.occultism.book_of_binding_marid": "Book of Binding: Marid", @@ -1098,6 +1104,7 @@ "item.occultism.storage_remote.tooltip": "Access a storage network remotely.", "item.occultism.storage_remote.tooltip.linked": "Bound to %s.", "item.occultism.storage_remote_inert": "Inert Storage Accessor", + "item.occultism.taboo_book": "Taboo Book", "item.occultism.tallow": "Tallow", "item.occultism.wormhole_frame": "Wormhole Frame", "itemGroup.occultism": "Occultism", diff --git a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/books_of_binding.json b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/books_of_binding.json index 611d410e1..de4821891 100644 --- a/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/books_of_binding.json +++ b/src/generated/resources/data/occultism/modonomicon/books/dictionary_of_spirits/entries/getting_started/books_of_binding.json @@ -31,6 +31,22 @@ "title1": "", "title2": "" }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "recipe_id_1": "occultism:spirit_fire/awakened_feather", + "text": "book.occultism.dictionary_of_spirits.getting_started.books_of_binding.awakened_feather_recipe.text", + "title1": "", + "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "recipe_id_1": "occultism:spirit_fire/taboo_book", + "text": "book.occultism.dictionary_of_spirits.getting_started.books_of_binding.taboo_book_recipe.text", + "title1": "", + "title2": "" + }, { "type": "modonomicon:crafting_recipe", "anchor": "", @@ -73,6 +89,22 @@ "text": "", "title1": "", "title2": "" + }, + { + "type": "occultism:spirit_fire_recipe", + "anchor": "", + "recipe_id_1": "occultism:spirit_fire/book_of_binding_empty", + "text": "book.occultism.dictionary_of_spirits.getting_started.books_of_binding.book_of_binding_empty.text", + "title1": "", + "title2": "" + }, + { + "type": "modonomicon:crafting_recipe", + "anchor": "", + "recipe_id_2": "occultism:crafting/book_of_binding_empty", + "text": "", + "title1": "", + "title2": "" } ], "parents": [ diff --git a/src/main/java/com/klikli_dev/occultism/datagen/OccultismBookProvider.java b/src/main/java/com/klikli_dev/occultism/datagen/OccultismBookProvider.java index 44681e27b..202edf517 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/OccultismBookProvider.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/OccultismBookProvider.java @@ -1010,6 +1010,26 @@ There is a type of book corresponding to each type (or tier) of spirit. In order to craft [#](%1$s)Books of Binding[#]() to summon spirits, you need purified ink. Simply drop any black dye into [](item://occultism:spirit_fire) to purify it. """.formatted(COLOR_PURPLE)); + this.context().page("awakened_feather_recipe"); + var awakenedFeatherRecipe = BookSpiritFireRecipePageModel.builder() + .withRecipeId1(this.modLoc("spirit_fire/awakened_feather")) + .withText(this.context().pageText()) + .build(); + this.lang().add(this.context().pageText(), + """ + In order to craft [#](%1$s)Books of Binding[#]() to summon spirits, you also need awakened feather. Simply drop any feather into [](item://occultism:spirit_fire) to awakened it. + """.formatted(COLOR_PURPLE)); + + this.context().page("taboo_book_recipe"); + var tabooBookRecipe = BookSpiritFireRecipePageModel.builder() + .withRecipeId1(this.modLoc("spirit_fire/taboo_book")) + .withText(this.context().pageText()) + .build(); + this.lang().add(this.context().pageText(), + """ + Lastly you need taboo book to craft [#](%1$s)Books of Binding[#]() to summon spirits. Simply drop a book into [](item://occultism:spirit_fire) to get it. + """.formatted(COLOR_PURPLE)); + this.context().page("book_of_binding_foliot_recipe"); var bookOfBindingFoliotRecipe = BookCraftingRecipePageModel.builder() .withRecipeId1(this.modLoc("crafting/book_of_binding_foliot")) @@ -1045,12 +1065,28 @@ There is a type of book corresponding to each type (or tier) of spirit. //no text this.context().page("book_of_binding_marid_recipe"); - var bookOfBindingMaritRecipe = BookCraftingRecipePageModel.builder() + var bookOfBindingMaridRecipe = BookCraftingRecipePageModel.builder() .withRecipeId1(this.modLoc("crafting/book_of_binding_marid")) .withRecipeId2(this.modLoc("crafting/book_of_binding_bound_marid")) .build(); //no text + this.context().page("book_of_binding_empty"); + var alternativeBooks = BookSpiritFireRecipePageModel.builder() + .withRecipeId1(this.modLoc("spirit_fire/book_of_binding_empty")) + .withText(this.context().pageText()) + .build(); + this.lang().add(this.context().pageText(), + """ + Alternatively, you can directly use the Binding Book: Empty instead of the previous three items. There are two ways to obtain this book. Place this book in the center of dyes to get specific book of binding. + """.formatted(COLOR_PURPLE)); + + this.context().page("book_of_binding_empty_recipe"); + var bookOfBindingEmptyRecipe = BookCraftingRecipePageModel.builder() + .withRecipeId2(this.modLoc("crafting/book_of_binding_empty")) + .build(); + //no text + return BookEntryModel.create(this.modLoc(this.context().categoryId() + "/" + this.context().entryId()), this.context().entryName()) .withDescription(this.context().entryDescription()) .withIcon(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.getId().toString()) @@ -1059,11 +1095,15 @@ There is a type of book corresponding to each type (or tier) of spirit. intro, intro2, purifiedInkRecipe, + awakenedFeatherRecipe, + tabooBookRecipe, bookOfBindingFoliotRecipe, bookOfBindingBoundFoliotRecipe, bookOfBindingDjinniRecipe, bookOfBindingAfritRecipe, - bookOfBindingMaritRecipe + bookOfBindingMaridRecipe, + alternativeBooks, + bookOfBindingEmptyRecipe ); } diff --git a/src/main/java/com/klikli_dev/occultism/datagen/lang/ENUSProvider.java b/src/main/java/com/klikli_dev/occultism/datagen/lang/ENUSProvider.java index 5d52897d5..6dfc2463a 100644 --- a/src/main/java/com/klikli_dev/occultism/datagen/lang/ENUSProvider.java +++ b/src/main/java/com/klikli_dev/occultism/datagen/lang/ENUSProvider.java @@ -82,7 +82,7 @@ public void addItemMessages() { public void addItemTooltips() { //"item\.occultism\.(.*?)\.(.*)": "(.*)", // this.add\(OccultismItems.\U\1\E.get\(\).getDescriptionId\(\) + " \2", "\3"\); - + this.add(OccultismItems.BOOK_OF_BINDING_EMPTY.get().getDescriptionId() + ".tooltip", "This book has not been defined to any spirit yet."); this.add(OccultismItems.BOOK_OF_BINDING_FOLIOT.get().getDescriptionId() + ".tooltip", "This book has not been bound to a foliot yet."); this.add(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get().getDescriptionId() + ".tooltip", "Can be used to summon the foliot %s"); this.add(OccultismItems.BOOK_OF_BINDING_DJINNI.get().getDescriptionId() + ".tooltip", "This book has not been bound to a djinni yet."); @@ -153,6 +153,9 @@ private void addItems() { this.addItem(OccultismItems.BRUSH, "Chalk Brush"); this.addItem(OccultismItems.AFRIT_ESSENCE, "Afrit Essence"); this.addItem(OccultismItems.PURIFIED_INK, "Purified Ink"); + this.addItem(OccultismItems.AWAKENED_FEATHER, "Awakened Feather"); + this.addItem(OccultismItems.TABOO_BOOK, "Taboo Book"); + this.addItem(OccultismItems.BOOK_OF_BINDING_EMPTY, "Book of Binding: Empty"); this.addItem(OccultismItems.BOOK_OF_BINDING_FOLIOT, "Book of Binding: Foliot"); this.addItem(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT, "Book of Binding: Foliot (Bound)"); this.addItem(OccultismItems.BOOK_OF_BINDING_DJINNI, "Book of Binding: Djinni"); @@ -1391,7 +1394,7 @@ private void addSummoningRitualsCategory(BookContextHelper helper) { this.add(helper.pageTitle(), "Marid Crusher"); this.add(helper.pageText(), """ - The afrit crusher is resistant to essence decay and faster and more efficient than the afrit crusher. + The marid crusher is resistant to essence decay and faster and more efficient than the afrit crusher. \\ \\ It will crush **one** ore into **six** corresponding dusts. diff --git a/src/main/java/com/klikli_dev/occultism/registry/OccultismItems.java b/src/main/java/com/klikli_dev/occultism/registry/OccultismItems.java index 1959c68f1..e2c3486f5 100644 --- a/src/main/java/com/klikli_dev/occultism/registry/OccultismItems.java +++ b/src/main/java/com/klikli_dev/occultism/registry/OccultismItems.java @@ -153,14 +153,6 @@ public class OccultismItems { () -> new Item(defaultProperties())); public static final RegistryObject LENS_FRAME = ITEMS.register("lens_frame", () -> new Item(defaultProperties())); - public static final RegistryObject PURIFIED_INK = ITEMS.register("purified_ink", - () -> new Item(defaultProperties())); - - public static final RegistryObject SPIRIT_ATTUNED_PICKAXE_HEAD = ITEMS.register("spirit_attuned_pickaxe_head", - () -> new Item(defaultProperties())); - - public static final RegistryObject MAGIC_LAMP_EMPTY = ITEMS.register("magic_lamp_empty", - () -> new Item(defaultProperties())); public static final RegistryObject STORAGE_REMOTE = ITEMS.register("storage_remote", () -> new StorageRemoteItem(defaultProperties().stacksTo(1))); @@ -185,6 +177,8 @@ public class OccultismItems { public static final RegistryObject BUTCHER_KNIFE = ITEMS.register("butcher_knife", () -> new SwordItem(Tiers.IRON, 3, -2.4F, defaultProperties())); + public static final RegistryObject SPIRIT_ATTUNED_PICKAXE_HEAD = ITEMS.register("spirit_attuned_pickaxe_head", + () -> new Item(defaultProperties())); public static final RegistryObject INFUSED_PICKAXE = ITEMS.register("infused_pickaxe", () -> new InfusedPickaxeItem(OccultismItemTier.SPIRIT_ATTUNED_GEM, 1, -2.8F, defaultProperties())); public static final RegistryObject IESNIUM_PICKAXE = ITEMS.register("iesnium_pickaxe", @@ -199,7 +193,15 @@ public class OccultismItems { public static final RegistryObject FAMILIAR_RING = ITEMS.register("familiar_ring", () -> new FamiliarRingItem(defaultProperties().stacksTo(1))); + public static final RegistryObject PURIFIED_INK = ITEMS.register("purified_ink", + () -> new Item(defaultProperties())); + public static final RegistryObject AWAKENED_FEATHER = ITEMS.register("awakened_feather", + () -> new Item(defaultProperties())); + public static final RegistryObject TABOO_BOOK = ITEMS.register("taboo_book", + () -> new Item(defaultProperties())); //Books of Binding + public static final RegistryObject BOOK_OF_BINDING_EMPTY = ITEMS.register( + "book_of_binding_empty", () -> new BookOfBindingItem(defaultProperties().stacksTo(1))); public static final RegistryObject BOOK_OF_BINDING_FOLIOT = ITEMS.register( "book_of_binding_foliot", () -> new BookOfBindingItem(defaultProperties().stacksTo(1))); public static final RegistryObject BOOK_OF_BINDING_BOUND_FOLIOT = ITEMS.register( @@ -257,6 +259,8 @@ public class OccultismItems { () -> new SpiritHealingItem(defaultProperties().food(OccultismFoods.DATURA.get()))); //Miner Spirits + public static final RegistryObject MAGIC_LAMP_EMPTY = ITEMS.register("magic_lamp_empty", + () -> new Item(defaultProperties())); public static final RegistryObject MINER_DEBUG_UNSPECIALIZED = ITEMS.register("miner_debug_unspecialized", () -> new MinerSpiritItem(defaultProperties().durability(10000), () -> 100, () -> 10, () -> 10000)); diff --git a/src/main/resources/assets/occultism/models/item/awakened_feather.json b/src/main/resources/assets/occultism/models/item/awakened_feather.json new file mode 100644 index 000000000..e6122f0f1 --- /dev/null +++ b/src/main/resources/assets/occultism/models/item/awakened_feather.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "occultism:item/awakened_feather" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/occultism/models/item/book_of_binding_empty.json b/src/main/resources/assets/occultism/models/item/book_of_binding_empty.json new file mode 100644 index 000000000..570bf9be6 --- /dev/null +++ b/src/main/resources/assets/occultism/models/item/book_of_binding_empty.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "occultism:item/book_of_binding_empty" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/occultism/models/item/taboo_book.json b/src/main/resources/assets/occultism/models/item/taboo_book.json new file mode 100644 index 000000000..10ad33353 --- /dev/null +++ b/src/main/resources/assets/occultism/models/item/taboo_book.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "occultism:item/taboo_book" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/occultism/textures/item/awakened_feather.png b/src/main/resources/assets/occultism/textures/item/awakened_feather.png new file mode 100644 index 0000000000000000000000000000000000000000..5b8fa80b1c95555680aec1a3274439ff088f5f0c GIT binary patch literal 755 zcmVEX>4Tx04R}tkv&MmKpe$iQ>7vmK|6?a$WWc^q9Tr^6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JWDYS_3;J6>}?mh0_0Ya)N&;^Mfxh}i>#<}dUz%xTeE|VY*5sT#>mV20043&76IHIT;MNRA);4}N!RmS(2iq+lHAf3fY42_Ucww41j5eQew96TtrrTxnf@y#>sFlHTlU zkt1Mu8@RacYVsa%xdV(n>5?HilAoqfDgp0j^i2g|^cEOgb9?LT-jsi6~r`9RL6T32;bRa{vGf z6951U69E94oEQKA00(qQO+^Ri3Z~WB>pF@kvBMR9M4fU>I`X(8iDdk@-y2 zFoYzHg3D#46|uj?<;te!7x$r57S7jpW#j_^tuOEWa`YrAfv+0VCl(=5@ke#WxcQd zFYA5vpJ5abm4%rGtQ;WP1-QxqlDvSe93W`G;4cTTmIp(t9DtVxBd8o0&5fhEaWprM lg3;FcXls46wLW6X1pq-Sd&6P`ImQ40002ovPDHLkV1l~;NwEL` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/item/awakened_feather.png.mcmeta b/src/main/resources/assets/occultism/textures/item/awakened_feather.png.mcmeta new file mode 100644 index 000000000..89e7ff21e --- /dev/null +++ b/src/main/resources/assets/occultism/textures/item/awakened_feather.png.mcmeta @@ -0,0 +1,23 @@ +{ + "animation": { + "interpolate": true, + "frames": [ + { + "index": 0, + "time": 10 + }, + { + "index": 1, + "time": 10 + }, + { + "index": 2, + "time": 10 + }, + { + "index": 3, + "time": 10 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/occultism/textures/item/book_of_binding_empty.png b/src/main/resources/assets/occultism/textures/item/book_of_binding_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..d170bc01ade43c42a46d045d75fd9d699cb47021 GIT binary patch literal 43774 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/occultism/textures/item/taboo_book.png b/src/main/resources/assets/occultism/textures/item/taboo_book.png new file mode 100644 index 0000000000000000000000000000000000000000..fbb73d3f6ab5dd57aa917a822af73994dbd9e768 GIT binary patch literal 5504 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 KYN?G+%)bGS#drV! literal 0 HcmV?d00001 diff --git a/src/main/resources/data/occultism/recipes/crafting/book_of_binding_afrit.json b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_afrit.json index 7cc21a25a..6862b68da 100644 --- a/src/main/resources/data/occultism/recipes/crafting/book_of_binding_afrit.json +++ b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_afrit.json @@ -1,7 +1,7 @@ { "type": "minecraft:crafting_shaped", "pattern": [ - "cp ", + "cpf", "pbp", " p " ], @@ -10,10 +10,13 @@ "tag": "forge:dyes/purple" }, "b": { - "item": "minecraft:writable_book" + "item": "occultism:taboo_book" }, "c": { "item": "occultism:purified_ink" + }, + "f": { + "item": "occultism:awakened_feather" } }, "result": { diff --git a/src/main/resources/data/occultism/recipes/crafting/book_of_binding_afrit_from_empty.json b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_afrit_from_empty.json new file mode 100644 index 000000000..65f902d64 --- /dev/null +++ b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_afrit_from_empty.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " p ", + "pbp", + " p " + ], + "key": { + "p": { + "tag": "forge:dyes/purple" + }, + "b": { + "item": "occultism:book_of_binding_empty" + } + }, + "result": { + "item": "occultism:book_of_binding_afrit" + } +} \ No newline at end of file diff --git a/src/main/resources/data/occultism/recipes/crafting/book_of_binding_djinni.json b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_djinni.json index eab384206..7eccb9083 100644 --- a/src/main/resources/data/occultism/recipes/crafting/book_of_binding_djinni.json +++ b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_djinni.json @@ -1,7 +1,7 @@ { "type": "minecraft:crafting_shaped", "pattern": [ - "cg ", + "cgf", "gbg", " g " ], @@ -10,10 +10,13 @@ "tag": "forge:dyes/green" }, "b": { - "item": "minecraft:writable_book" + "item": "occultism:taboo_book" }, "c": { "item": "occultism:purified_ink" + }, + "f": { + "item": "occultism:awakened_feather" } }, "result": { diff --git a/src/main/resources/data/occultism/recipes/crafting/book_of_binding_djinni_from_empty.json b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_djinni_from_empty.json new file mode 100644 index 000000000..fd6cbde11 --- /dev/null +++ b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_djinni_from_empty.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " g ", + "gbg", + " g " + ], + "key": { + "g": { + "tag": "forge:dyes/green" + }, + "b": { + "item": "occultism:book_of_binding_empty" + } + }, + "result": { + "item": "occultism:book_of_binding_djinni" + } +} \ No newline at end of file diff --git a/src/main/resources/data/occultism/recipes/crafting/book_of_binding_empty.json b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_empty.json new file mode 100644 index 000000000..51941db33 --- /dev/null +++ b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_empty.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "occultism:taboo_book" + }, + { + "item": "occultism:purified_ink" + }, + { + "item": "occultism:awakened_feather" + } + ], + "result": { + "item": "occultism:book_of_binding_empty" + } +} \ No newline at end of file diff --git a/src/main/resources/data/occultism/recipes/crafting/book_of_binding_foliot.json b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_foliot.json index 3cc37ee11..458d3f7ba 100644 --- a/src/main/resources/data/occultism/recipes/crafting/book_of_binding_foliot.json +++ b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_foliot.json @@ -1,7 +1,7 @@ { "type": "minecraft:crafting_shaped", "pattern": [ - "cw ", + "cwf", "wbw", " w " ], @@ -10,10 +10,13 @@ "tag": "forge:dyes/white" }, "b": { - "item": "minecraft:writable_book" + "item": "occultism:taboo_book" }, "c": { "item": "occultism:purified_ink" + }, + "f": { + "item": "occultism:awakened_feather" } }, "result": { diff --git a/src/main/resources/data/occultism/recipes/crafting/book_of_binding_foliot_from_empty.json b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_foliot_from_empty.json new file mode 100644 index 000000000..0e7517f80 --- /dev/null +++ b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_foliot_from_empty.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " w ", + "wbw", + " w " + ], + "key": { + "w": { + "tag": "forge:dyes/white" + }, + "b": { + "item": "occultism:book_of_binding_empty" + } + }, + "result": { + "item": "occultism:book_of_binding_foliot" + } +} \ No newline at end of file diff --git a/src/main/resources/data/occultism/recipes/crafting/book_of_binding_marid.json b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_marid.json index bc6c5404b..8645deaa7 100644 --- a/src/main/resources/data/occultism/recipes/crafting/book_of_binding_marid.json +++ b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_marid.json @@ -1,7 +1,7 @@ { "type": "minecraft:crafting_shaped", "pattern": [ - "co ", + "cof", "pbp", " o " ], @@ -13,10 +13,13 @@ "tag": "forge:dyes/orange" }, "b": { - "item": "minecraft:writable_book" + "item": "occultism:taboo_book" }, "c": { "item": "occultism:purified_ink" + }, + "f": { + "item": "occultism:awakened_feather" } }, "result": { diff --git a/src/main/resources/data/occultism/recipes/crafting/book_of_binding_marid_from_empty.json b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_marid_from_empty.json new file mode 100644 index 000000000..cb5129716 --- /dev/null +++ b/src/main/resources/data/occultism/recipes/crafting/book_of_binding_marid_from_empty.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " o ", + "pbp", + " o " + ], + "key": { + "p": { + "tag": "forge:dyes/purple" + }, + "o": { + "tag": "forge:dyes/orange" + }, + "b": { + "item": "occultism:book_of_binding_empty" + } + }, + "result": { + "item": "occultism:book_of_binding_marid" + } +} \ No newline at end of file diff --git a/src/main/resources/data/occultism/recipes/spirit_fire/awakened_feather.json b/src/main/resources/data/occultism/recipes/spirit_fire/awakened_feather.json new file mode 100644 index 000000000..04a387c1a --- /dev/null +++ b/src/main/resources/data/occultism/recipes/spirit_fire/awakened_feather.json @@ -0,0 +1,9 @@ +{ + "type": "occultism:spirit_fire", + "ingredient": { + "tag": "forge:feathers" + }, + "result": { + "item": "occultism:awakened_feather" + } +} \ No newline at end of file diff --git a/src/main/resources/data/occultism/recipes/spirit_fire/book_of_binding_empty.json b/src/main/resources/data/occultism/recipes/spirit_fire/book_of_binding_empty.json new file mode 100644 index 000000000..8455ecf9d --- /dev/null +++ b/src/main/resources/data/occultism/recipes/spirit_fire/book_of_binding_empty.json @@ -0,0 +1,9 @@ +{ + "type": "occultism:spirit_fire", + "ingredient": { + "item": "minecraft:writable_book" + }, + "result": { + "item": "occultism:book_of_binding_empty" + } +} \ No newline at end of file diff --git a/src/main/resources/data/occultism/recipes/spirit_fire/taboo_book.json b/src/main/resources/data/occultism/recipes/spirit_fire/taboo_book.json new file mode 100644 index 000000000..0b0f97bb4 --- /dev/null +++ b/src/main/resources/data/occultism/recipes/spirit_fire/taboo_book.json @@ -0,0 +1,9 @@ +{ + "type": "occultism:spirit_fire", + "ingredient": { + "item": "minecraft:book" + }, + "result": { + "item": "occultism:taboo_book" + } +} \ No newline at end of file